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 2286ebded5 Remove openrouter backend alias
openrouter is OpenAI-compatible; just set OLLIE_OPENAI_URL to the
OpenRouter endpoint. No separate backend case needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 00:57:18 +02:00
agent Track and display token usage per request 2026-04-01 00:31:03 +02:00
backend Remove openrouter backend alias 2026-04-01 00:57:18 +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 Initial commit 2026-02-21 20:47:38 +01: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 Fix README: backends are ollama and openai only 2026-04-01 00:56:54 +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 MCP subprocess inherits only whitelisted env vars 2026-04-01 00:53:10 +02:00
mkfile Initial commit 2026-02-21 20:47:38 +01:00
ollie config json sample 2026-04-01 00:55:57 +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 (OpenAI, OpenRouter) backends, optional MCP server connections, and a skill system for domain-specific capabilities.

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