A minimal terminal coding agent in Go. Inspired by pi-mono.
rune ships with read/write/edit/bash tools, local file search, code indexing and repo maps, read-only git/GitHub inspection, branching sessions with compaction, markdown skills, built-in specialist subagents, optional web tools, and MCP plugin support. It runs against ChatGPT Pro/Plus subscriptions via OAuth, Groq, Ollama, Runpod, and OpenRouter.
curl -fsSL https://raw.githubusercontent.com/khang859/rune/main/install.sh | shStart rune, then use /providers or /settings to choose and configure a provider:
runeProvider setup examples:
# Codex: opens a browser to auth via your ChatGPT account
rune login codex
# Groq
export GROQ_API_KEY="..."
rune --provider groq
# Ollama
ollama pull llama3.2
rune --provider ollama --model llama3.2
# Runpod
export RUNPOD_API_KEY="..."
rune --provider runpod --model openai/gpt-oss-120b
# OpenRouter
export OPENROUTER_API_KEY="..."
rune --provider openrouter --model anthropic/claude-sonnet-4.5API keys can also be stored with /settings.
The installer downloads the latest GitHub release for macOS or Linux and can be
rerun later to update rune. Set RUNE_INSTALL_DIR to install somewhere other
than ~/.local/bin.
If you have Go 1.26+ installed, you can also install or update from source:
go install github.com/khang859/rune/cmd/rune@latestLinux source builds may require X11 development headers, such as libx11-dev on
Debian/Ubuntu.
| Mode | How |
|---|---|
| Interactive | rune |
| One-shot | rune --prompt "fix the test in ./foo_test.go" |
| With attachments | rune --prompt "summarize @paper.pdf" |
| Headless smoke | rune --script script.json |
| Version | rune --version |
Reference files with @path in prompts or press @ / use /files in the TUI to
pick files. rune can inline text files and attach supported images and PDFs. See
docs/file-attachments-and-pdfs.md and docs/keybindings.md.
Type / in the editor to see all commands. Highlights:
/providers— switch provider, e.g. Codex, Groq, Ollama, Runpod, or OpenRouter/login— authenticate a provider such as Codex/settings— configure providers, API keys, web tools, subagents, and UI options/model— switch model for the active provider/thinking— toggle thinking display; Ctrl+T also toggles it/tree— jump to any point in the session/resume— pick a previous session/new,/clear,/fork,/clone— manage sessions and branches/compact— summarize history/plan— enter safe planning mode; edits and bash are disabled, and MCP tools require a read-only allowlist/approve— approve a plan and implement it in a new session/cancel-plan— clear pending plan state while staying in plan mode/skill:<name>— invoke a markdown skill/skill-creator— get guided help drafting or improving a rune skill/feature-dev— start a guided feature-development workflow with specialist subagents/subagents— list built-in and custom subagents/mcp— configure MCP servers/mcp-status— inspect MCP server/tool status/git-status— show repository status/files— pick files to attach/copy,/copy-mode— copy messages from the transcript/repomap— show/toggle the always-on code repo map (status, on, off, budget N)/reload— reload custom agents and skills/quit— exit
See docs/keybindings.md for the full key map, docs/plan-mode.md for Plan Mode details, docs/feature-dev.md for the feature workflow, and /hotkeys for in-app help.
- Skills — drop a
.mdfile into~/.rune/skills/or./.rune/skills/. Seedocs/skills.md. - Subagents — rune includes built-in specialist subagents and supports custom
Markdown agent definitions in
~/.rune/agents/or./.rune/agents/. Seedocs/subagents.md. - MCP plugins — configure MCP servers with
/mcp, therune mcpCLI, or~/.rune/mcp.json. Seedocs/mcp.md. - Project context — rune walks up from the cwd collecting
AGENTS.md.
rune mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem "$PWD"
rune mcp add-http context7 --url https://mcp.context7.com/mcp
rune mcp listSelect a provider with --provider, RUNE_PROVIDER, or /providers in the TUI.
Provider-specific models can be selected with --model, /model, or settings.
See docs/providers.md.
- Codex — authenticate with
rune login codexor/login. - Groq — set
RUNE_GROQ_API_KEYorGROQ_API_KEY, or store the key with/settings. - Ollama — run a local Ollama server and pull a model, e.g.
ollama pull llama3.2. Optional API keys are read fromRUNE_OLLAMA_API_KEYorOLLAMA_API_KEY. - Runpod — set
RUNE_RUNPOD_API_KEYorRUNPOD_API_KEY, or store the key with/settings. - OpenRouter — set
RUNE_OPENROUTER_API_KEYorOPENROUTER_API_KEY, or store the key with/settings.
Common user-facing environment variables:
| Variable | Purpose |
|---|---|
RUNE_INSTALL_DIR |
Override the installer target directory. |
RUNE_DIR |
Override the rune config/data directory. |
RUNE_PROVIDER |
Select the active provider. |
RUNE_PROVIDER_PROFILE |
Select a saved provider profile. |
RUNE_CODEX_MODEL, RUNE_GROQ_MODEL, RUNE_OLLAMA_MODEL, RUNE_RUNPOD_MODEL, RUNE_OPENROUTER_MODEL |
Override provider model defaults. |
RUNE_CODEX_ENDPOINT, RUNE_GROQ_ENDPOINT, RUNE_OLLAMA_ENDPOINT, RUNE_RUNPOD_ENDPOINT, RUNE_OPENROUTER_ENDPOINT |
Override provider endpoints. |
RUNE_OAUTH_AUTHORIZE_URL, RUNE_OAUTH_TOKEN_URL |
Override Codex OAuth endpoints. |
RUNE_GROQ_API_KEY, GROQ_API_KEY |
Groq API key. |
RUNE_OLLAMA_API_KEY, OLLAMA_API_KEY |
Ollama API key, if your endpoint requires one. |
RUNE_RUNPOD_API_KEY, RUNPOD_API_KEY |
Runpod API key. |
RUNE_OPENROUTER_API_KEY, OPENROUTER_API_KEY |
OpenRouter API key. |
RUNE_WEB_SEARCH_PROVIDER |
Select the web search provider, e.g. brave or tavily. |
RUNE_BRAVE_SEARCH_API_KEY |
Brave Search API key. |
RUNE_TAVILY_API_KEY |
Tavily API key. |
RUNE_WEB_FETCH_ALLOW_PRIVATE |
Allow web_fetch to reach private network addresses. |
RUNE_ICONS |
Choose icon mode: auto, nerd, unicode, or ascii. |
rune can optionally expose web tools to the agent:
web_search— search the web for relevant pages.web_fetch— fetch a specific HTTP(S) URL.
web_fetch is available when enabled in settings. web_search requires a configured search provider. For Brave Search or Tavily, set:
export RUNE_BRAVE_SEARCH_API_KEY="..."
# or
export RUNE_TAVILY_API_KEY="tvly-..."
export RUNE_WEB_SEARCH_PROVIDER="tavily"Or configure it interactively with /settings and paste the key into the masked popup. See docs/web.md for details and security notes.
make all # vet + fmt check + race tests + build
make test # race tests
make lint # staticcheck
make build # build binarySee docs/architecture.md.
MIT.