
A Rust terminal kanban board for managing Git worktrees and OpenCode tmux sessions.
Before creating this tool, I used Agent of Empires — which is also a cool project with a similar purpose. However, I found its session management quite barebone as projects grew more complex. I was also inspired by VibeKanban. So you can think of this tool as a combination of both - managing your tasks in a kanban without leaving your favorate terminal environment.
What makes this different: I'm building this exclusively for opencode users. This lets me integrate deeply with opencode's API and offer unique features:
tmux installed and available on PATH (required)opencode installed and available on PATH (recommended for attach/resume workflows)bash
tmux -V
opencode --version
bash
npx @qrafty-ai/opencode-kanban
n to create a taskEnter on a task to attach? for built-in helpq to quit<prefix>+O for help overlay<prefix>+K to return to kanban sessionIf you start outside tmux, opencode-kanban auto-creates or auto-attaches to a tmux session named opencode-kanban.
npm install -g @qrafty-ai/opencode-kanban
yay -S opencode-kanban
# or
paru -S opencode-kanban
cargo build --release
./target/release/opencode-kanban
bash
opencode-kanban
bash
opencode-kanban --project my-project
bash
opencode-kanban --theme default
opencode-kanban --theme light
opencode-kanban --theme high-contrast
opencode-kanban --theme mono
opencode-kanban --theme custom
Each project uses its own SQLite file and board state.
n to open the new-task dialog.Enter to create.Enter on the task card to attach to its tmux/OpenCode session.h/l and select with j/k.H/J/K/L.a.A.v to toggle between detail/kanban viewCtrl-p: switch projectn: new taskEnter: attach selected taskh/j/k/l: navigate boardH/J/K/L: move taska: archive selected taskA: open archive view?: help overlayq: quitFor full, current bindings, use the in-app help overlay (?).
~/.config/opencode-kanban/settings.toml~/.local/share/opencode-kanban/*.sqliteThe app creates config/data files on demand.
Additional top-level notification settings:
notification_backend: tmux | system | both | nonenotification_display_duration_ms: 500..=30000completion_sound: none | beep (defaults to none)completion_sound_volume_percent: 0..=100 (defaults to 100; 0 skips audio init and playback)Example:
notification_backend = "both"
notification_display_duration_ms = 3000
completion_sound = "beep"
completion_sound_volume_percent = 40
Theme values live in ~/.config/opencode-kanban/settings.toml.
Top-level option:
theme: default | light | high-contrast | mono | customWhen theme = "custom", configure semantic tokens with these sections:
[custom_theme]inherit: default | light | high-contrast | mono[custom_theme.base]canvas, surface, text, text_muted, header, accent, danger[custom_theme.interactive]focus, selected_bg, selected_border, border[custom_theme.status]running, waiting, idle, dead, broken, unavailable[custom_theme.tile]repo, branch, todo[custom_theme.category]primary, secondary, tertiary, success, warning, danger[custom_theme.dialog]surface, input_bg, button_bg, button_fgExample:
theme = "custom"
[custom_theme]
inherit = "light"
[custom_theme.base]
canvas = "#E2E7EE"
surface = "#ECF1F7"
text = "#222A3A"
text_muted = "#4E596D"
header = "#2F66BF"
accent = "#0E7490"
danger = "#B02E24"
[custom_theme.interactive]
focus = "#2F66BF"
selected_bg = "#D6DFED"
selected_border = "#477ACD"
border = "#A5B2C6"
[custom_theme.status]
running = "#278449"
waiting = "#AB781A"
idle = "#5D687A"
dead = "#B02E24"
broken = "#B02E24"
unavailable = "#B02E24"
[custom_theme.tile]
repo = "#086678"
branch = "#926614"
todo = "#4E596D"
[custom_theme.category]
primary = "#2F66BF"
secondary = "#AB501F"
tertiary = "#6949AB"
success = "#278449"
warning = "#AB781A"
danger = "#B02E24"
[custom_theme.dialog]
surface = "#ECF1F7"
input_bg = "#E0E6EF"
button_bg = "#CDD8E7"
button_fg = "#FFFFFF"
#RRGGBB (hex only).tmux is required but not available:tmux -V works in the same shell.OpenCode binary not found:opencode --version works.tmux set -g mouse on.cargo test
cargo clippy -- -D warnings
cargo build --release
Release and publisher setup docs are in docs/releasing.md.
MIT
$ claude mcp add opencode-kanban \
-- python -m otcore.mcp_server <graph>