Kanban board for managing AI agent sessions
Project description
Agentic Kanban
A kanban board for managing AI agent sessions.
Each ticket is bound to an agent session (Claude Code, pi.dev) running inside its own git worktree, executed in the target repository's existing devcontainer. The active harness is selected globally in the app's settings.
Install
python:
uv tool install agentic-kanban
This will install the binary to ~/.local/bin/kanban.
docker:
SOURCE=$HOME/code
docker run -d --name kanban \
--restart unless-stopped \
-p 127.0.0.1:7474:7474 \
-p 13000-13099:13000-13099 \
-v ${DOCKER_SOCK_PATH:-/var/run/docker.sock}:/var/run/docker.sock \
-v $HOME/.claude:$HOME/.claude \
-v $HOME/.local/share/kanban:$HOME/.local/share/kanban \
-v $SOURCE:$SOURCE \
-e HOME=$HOME \
-e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \
-e KANBAN_DATA_DIR=$HOME/.local/share/kanban \
-e GH_TOKEN=$(gh auth token) \
lahmanja/kanban:latest
TIP: Set DOCKER_SOCK_PATH in your shell for rootless Docker support.
github:
Prebuilt packages are available from Github Releases.
Build
docker bake
Configuration
Kanban reads two TOML files and merges them, with user values overriding project values per key:
- Project:
<repo>/.kanban.toml— checked into the target repo, applies to every worktree of that repo. - User:
$XDG_CONFIG_HOME/kanban/config.toml(falling back to~/.config/kanban/config.toml) — your personal overrides across all repos.
Either file may be absent. Both accept the same schema:
[harness]
id = "claude-code" # default harness for new sessions
[sync]
allow_rebase = true # offer "rebase onto base" in the sync menu
allow_merge = true # offer "merge base into branch"
[merge]
allow_merge_commit = true # which strategies appear in the merge menu
allow_squash = true
allow_rebase = false
[github]
auto_move = true # move tickets when the linked PR/issue changes state
draft_column = "In Progress"
review_column = "In Review"
done_column = "Done"
closed_column = "Done"
# Extra knobs layered onto the worktree's devcontainer.json at session spawn.
# `mounts` and `run_args` append to whatever the devcontainer.json declares;
# `container_env` merges with kanban values winning.
[devcontainer]
mounts = ["type=bind,source=/tmp/ssh-agent.sock,target=/tmp/ssh-agent.sock"]
run_args = ["--cap-add=SYS_PTRACE"]
[devcontainer.container_env]
SSH_AUTH_SOCK = "/tmp/ssh-agent.sock"
# Per-task ports: associate .vscode/tasks.json labels with container ports.
# When such a task runs, kanban allocates a host port from 13000-13099 and
# runs a TCP proxy.
[[task]]
label = "Start Frontend"
container_port = 3000
[[task]]
label = "Start Backend"
container_port = 8080
[[task]] entries merge by label: a user entry with the same label replaces the project entry, and user-only labels are appended.
The user-config path can also be overridden from the CLI: kanban serve --config /path/to/config.toml (or $KANBAN_CONFIG) replaces the default $XDG_CONFIG_HOME/kanban/config.toml lookup.
API
The HTTP server (default :7474) exposes a small REST API. The endpoint most useful for scripting is ticket creation.
POST /api/boards/{id}/tickets
Path parameter {id} accepts either the numeric board id or the board slug.
Body fields:
| Field | Type | Required | Notes |
|---|---|---|---|
title |
string | yes | |
body |
string | no | Markdown ticket description. |
column_id |
integer | no | Numeric column id. Wins over column if both set. |
column |
string | no | Column name (case-insensitive) or numeric string. Defaults to the leftmost column when omitted. |
Returns 201 with the created Ticket JSON, or 400 / 404 on validation failures. SSE subscribers on /api/boards/{id}/events receive a ticket_created event.
The server has no authentication — bind only to 127.0.0.1 (the default container mapping does this).
CLI
When kanban is installed natively (e.g. go install or a release binary on $PATH), two subcommands wrap the API for shell use:
# List boards
kanban list-boards
# Create a ticket (default column = leftmost)
kanban create-ticket --board my-board --title "Investigate flaky test"
# Pick a column, attach a body, get full JSON back
kanban create-ticket \
--board my-board \
--title "Wire CI" \
--column "In Progress" \
--body "add a workflow" \
--json
Both commands take --server (default http://localhost:7474); the KANBAN_URL env var is used as a fallback.
MCP
The same binary can run as a Model Context Protocol server over stdio, exposing kanban tools to AI agents. The MCP server is a thin client of the HTTP API above, so kanban serve must be running.
kanban mcp --server http://localhost:7474
# or via env
KANBAN_URL=http://localhost:7474 kanban mcp
Tools:
create_ticket— args:board(id or slug),title, optionalbody, optionalcolumn(name or id, defaults to leftmost column).list_boards— returns[{id, name, slug}]for discovery.
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"kanban": {
"command": "/path/to/kanban",
"args": ["mcp", "--server", "http://localhost:7474"]
}
}
}
Claude Code
claude mcp add kanban -- /path/to/kanban mcp --server http://localhost:7474
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentic_kanban-0.1.4-py3-none-win_arm64.whl.
File metadata
- Download URL: agentic_kanban-0.1.4-py3-none-win_arm64.whl
- Upload date:
- Size: 7.1 MB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
248f73dfb2a899761ea9063bbe0ee2ea7e7e1da0b367aea51b04a9f8a527155b
|
|
| MD5 |
e3a1cbfe89bbb0f9da94e224330e9b15
|
|
| BLAKE2b-256 |
605e3af1a88a871a748a4688725259f522c4b83d6196acdc660d578e2b599850
|
File details
Details for the file agentic_kanban-0.1.4-py3-none-win_amd64.whl.
File metadata
- Download URL: agentic_kanban-0.1.4-py3-none-win_amd64.whl
- Upload date:
- Size: 7.7 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b88e6b7315ae6c5c2d6cd11936df7631d9d9a94b35daa3778a0a99559bf4bd5e
|
|
| MD5 |
3eb0da5e2e85d6819036ddb4dd920d4b
|
|
| BLAKE2b-256 |
f0b4ba00b513b07d60774e5bd41ca1d74f711729d4b734a76bbe778f67456bdb
|
File details
Details for the file agentic_kanban-0.1.4-py3-none-manylinux_2_17_x86_64.whl.
File metadata
- Download URL: agentic_kanban-0.1.4-py3-none-manylinux_2_17_x86_64.whl
- Upload date:
- Size: 7.6 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
759b52655c72e31be630095ff4396553c36be426ff9ab1a0db66b384fa02a55b
|
|
| MD5 |
0ea7e969cb31bfbce516fcf9d62561dc
|
|
| BLAKE2b-256 |
844eae6e8ed4f49dd3c4860598bc99e785dda6f78d920c115f7b1d19a4d4f911
|
File details
Details for the file agentic_kanban-0.1.4-py3-none-manylinux_2_17_aarch64.whl.
File metadata
- Download URL: agentic_kanban-0.1.4-py3-none-manylinux_2_17_aarch64.whl
- Upload date:
- Size: 7.0 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30ebb99ca83bb222b7ede618f8083a75608a393328e76786d5e5f9bdceef86d8
|
|
| MD5 |
fe58e362d0844eb53433cd7bad807d83
|
|
| BLAKE2b-256 |
be5acfc0f3c926a10c530a56a89b1e12551b941bad6a7b6ebd0f3726c5a99e41
|
File details
Details for the file agentic_kanban-0.1.4-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: agentic_kanban-0.1.4-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 7.3 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4de70daea6925e25415def299fb5fa49233bb615989c20ef4a9692b2adc4b560
|
|
| MD5 |
ff9f11fcd9233363657e902a189a9379
|
|
| BLAKE2b-256 |
5a22970860f38ded7975e7aa1c709f12ff98a955fc523cb325ec0ba29c777c04
|
File details
Details for the file agentic_kanban-0.1.4-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: agentic_kanban-0.1.4-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 7.7 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
759859cd1bdb072a087a57aa507a387c4710b0d584e62375bdf40b6d74241a84
|
|
| MD5 |
1fe6c79cc8a923af9033747523a9df86
|
|
| BLAKE2b-256 |
e4adb6bf0e5020b93ac294a217ff75b5e3904bcf1f9d7b6fa7a5b6941386d1eb
|
File details
Details for the file agentic_kanban-0.1.4-py3-none-any.whl.
File metadata
- Download URL: agentic_kanban-0.1.4-py3-none-any.whl
- Upload date:
- Size: 7.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.11 {"installer":{"name":"uv","version":"0.11.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e4175293049845edb9d3043f68bf162962d9e865c967c299ce725ce38425dc2
|
|
| MD5 |
1bf31c21a3a023a72de488d6e5f4db8a
|
|
| BLAKE2b-256 |
e7b6e32adb08a8c6eb1a6e62ce95e03ef7463a8cd72b84694e379d94da6ed750
|