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 4d4c1708e6 main: replace bubbletea TUI with goq readline + splitInput
Drop charmbracelet/bubbletea, bubbles, and lipgloss. Replace the full-screen
Elm-architecture TUI with goq's readline-based approach:

- go-multiline-ny for readline input with history and bracketed paste
- splitInput persistent bottom band during agent turns (pulse separator,
  queue display, Ctrl-U/W/Backspace, /queued pop/clear)
- Signal handling: Ctrl-C cancels the current turn; double-Ctrl-C exits
- Plain text agent output (no ANSI formatting yet)
- All existing slash commands preserved; /queued integrated

New files: splitinput.go, splitinput_windows.go, bracketed_paste.go,
rerender_input.go, queued_commands.go, signals.go, signals_unix.go,
signals_windows.go

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 23:42:47 +02:00
agent agent: fix stall state always firing on normal text responses 2026-04-07 10:51:10 +02:00
agents prompt,agents: move proactive exploration to system prompt; agent prompts use-case only 2026-04-06 21:38:15 +02:00
backend agent: reduce repetition and blind writes with dedup caches and range tracking 2026-04-06 21:29:20 +02:00
config agent: reduce repetition and blind writes with dedup caches and range tracking 2026-04-06 21:29:20 +02:00
exec fix interrupt handling: propagate context to subprocess tree 2026-04-04 18:18:02 +02:00
mcp mcp,tools,main: shut down MCP servers on agent switch 2026-04-06 20:36:20 +02:00
tools mcp,tools,main: shut down MCP servers on agent switch 2026-04-06 20:36:20 +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
bracketed_paste.go main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
go.mod main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
go.sum main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
main.go main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
main_test.go main: simplify file_read — full-file read with path caching 2026-04-07 18:21:11 +02:00
mkfile agent installation; OLLIE_DEFAULT_AGENT 2026-04-04 12:01:57 +02:00
queued_commands.go main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
rerender_input.go main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
signals.go main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
signals_unix.go main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
signals_windows.go main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
splitinput.go main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +02:00
splitinput_windows.go main: replace bubbletea TUI with goq readline + splitInput 2026-04-08 23:42:47 +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