Open-source terminal coding agent

Your models.
Your terminal.
Your call.

Kolkrabbi is an open-source AI coding agent for the terminal — a Claude Code and Codex CLI alternative. Chat, code, and agent work across several subscriptions in one session — your Claude Pro or Max, your ChatGPT Plus or Pro, your GitHub Copilot — any OpenRouter model, or a local model on Ollama. One static binary under 11 MiB, milliseconds to start, computed defaults, and your sessions kept on your machine.

A blocky purple pixel-art octopus

kolkrabbi

01 / START

No setup ceremony.

Install. Run. Add one key when Kolkrabbi asks for it.

~/terminal Installer ships with v1.3.7
  1. Install
    curl -fsSL https://kolkrabbi.francomichetti.com/install.sh | bash

    or, with Homebrew on macOS or Linux

    brew install onembyte/tap/kolk
  2. Run kolk kolk needs an API key to use OpenRouter models.
    Add one:  /key   (it asks for the key, hidden)
    Then run: kolk
    Or start locally, without a key: kolk -m ollama/qwen2.5-coder:7b
    /key
  3. Use it kolk
  4. Update /update Inside a session: fetches the latest verified release, checks its checksum, and restarts into it if you have asked for that.

    or, if you installed with Homebrew

    brew upgrade kolk
  5. Remove it kolk uninstall Lists every file it will delete, with what each one holds, and asks once.
    Keep your key and sessions for later:  kolk uninstall --keep-data

Verified release. The installer accepts only published Kolkrabbi release assets and verifies their checksum before installing.

The tap is the same bytes. Its formula is generated from the release’s own signed checksums, so brew verifies exactly what the installer does. To type the short name, trust the tap once with brew tap onembyte/tap && brew trust onembyte/tap, then brew install kolkrabbi.

02 / AGENTS

One prompt. Four agents, each in its own tree.

A replay of a real agent-mode run, in the lines kolk prints: the plan, one row per agent, the log of one of them up close, and every tree landed back into yours.

~/mathkit · agent · max
  1. ❯ /mode agent
  2. mode: agent
  3. ❯ add an MIT LICENSE, a README, stats.go with tests, and table tests for the package
  4. ◆ planning (claude-fable)…
  5. ◆ plan (4 tasks):
  6. 1. Add an MIT LICENSE [boilerplate · trivial · claude-haiku]
  7. 2. Write README.md with one example per function [edit · routine · claude-fable]
  8. 3. Add stats.go with Mean and Median, and tests [edit · routine · claude-fable]
  9. 4. Table tests for Add, Sub, Mul and Div [test · routine · claude-fable]
  10. each writer in its own tree, landed when it finishes
  11. ◆ subagent 1/4 started: Add an MIT LICENSE
  12. ◆ subagent 2/4 started: Write README.md with one example per function
  13. ◆ subagent 3/4 started: Add stats.go with Mean and Median, and tests
  14. ◆ subagent 1/4 completed: Add an MIT LICENSE
  15. ◆ subagent 4/4 started: Table tests for Add, Sub, Mul and Div
  16. ◆ subagent 2/4 completed: Write README.md with one example per function
  17. ◆ subagent 4/4 completed: Table tests for Add, Sub, Mul and Div
  18. ◆ subagent 3/4 completed: Add stats.go with Mean and Median, and tests
  19. ◆ synthesizing
  20. Four tasks landed in your tree: LICENSE, README.md, stats.go with stats_test.go, and mathkit_test.go.
  21. go test ./... passes. Nothing is staged; review it with git diff.

agents

agent [1/4] · claude-haiku · lowworking: preparing a tree of its ownworking: opening claude-haikuworking: · Write: LICENSE → okworking: landing its changesdone: completed
agent [2/4] · claude-fable · mediumworking: preparing a tree of its ownworking: opening claude-fableworking: · Bash: cat mathkit.go → okworking: · Write: README.md → okworking: landing its changesdone: completed
agent [3/4] · claude-fable · mediumworking: preparing a tree of its ownworking: opening claude-fableworking: · Write: stats.go → okworking: · Bash: go test ./...working: · Write: stats_test.go → okworking: landing its changesdone: completed
agent [4/4] · claude-fable · mediumqueued: Table tests for Add, Sub, Mul and Divworking: preparing a tree of its ownworking: opening claude-fableworking: · Bash: go test ./...working: landing its changesdone: completed

Real lines. The plan, the rows and the log are what kolk printed on for the run measured on the subscriptions page, shortened to fit. Three agents start together, the fourth the moment a slot frees; each writer edits a git worktree of its own and lands it when it finishes.

03 / THE POINT

Complexity, shipped off.

Any model

Start with a computed default. Choose another model only when you actually care.

Local memory

Sessions, checkpoints, ratings, and cost history stay local and inspectable.

Three modes

Chat for thinking, code for focused building, agent for longer work with an ordered plan, isolated subagents, and one final synthesis.

Spend where it counts

In agent mode each planned task is routed: the trivial ones to the cheapest rung your plan offers, the rest to your model, and a slot per role can pin a cheaper model to a kind of work. Your local dashboard shows what share of tokens ran below your top rung.

04 / OPINIONATED

The interface should disappear.

05 / PROVIDERS

Every provider on the map.

Lit means Kolkrabbi can reach it today. Dimmed says where the rest stand, in the words of the record: chosen, with a keyed client no live key has proven; investigating, until the access path is settled; or deferred past v1 — listed, never promised.

Dimmed is about the direct path — a first-party CLI handover or a native key of your own. Most of those models are already usable through the gateway tile above, which is the one doing the work today.

Running models on your own machine? The local-model guide covers Ollama, vLLM and any OpenAI-compatible endpoint, with a step-by-step Ollama walkthrough and how the gateway works.