A kanban board that runs 11 agent CLIs in parallel. Claude Code, Codex, Gemini, Cursor, Copilot, Amp, OpenCode, Droid, CCR, Qwen, plus any ACP-compatible CLI. Drop a folder. Get a board. Dispatch agents on every card — at the same time, each in its own worktree. Or hit autopilot and let them split tasks, run them in parallel slots, and check their own work while you sleep.
- Kanban with five columns (Backlog → Done) plus an Inbox for
unlabeled cards. Drag to move; in GitHub mode the move is mirrored
as
status:*label edits. - Local-first issues by default — stored in SQLite. Switch to GitHub mode to drive real issues on a repo.
- 11 agent CLIs supported — Claude Code, Codex, Gemini, Cursor, Copilot, Amp, OpenCode, Droid, CCR, Qwen, plus any ACP-compatible CLI. Each run is isolated in a per-run worktree; a pre-push hook prevents agents from pushing.
- Live agent thread — every
tool_use/tool_resultstreams in. Decision prompts pop into the UI; click an option, the run continues. - Branch preview — start the worktree's dev server in one click and open a live URL.
- Promote — land an agent's worktree as a real commit, or open a draft PR (GitHub mode).
- Sentry import — auto-pull error groups onto the board for triage; one click hands the issue to an agent.
- MCP server —
kanbots-mcp-serverexposes the board over Model Context Protocol so Cursor, Claude Desktop, or anything MCP-aware can drive it.
Pick the CLI per dispatch from the New Task modal. Each one reuses
its own auth (you don't sign into kanbots — kanbots calls the CLI
that's already on your PATH).
| Provider | CLI binary | Sign-in |
|---|---|---|
| Claude Code | claude |
claude /login |
| Codex | codex |
codex login or OPENAI_API_KEY |
| Gemini | gemini |
gemini auth |
| Cursor CLI | cursor-agent |
cursor-agent login |
| GitHub Copilot CLI | gh-copilot |
gh auth login (needs Copilot subscription) |
| Amp | amp |
amp login |
| OpenCode | opencode |
opencode auth |
| Droid | droid |
droid auth (Factory account) |
| CCR (Claude Code Router) | ccr |
reuses Claude Code auth + routes to alternative models |
| Qwen Code | qwen |
qwen auth |
| Any ACP-compatible CLI | (your binary) | per CLI — kanbots speaks the Agent Client Protocol over stdio |
Install the ones you want on your PATH. You only need at least one.
npx kanbotsThat's it. On first run, the right binary downloads automatically (~80MB) from the releases page, and the app opens.
To upgrade later: npx kanbots@latest.
macOS arm64/x64 and Linux x64 are fully automated. On Windows, the npx
launcher points you at the .exe installer for v1 — see
npx-cli/README.md.
Latest binaries: releases page.
macOS — builds are currently unsigned, so Gatekeeper rejects the
.dmg on first launch with "kanbots is damaged and can't be opened".
Use the one-line install script — it grabs the right .dmg for your
architecture, clears the quarantine flag, and copies the app into
/Applications:
curl -fsSL https://kanbots.dev/install-mac.sh | bashIf you'd rather install by hand: download the .dmg, drag the app
into /Applications, then run
xattr -d com.apple.quarantine /Applications/kanbots.app once.
Linux — .AppImage (chmod +x and run) or .tar.xz.
Windows — .exe installer. SmartScreen warns on first launch —
More info → Run anyway. Like macOS, the build is unsigned.
git clone https://github.com/leodavinci1/kanbots.git
cd kanbots
pnpm install
pnpm desktop # build everything, open Electron
# or, for hot-reload:
pnpm desktop:dev # Vite + tsup --watch + electronmonYou'll need Node 20+, pnpm 10+, git, and at least one of
the supported agent CLIs on your PATH (see Supported
agents above — claude, codex, gemini,
cursor-agent, etc.). Add gh + gh auth login if you'll be
driving GitHub issues.
A workspace picker opens. Pick any folder that contains a git
repository — kanbots creates .kanbots/ (db + config + worktrees)
inside it and drops you on the board.
Full walkthrough: docs/getting-started.md.
.kanbots/
├── db.sqlite # all issues, threads, runs, providers, settings
├── config.json # workspace mode + defaults (see docs/configuration.md)
├── worktrees/ # one subdir per agent run
├── attachments/ # files dragged into chats / cards
├── mcp-runtime/ # transient MCP configs handed to claude / codex
└── promote/ # staging area when promoting a worktree to a commit
Nothing is written outside this directory or the worktrees it creates.
| Mode | Source of issues | Use it for |
|---|---|---|
local |
SQLite in .kanbots/db.sqlite |
Solo work, side projects, anywhere you don't want GitHub Issues |
github |
GitHub REST via Octokit | When the repo's issues already live on GitHub |
See docs/issues.md for auth setup and the
IssueSource contract.
- Click Dispatch on a card.
- kanbots creates
.kanbots/worktrees/issue-<n>-<runId>/, branched from the repo's default branch. - It spawns
claude -p(orcodexexec mode) against that worktree with stream-JSON output, parses every event, and forwards it to the UI. - If the agent requests a decision, the run pauses and a card pops up. You answer it; the run continues.
- When the run finishes (or you stop it), the worktree stays on disk:
- Branch preview — start its dev server.
- Promote commit — land it on your real branch.
- Open draft PR — GitHub mode only.
- Discard — remove worktree + branch.
A pre-push hook is installed in every worktree so agents can't push to remote on their own. Promotion is always an explicit user step.
Issue detail: live agent thread, decision prompt with numbered
options, run stats (model, elapsed, tokens, cost), check buttons,
worktree/branch info, and a Reply box that accepts slash commands
(/spec, /review, /split).
Details: docs/agents.md.
Autopilot turns dispatch from a one-shot click into a loop.
feature-dev— Multi-persona, parallel slots (up to 4). Round-robin through your persona roster on the parent issue; agents split into subtasks as they go. Stops on completion, stop button, or session cost budget.qa— Runs configurable check commands (typecheck/tests/lint/build/e2e), optionally starts a dev server and watches it, and dispatches fix runs against whatever fails.
Both write to autopilot_sessions so you can watch the cycle history,
see every child run, and stop the whole tree from a single button.
Details: docs/agents.md#autopilot.
| Topic | What's there |
|---|---|
| Getting started | Install, first run, picking a workspace |
| Agents | All 11 agent CLI runs, decision prompts, containment, costs, autopilot, personas |
| Providers | AI providers modal — picking the agent CLI, API key storage |
| Issues | Local mode, GitHub mode, auth, Sentry import |
| MCP server | Wiring kanbots-mcp-server into Cursor or Claude Desktop |
| Configuration | .kanbots/config.json, env vars, check command overrides |
| Architecture | Packages, IPC bridge, database, dependency graph |
| Package | Purpose |
|---|---|
@kanbots/core |
Domain types, GitHub client, IssueSource contract |
@kanbots/local-store |
SQLite schema, migrations, repos, LocalIssueSource |
@kanbots/dispatcher |
Agent runtime — spawns the configured agent CLI, parses its stream output, manages worktrees |
@kanbots/llm |
CLI adapters and provider catalogue |
@kanbots/api |
Pure handler library + agent supervisor (no HTTP server) |
@kanbots/mcp |
MCP server (kanbots-mcp-server bin) |
@kanbots/web |
React + Vite UI |
@kanbots/desktop |
Electron shell, IPC bridge, workspace picker |
MIT — see LICENSE.

