Kabul

Every coding agent at its best, side by side.

Run Claude, GPT, Gemini, Qwen and local models in parallel, each in the harness made for it, each on its own git worktree. Switch models without losing the conversation. Bring a friend into the session. Keep going from your phone.

Free and open source, MIT license. macOS 14 or later, Apple Silicon and Intel.

Drives the real agent CLIs

  • Claude Code
  • Codex
  • Antigravity
  • Gemini CLI
  • Qwen Code
  • OpenCode
  • Goose
Kabul: parallel workspaces in the sidebar, a diff with a review comment and the agent chat asking to apply an edit

Three things Kabul does differently

The right harness for every LLM

A model is only as good as the agent loop around it. Kabul runs each model in the harness built for it: Claude in Claude Code, GPT in Codex, Gemini in Antigravity or Gemini CLI, Qwen in Qwen Code, and anything else through OpenCode or Goose, over the Agent Client Protocol.

Local models are routed by family: a Qwen on LM Studio goes to Qwen Code, a gpt-oss goes to Codex. You pick the model; Kabul picks the harness, and tells you when it had to fall back.

Model picker with Claude, GPT and Gemini side by side in the same chat

Switch LLM or account in the same conversation, on the same branch

Hit a rate limit, want a second opinion, or want a cheaper model for the boring part? Pick another model in the same chat, even one from a different provider or a different account.

Kabul keeps one canonical transcript and hands off to the new agent: the latest messages and who wrote them, the tools used, the diff of the branch and your .context/ notes. Same worktree, same branch, checkpoints keep going.

  1. You

    The cart totals test fails about one run in ten. Find out why.

  2. Claude · Claude Code

    The discount is rounded before the tax, so some totals drift by a cent. Fixed in cart/totals.ts.

  3. Switched to GPT · Codex. Same branch, same conversation.
  4. You

    Write regression tests for the rounding.

  5. GPT · Codex

    Added 3 tests at the rounding edges. 14 passing.

  6. Switched to Gemini · Gemini CLI.
  7. Gemini · Gemini CLI

    Reviewed the diff: zero-quantity items skipped the discount. Covered that too.

One conversation that goes from Claude to Codex to Gemini, on the same branch

Work with a friend at the same time, and from your phone

Invite someone into a workspace as editor or observer. You both see the agent stream live, send messages into one shared queue, approve tools (the first decision wins) and type in the same terminal, with presence and authorship on every message.

The same server puts every session of your computer on your phone, and pings you when an agent needs a decision.

Two people in the same chat on iPhone and Android, with presence avatars and an approval made by the other person

The workbench around your agents

Coding agents are good enough to work on several things at once. The tools around them are not: each agent lives in its own CLI, one task per terminal, tied to the desk, and locked into one vendor's models.

In Kabul each task gets its own workspace: a git worktree on its own branch, with its own ports, terminal and chats, so ten agents can work on ten things without stepping on each other. You review the diff, leave comments for the agent, watch the checks and ship the pull request in the same window.

The Agents panel: every chat in every workspace, live, with subagents, tokens and cost.

Everything a task needs, in one window

Switch modelsFrom Claude to Codex in the same chat, on the same branch.
Menu bar popover with spend, limits per account and the agents running now
Menu barLimits and running agents at a glance.
Usage tab: spend today and this month, limit bars per account and a cost-per-day chart
UsageCost per day, limits per account, and a nudge before you hit one.
Session MCP panel: servers from Claude Code and Codex, tools and tokens per turn, and the tokens saved
MCPOne registry for every AI, and the tokens you save per turn.
Parallel workspaces on git worktrees
One task, one worktree, one branch. Ten reserved ports per workspace, setup, run and archive scripts, .env* files copied in, statuses, pins and a board view.
Chat with approvals and plan mode
Every tool call is a card: approve once, always or deny. Plan mode in every harness, native where the CLI has it and emulated where it doesn't.
Diff, pull requests and checks
Unified or split diff with line comments you send to the agent. Commit, push, open the PR, fix failing checks with their logs, merge and archive.
Checkpoints
A checkpoint before every message you send, in private git refs that never touch your branch. Restore the files to any point, or reset the chat to it.
A real terminal
One per workspace, plus full-tab terminals that start Claude Code, Codex, Gemini or OpenCode for you. Sessions survive the app on macOS.
MCP, shared and per session
Kabul reads the MCP servers you already configured in each CLI and offers them to every agent, without editing your configs. Turn them on or off per session.
Linear and GitHub
Start workspaces from Linear issues and close them from the PR. GitHub through the gh CLI, with multiple accounts. Routines run a prompt on a schedule or a PR event.
Usage, costs and limits
Tokens and cost per workspace, model, account and provider; 5-hour, weekly and monthly windows; alerts and a one-click switch to an account with room left.
Local models
Finds LM Studio, Ollama, llama.cpp, vLLM and MLX servers, shows what fits in memory and routes each family to the harness that runs it best.

Supported agents

Kabul drives the real CLIs, so you keep their behavior, their updates and your existing logins, settings and MCP servers.

What each agent supports in Kabul
AgentTalks overChat and toolsApprovalsPlan modeStopResumeSeveral accountsLocal modelsPhone
Claude Codestream-jsonConfirmedConfirmedConfirmednativeConfirmedConfirmedConfirmedConfirmedAnthropic APIConfirmednative remote control
Codexapp-serverConfirmedConfirmedConfirmednativeConfirmedConfirmedConfirmedConfirmedResponses APIPartial
Antigravitystream-jsonConfirmedConfirmedproject rulesPartialrestarts to exitPartialConfirmedConfirmedNot availableConfirmednative remote control
Gemini CLIACPConfirmedConfirmedConfirmednativeConfirmedConfirmedConfirmed¹PartialGemini-API gatewaysPartial
Qwen CodeACPConfirmedConfirmedConfirmednativeConfirmedConfirmedConfirmedConfirmedOpenAI APIPartial
OpenCodeACPConfirmedConfirmedPartialemulatedConfirmedConfirmedNot confirmed yetConfirmedOpenAI / AnthropicPartial
GooseACPConfirmedConfirmedPartialemulatedConfirmedConfirmedConfirmedConfirmedOpenAI APIPartial
CursorACPNot confirmed yetNot confirmed yetNot confirmed yetNot confirmed yetNot confirmed yetNot confirmed yetNot availableNot confirmed yet

