Skip to content

kabane

A terminal issue tracker that your coding agents use too.

You keep issues on a kanban board in a terminal pane. Claude Code, Codex and Gemini CLI read, claim, comment on and close the same issues through an MCP server on your machine, and every change records who made it. It all lives in one SQLite file, ~/.kabane/kabane.db.

It’s built for one person and their agents. Team work stays in Linear or GitHub; Kabane links to those issues instead of copying them.

bun add -g kabane

Needs Bun 1.4 or later. MIT licensed. Source on GitHub

Claude Code takes an issue from the board

Example data: a made-up repo

JMYA-2 is in next, assigned to claude, with a note from Alex. Alex asks Claude Code, in the same repo, for the next kabane issue. The agent finds it and reads the description and every comment in one kabane_context call.

1 of 5
Alex’s terminal: kabane board
kabane · myapp
in progress · 1
JMYA-1 Map payment errors to messages · issue
next · 2
JMYA-3 Receipts: attach the order id to every email · task
JMYA-2 Retry a declined card once · issue
inbox · 1
JMYA-4 Copy for the retry message · task
▸ tab to ask the copilot
/ search · d done · v review · m mark · ? help
Claude Code, same repo: claude
> take the next kabane issue
kabane_list(assignee: "claude", state: "next")
JMYA-2 Retry a declined card once
kabane_context(id: "JMYA-2")
description, 1 comment from alex

Try it on one machine

$ bun add -g kabane
$ cd ~/src/myapp
$ kabane
kabane · setup
› name alex
signs what you write
agents [x] Claude Code
[x] Codex
[x] Gemini CLI
checked ones get kabane's tools
enter saves ~/.kabane/config.json
adds kabane to 3 agents
files one issue for claude
opens the board
space toggle · enter confirm · esc quit

Kabane is a Bun program, not a Node one, so install Bun first. Then run kabane inside a project. The first run asks for your name, which signs everything you write, and lists the coding agents it finds on your PATH.

Enter adds a kabane MCP server to each agent you left checked, through that agent’s own mcp add. That is the only change outside ~/.kabane. It also files a first issue for your agent: add a short tracker section to CLAUDE.md, AGENTS.md or GEMINI.md, because agents only use the tracker reliably when the project tells them to.

Open a new agent session there and say “take the next kabane issue”. You can also press A on the board to send a request to the copilot, a Claude Code, Codex or Gemini session that gets the selected issue and anything you’ve marked as context.

Getting started guide

Sync goes through a hub you host

  1. Each machineSQLite, the board, the CLI, and kabane mcp for the agents on that machine. This alone is a complete setup.
  2. Your hub, optionalA Worker on your Cloudflare account, behind Access. A Durable Object relays the append-only log; the same core serves MCP over HTTP.
  3. Everything elseYour other machines pull the log. ChatGPT and Claude.ai connect to the hub as MCP connectors.

Each machine’s database stays the source of truth, and the hub joins as one more device that has a public URL. The same core package runs in both places, on bun:sqlite locally and on Durable Object SQLite in the Worker. Setting it up is a manual runbook: the Worker, a Cloudflare Access application, a service token per agent, then each client.

Self-hosting the hub

Rough edges

  • IDs carry an old prefix

    Kabane was extracted from a planner called Jake, so IDs start with J plus the scope’s first letters (JMYA-2 in myapp). Packages and actor URIs still use its earlier name, Cabane.

  • Add the git remote before filing

    A repo with no remote is scoped by its first commit. Add a remote later and the issues filed under the old scope stop showing on that repo’s board.

  • Two machines means running a hub

    There is no hosted service. Sync needs the Cloudflare hub, on your own account and domain.

  • The copilot can’t answer permission prompts

    It runs your harness with your settings. In an ask-first permission mode its tool requests are declined, and the transcript says so.

Sources

Last checked .

Status
Released, v0.1.0. MIT licensed. kabane 0.1.0 was published to npm on Sep 28, 2026, from commit f3e1c22.
  • Kabane READMEREADME at f3e1c22

    What it is, the install command, the board and its copilot, one core on Bun and Workers, the optional hub, the earlier name Cabane.

    Unchanged since 79385d5. It describes the hub; no hub was run for this page.

  • Getting starteddocs/getting-started.md at f3e1c22

    The setup screen and what it changes, the MCP tools, the tracker rules agents follow, the rough edges.

    Setup's harness wiring was not run for this page.

  • Self-hosting the hubdocs/deploy.md at f3e1c22

    The hub's parts: the oplog relay, MCP over HTTP behind Cloudflare Access, ChatGPT and Claude.ai as connectors.

    Its local checks ran against wrangler dev on Sep 7; Access, OAuth and the browser connectors are marked manual and unverified there.

  • Kabane PRODUCT.mdPRODUCT.md at f3e1c22

    Who it's for: one person and their agents, not a team; links to Linear and GitHub issues instead of copying them.

    A statement of intent, not usage.

  • kabane 0.1.0 from npmrun Oct 2, 2026, in a throwaway KABANE_HOME

    The walkthrough's board and detail screens and its tool results, captured from that run.

    No coding agent was connected: a script sent the MCP calls as claude. The agent's prompt, edits and reply are written for the example.