This repository has been archived on 2026-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Levi Neely 474eb84e2d agent,backend: drop non-streaming path
Both backends already implement streaming; the non-streaming fallback
was dead code that added complexity.

- Backend interface now requires only ChatStream; the separate
  StreamingBackend interface and Chat method are removed
- Both OpenAIBackend and OllamaBackend lose their Chat methods and the
  stream=bool parameter on their internal doChat helpers
- Loop.Run is simplified: one streaming path, no streamed flag, no
  skippedCalls map, no shouldStop helper, no runStreamStep indirection
- "call" events are now emitted solely in the act phase, not in the
  stream phase, so dedup tracking is no longer needed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 20:11:10 +02:00
agent agent,backend: drop non-streaming path 2026-04-03 20:11:10 +02:00
backend agent,backend: drop non-streaming path 2026-04-03 20:11:10 +02:00
config Restore MCP server support alongside built-in execute_code 2026-04-01 00:34:09 +02:00
exec disable workspacebase tempdir for now 2026-04-03 19:37:40 +02:00
mcp MCP subprocess inherits only whitelisted env vars 2026-04-01 00:53:10 +02:00
tools Restore MCP server support alongside built-in execute_code 2026-04-01 00:34:09 +02:00
.gitignore Fix: move modelName resolution after backend creation; rename install artifact to ollie 2026-04-01 11:12:56 +02:00
ARCHITECTURE.md Initial commit 2026-02-21 20:47:38 +01:00
LICENSE Add GNU General Public License v3 2026-02-21 22:21:21 +01:00
README.md README: note anvillm dependency 2026-04-01 01:05:55 +02:00
config.json.sample config json sample 2026-04-01 00:55:57 +02:00
go.mod Add ollie/exec package: extract execute_code from anvillm-mcp 2026-03-31 22:30:19 +02:00
go.sum Add ollie/exec package: extract execute_code from anvillm-mcp 2026-03-31 22:30:19 +02:00
main.go main: fix word fusion in streamed output and remap scroll keys 2026-04-03 20:06:44 +02:00
mkfile Fix: move modelName resolution after backend creation; rename install artifact to ollie 2026-04-01 11:12:56 +02:00

README.md

Ollie

An agentic CLI built on a sandboxed execute_code tool and a common LLM backend interface. Supports local (Ollama) and OpenAI-compatible backends, optional MCP server connections, and a skill system for domain-specific capabilities.

Intended to be used with anvillm, which provides the skill system, tool scripts, and multi-agent infrastructure that ollie builds on.

Build

go build

Requires Go 1.21+.

Run

./ollie [model]

Model defaults to qwen3:8b. Override with OLLIE_MODEL or pass as the first argument:

OLLIE_BACKEND=openai ./ollie qwen/qwen3-235b-a22b

Configuration

Environment: ~/.config/ollie/env

OLLIE_BACKEND=openai           # ollama | openai (default: ollama)
OLLIE_OLLAMA_URL=              # base URL for Ollama (default: http://localhost:11434)
OLLIE_OPENAI_URL=https://openrouter.ai/api  # any OpenAI-compatible endpoint
OLLIE_OPENAI_KEY=sk-or-...
OLLIE_MODEL=qwen/qwen3-235b-a22b

Shell environment variables take precedence over the env file.

Config file: ~/.config/ollie/config.json

{
  "mcpServers": {
    "my-server": {
      "command": "my-mcp-server",
      "args": [],
      "env": {
        "API_TOKEN": "${API_TOKEN}"
      }
    }
  },
  "hooks": {
    "agentSpawn": "notify-send ollie started",
    "userPromptSubmit": "",
    "stop": ""
  }
}

MCP server env values support ${VAR} expansion from the parent environment. Only whitelisted vars are passed to the subprocess.

An alternate config path can be provided as a second argument:

./ollie qwen3:8b /path/to/config.json

UI

  • Enter — submit message
  • Ctrl+J — insert newline
  • PageUp / PageDown — scroll chat history
  • Ctrl+U / Ctrl+D — half-page scroll
  • Ctrl+C / Esc — quit

Token usage is shown after each response: [↑N ↓N tokens].

Tools

The agent has one built-in tool: execute_code. It runs shell code in a sandboxed environment and supports three invocation modes:

  • code — inline bash
  • tool + args — named tool script
  • pipe — sequence of {tool, args} steps

MCP server tools are discovered at startup and available alongside execute_code.

Skills

Skills are domain-specific tool scripts and knowledge discoverable at runtime:

{"tool": "discover_skill.sh", "args": ["keyword"]}
{"tool": "load_skill.sh",     "args": ["skill-name"]}

The agent discovers and loads relevant skills automatically at the start of each task.

License

GPLv3