ConfirmedPartialNot confirmed yetNot available

Confirmed means the installed CLI was run through Kabul. ¹ Isolated profiles work; signing in with a Google account through Kabul is not tested end to end yet. Any agent, and any shell, can also be followed and typed into from the phone through the live terminal mirror.

Agents and harnesses

Your sessions, in your pocket

An installable app for iOS and Android, served by your own computer over Tailscale. See what is running and what is waiting for you, approve tools, read the diff and the files, follow the live terminal, start a workspace or switch the model.

Push notifications tell you when an agent waits for a decision. iOS look on iPhone, Material 3 on Android, one codebase.

The phone app is a PWA you install from the browser. Store builds are on the roadmap.

Kabul on Android with Material 3: the session list and a chat that switched models

Up and running in a few minutes

  1. Download the .dmg and drag Kabul to Applications. You need git, tmux and the GitHub CLI: brew install git tmux gh.
  2. Install at least one agent, such as Claude Code or Codex. Kabul can also install a missing CLI for you.
  3. Sign in to your agents and GitHub in Settings › Accounts. Kabul runs each CLI's own login and never reads your tokens.
  4. Describe a task and press ↵. Kabul creates the worktree and branch and sends the message to the agent.
Read the quick start

Built for 100 workspaces and 30 agents at once

Only the visible workspace is mounted, events are batched per frame, long lists are windowed, and a concurrency limit queues agents with the focused workspace first. Measured budgets run in CI, so a regression fails the build.

Server load test (100 workspaces, 30 fake agents, 3 clients): 6.5% CPU on average, about 24 MB of memory, 0.17 ms from event to client at p95.

Methodology and full reports
Interface, production build, 100 workspaces and 30 synthetic agents
MetricBeforeNow
Switching workspace (p95)1,098 ms48 ms
CPU with 30 agents emitting100%8%
Frames per second with 30 agents9.760
Key press to frame (p95)178 ms19 ms
Opening a 2,000-message conversation1,530 ms68 ms
JS heap174 MB20 MB

Synthetic loads on one Mac; real agents emit far fewer events.

Local-first and open source

  • Your code stays on your machine. Agents talk to the providers you already pay for, with the logins you already have. Kabul never reads your tokens.
  • No server of its own and no telemetry.
  • The phone server listens only on localhost and your tailnet, never on the open internet. Devices pair with single-use QR codes and per-device keys stored in the system keychain.
  • Guests are scoped to one workspace, previews run in a sandbox and secrets never go on a command line.
  • MIT licensed. Read the code, build it yourself, fork it.
Coming soon

Kabul Cloud

Workspaces that run in the cloud, so your agents keep working with your Mac closed. Invite your team and reach every session from anywhere, without setting up Tailscale.

  • Agents keep going when your computer sleeps
  • Invite people without Tailscale
  • Built for teams

Join the waitlist

You're on the list. We'll e-mail you when Kabul Cloud opens.

How would you use it?
We only use your e-mail to tell you when Kabul Cloud is ready.

Contribute

Kabul is built in the open. Issues and pull requests are welcome.

  • Pick a first issue

    Small, well-scoped tasks to learn the codebase.

    Good first issues
  • Read the contributing guide

    Layout, commands, commits, versions and how CI works.

    CONTRIBUTING.md
  • Translate

    The app is in English and Portuguese. Every string lives in one JSON file per area, so a new language is a pull request.

    Translation files
  • Report a bug

    Tell us what happened, the version and how to reproduce it.

    Open an issue
  • Report a vulnerability

    Please report security problems privately, never in a public issue.

    SECURITY.md

Support Kabul

Kabul is free and open source. Sponsorships pay for the time that goes into it.

Not sponsoring? A star on GitHub helps too. Star on GitHub

Questions

More answers in the FAQ
Is Kabul free?

Yes, MIT licensed. You bring your own agent subscriptions or API keys (Claude, ChatGPT, Google, local models). Kabul doesn't resell or proxy model access.

Does my code leave my computer?

Only what the agents send to their providers and what gh sends to GitHub, exactly as if you ran those CLIs yourself. Kabul has no server of its own and no telemetry.

Does Kabul replace the agent CLIs?

No. It drives the real CLIs (Claude Code, Codex, Antigravity and others), so you keep their behavior, their updates and your existing logins, settings and MCP servers.

Which platforms?

macOS 14 or later (Apple Silicon and Intel) is the main platform. Windows 10 1809+ and 11 are in beta: terminal sessions don't survive closing the app yet. Linux is not packaged. The phone app runs on iOS and Android.

Do I need Tailscale?

Only for the phone, other machines and collaboration. The phone server listens on localhost and your tailnet, never on the open internet.

Can a friend see my other repositories?

No. An invite is scoped to one workspace. But an editor can run commands as your user (terminal and approvals), so only invite as editor someone you would let use your computer.

Is there a phone app in the stores?

Not yet. The phone app is a PWA you install from the browser; store builds are on the roadmap.

Is the interface in English?

Yes. The desktop app, the phone app, the menus and the notifications are in English and Portuguese (Brazil). Kabul follows the system language, and you can pick one in Settings › General › Language.