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 d60a1b9215 Add streaming support for bot output and tool execution
- backend: StreamingBackend interface + StreamEvent type
- backend/ollama: ChatStream with line-by-line JSON-LD decoder
- backend/openai: ChatStream with SSE delta parser + tool arg accumulation
- agent/loop: runStreamStep reads deltas, emits OutputMsg per chunk,
  deduplicates call/tool display between stream and outer loop
- main: agentMsg tea type streams incremental updates to the TUI;
  plain string buf replaces strings.Builder (avoids copy-by-value panic);
  drainAgent cancels in-flight goroutines cleanly on user interrupt
2026-04-01 12:52:58 +02:00
agent Add streaming support for bot output and tool execution 2026-04-01 12:52:58 +02:00
backend Add streaming support for bot output and tool execution 2026-04-01 12:52:58 +02:00
config Restore MCP server support alongside built-in execute_code 2026-04-01 00:34:09 +02:00
exec Add ollie/exec package: extract execute_code from anvillm-mcp 2026-03-31 22:30:19 +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 Add streaming support for bot output and tool execution 2026-04-01 12:52:58 +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