{"id":50138679,"url":"https://github.com/leodavinci1/kanbots","last_synced_at":"2026-05-24T00:01:21.058Z","repository":{"id":356178712,"uuid":"1221120939","full_name":"leodavinci1/kanbots","owner":"leodavinci1","description":"Local collaboration interface for working on a kanban board where each task is either a Claude Code or Codex agent.","archived":false,"fork":false,"pushed_at":"2026-05-22T19:20:41.000Z","size":2232,"stargazers_count":70,"open_issues_count":1,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T21:55:38.198Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://kanbots.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leodavinci1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"docs/agents.md","dco":null,"cla":null},"funding":{"github":["\u003cTBD-sponsors-handle\u003e"],"open_collective":"\u003cTBD-collective-slug\u003e","custom":["https://polar.sh/\u003cTBD-polar-org\u003e"]}},"created_at":"2026-04-25T19:28:16.000Z","updated_at":"2026-05-22T21:48:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"b82e8e37-1c04-4f20-baf0-7065f9892d4b","html_url":"https://github.com/leodavinci1/kanbots","commit_stats":null,"previous_names":["leodavinci1/kanbots"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/leodavinci1/kanbots","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leodavinci1%2Fkanbots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leodavinci1%2Fkanbots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leodavinci1%2Fkanbots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leodavinci1%2Fkanbots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leodavinci1","download_url":"https://codeload.github.com/leodavinci1/kanbots/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leodavinci1%2Fkanbots/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33416315,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-24T00:00:50.538Z","updated_at":"2026-05-24T00:01:21.045Z","avatar_url":"https://github.com/leodavinci1.png","language":"TypeScript","funding_links":["https://github.com/sponsors/\u003cTBD-sponsors-handle\u003e","https://opencollective.com/\u003cTBD-collective-slug\u003e","https://polar.sh/\u003cTBD-polar-org\u003e"],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cp align=\"left\"\u003e\n  \u003cimg src=\"docs/assets/brand/kanbots-icon-256.png\" alt=\"kanbots\" width=\"96\" height=\"96\"\u003e\n\u003c/p\u003e\n\n# kanbots\n\n\u003e **A kanban board that runs Claude Code and Codex agents in parallel.**\n\u003e Drop a folder. Get a board. Dispatch agents on every card — at the\n\u003e same time, each in its own worktree. Or hit autopilot and let them\n\u003e split tasks, run them in parallel slots, and check their own work\n\u003e while you sleep.\n\n![Kanbots board overview](docs/assets/board-overview.png)\n\n## Highlights\n\n- **Kanban with five columns** (Backlog → Done) plus an Inbox for\n  unlabeled cards. Drag to move; in GitHub mode the move is mirrored\n  as `status:*` label edits.\n- **Local-first issues** by default — stored in SQLite. Switch to\n  GitHub mode to drive real issues on a repo.\n- **Claude Code or Codex agents** per run, isolated in per-run\n  worktrees. A pre-push hook prevents agents from pushing.\n- **Live agent thread** — every `tool_use`/`tool_result` streams in.\n  Decision prompts pop into the UI; click an option, the run\n  continues.\n- **Branch preview** — start the worktree's dev server in one click\n  and open a live URL.\n- **Promote** — land an agent's worktree as a real commit, or open a\n  draft PR (GitHub mode).\n- **Sentry import** — auto-pull error groups onto the board for\n  triage; one click hands the issue to an agent.\n- **MCP server** — `kanbots-mcp-server` exposes the board over Model\n  Context Protocol so Cursor, Claude Desktop, or anything MCP-aware\n  can drive it.\n\n## Getting started\n\n### Install a packaged build\n\nLatest binaries: [releases page](https://github.com/leodavinci1/kanbots/releases).\n\n**macOS** — builds are currently unsigned, so Gatekeeper rejects the\n.dmg on first launch with *\"kanbots is damaged and can't be opened\"*.\nUse the one-line install script — it grabs the right .dmg for your\narchitecture, clears the quarantine flag, and copies the app into\n`/Applications`:\n\n```sh\ncurl -fsSL https://kanbots.dev/install-mac.sh | bash\n```\n\nIf you'd rather install by hand: download the .dmg, drag the app\ninto `/Applications`, then run\n`xattr -d com.apple.quarantine /Applications/kanbots.app` once.\n\n**Linux** — `.AppImage` (`chmod +x` and run) or `.tar.xz`.\n\n**Windows** — `.exe` installer. SmartScreen warns on first launch —\n*More info → Run anyway*. Like macOS, the build is unsigned.\n\n### Or run from source\n\n```sh\ngit clone https://github.com/leodavinci1/kanbots.git\ncd kanbots\npnpm install\npnpm desktop          # build everything, open Electron\n# or, for hot-reload:\npnpm desktop:dev      # Vite + tsup --watch + electronmon\n```\n\nYou'll need **Node 20+**, **pnpm 10+**, **git**, and `claude` (the\nClaude Code CLI) on `PATH`. Sign in once with `claude /login`. Add\n`codex` on PATH if you want Codex agents, and `gh` + `gh auth login`\nif you'll be driving GitHub issues.\n\n### First run\n\nA workspace picker opens. Pick any folder that contains a git\nrepository — kanbots creates `.kanbots/` (db + config + worktrees)\ninside it and drops you on the board.\n\nFull walkthrough: [docs/getting-started.md](docs/getting-started.md).\n\n## The `.kanbots/` directory\n\n```\n.kanbots/\n├── db.sqlite        # all issues, threads, runs, providers, settings\n├── config.json      # workspace mode + defaults (see docs/configuration.md)\n├── worktrees/       # one subdir per agent run\n├── attachments/     # files dragged into chats / cards\n├── mcp-runtime/     # transient MCP configs handed to claude / codex\n└── promote/         # staging area when promoting a worktree to a commit\n```\n\nNothing is written outside this directory or the worktrees it creates.\n\n## Workspace modes\n\n| Mode | Source of issues | Use it for |\n| --- | --- | --- |\n| `local` | SQLite in `.kanbots/db.sqlite` | Solo work, side projects, anywhere you don't want GitHub Issues |\n| `github` | GitHub REST via Octokit | When the repo's issues already live on GitHub |\n\nSee [docs/issues.md](docs/issues.md) for auth setup and the\n`IssueSource` contract.\n\n## How an agent run works\n\n1. Click **Dispatch** on a card.\n2. kanbots creates `.kanbots/worktrees/issue-\u003cn\u003e-\u003crunId\u003e/`, branched\n   from the repo's default branch.\n3. It spawns `claude -p` (or `codex` exec mode) against that worktree\n   with stream-JSON output, parses every event, and forwards it to the\n   UI.\n4. If the agent requests a decision, the run pauses and a card pops\n   up. You answer it; the run continues.\n5. When the run finishes (or you stop it), the worktree stays on disk:\n   - **Branch preview** — start its dev server.\n   - **Promote commit** — land it on your real branch.\n   - **Open draft PR** — GitHub mode only.\n   - **Discard** — remove worktree + branch.\n\nA pre-push hook is installed in every worktree so agents can't push\nto remote on their own. Promotion is always an explicit user step.\n\n![Run detail with awaiting-decision prompt](docs/assets/run-detail-awaiting-decision.png)\n\n*Issue detail: live agent thread, decision prompt with numbered\noptions, run stats (model, elapsed, tokens, cost), check buttons,\nworktree/branch info, and a Reply box that accepts slash commands\n(`/spec`, `/review`, `/split`).*\n\nDetails: [docs/agents.md](docs/agents.md).\n\n## Autopilot\n\nAutopilot turns dispatch from a one-shot click into a loop.\n\n- **`feature-dev`** — Multi-persona, parallel slots (up to 4). Round-robin\n  through your persona roster on the parent issue; agents split into\n  subtasks as they go. Stops on completion, stop button, or session\n  cost budget.\n- **`qa`** — Runs configurable check commands\n  (`typecheck` / `tests` / `lint` / `build` / `e2e`), optionally\n  starts a dev server and watches it, and dispatches fix runs against\n  whatever fails.\n\nBoth write to `autopilot_sessions` so you can watch the cycle history,\nsee every child run, and stop the whole tree from a single button.\n\nDetails: [docs/agents.md#autopilot](docs/agents.md#autopilot).\n\n## Documentation\n\n| Topic | What's there |\n| --- | --- |\n| [Getting started](docs/getting-started.md) | Install, first run, picking a workspace |\n| [Agents](docs/agents.md) | Claude Code \u0026 Codex runs, decision prompts, containment, costs, autopilot, personas |\n| [Providers](docs/providers.md) | AI providers modal — picking the agent CLI, API key storage |\n| [Issues](docs/issues.md) | Local mode, GitHub mode, auth, Sentry import |\n| [MCP server](docs/mcp-server.md) | Wiring `kanbots-mcp-server` into Cursor or Claude Desktop |\n| [Configuration](docs/configuration.md) | `.kanbots/config.json`, env vars, check command overrides |\n| [Architecture](docs/architecture.md) | Packages, IPC bridge, database, dependency graph |\n\n## Packages\n\n| Package | Purpose |\n| --- | --- |\n| [`@kanbots/core`](packages/core) | Domain types, GitHub client, `IssueSource` contract |\n| [`@kanbots/local-store`](packages/local-store) | SQLite schema, migrations, repos, `LocalIssueSource` |\n| [`@kanbots/dispatcher`](packages/dispatcher) | Agent runtime — spawns Claude Code / Codex, parses stream-json, manages worktrees |\n| [`@kanbots/llm`](packages/llm) | CLI adapters and provider catalogue |\n| [`@kanbots/api`](packages/api) | Pure handler library + agent supervisor (no HTTP server) |\n| [`@kanbots/mcp`](packages/mcp) | MCP server (`kanbots-mcp-server` bin) |\n| [`@kanbots/web`](packages/web) | React + Vite UI |\n| [`@kanbots/desktop`](packages/desktop) | Electron shell, IPC bridge, workspace picker |\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleodavinci1%2Fkanbots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleodavinci1%2Fkanbots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleodavinci1%2Fkanbots/lists"}