A fast, keyboard-driven kanban tool
Inspired by: lazygit
Made possible by: ratatui
- Board Management: Create, edit, and organize multiple boards
- Custom Columns: Define your own columns to match your workflow (e.g., Todo, In Progress, Blocked, Done)
- Rich Cards: Cards with metadata including priority, story points, due dates, and more
- Card Dependencies: Parent-child and blocking relationships between cards
- Keyboard-Driven: Vim-like navigation with hjkl and context-aware shortcuts
- Search: Find cards instantly with vim-style
/search - Undo / Redo: Undo (
u) and redo (U) any action - Multiple Views: Switch between flat list, grouped by column, or kanban board layout with
V - External Editor: Edit in your preferred editor (emacs, nano, vim, etc.)
- Sprint Planning: Plan, start and complete sprints
- Story Points: Assign 1-5 point estimates with color-coded display
- Sorting: Sort cards by points, priority, date, status, or position
- Filtering: Filter by sprint, status, or search results
- Card Archiving: Archive and restore tasks
- Metadata: Organize with due dates, priority levels, and timestamps
cargo install kanban-cli
kanbangit clone https://github.com/fulsomenko/kanban
cd kanban
cargo install --path crates/kanban-clinix run github:fulsomenko/kanbanFor clipboard operations (y/Y to copy branch names) to persist after exiting, you need a clipboard manager running:
- Wayland:
wl-clip-persist,cliphist,clipman, or your DE's built-in manager - X11: Most desktop environments include one by default
Without a clipboard manager, copied content is lost when the app exits (this is a Linux platform limitation, not a bug).
kanban # Launch the app
kanban myboard.json # Load a board from fileFirst time?
- Press
nto create a new board - Press
Enterto activate it - Add cards with
nand organize them - Press
xto export as JSON
nix run github:fulsomenko/kanban#kanban-mcpProvides full read/write access to your boards, cards, columns, and sprints over the Model Context Protocol for use with LLM tools like Claude Code, Cursor, etc.
export KANBAN_FILE=myboard.json # Set data file
# Boards
kanban board list
kanban board create --name "My Project"
# Cards
kanban card list --board-id <ID>
kanban card create --board-id <ID> --column-id <ID> --title "New task"
kanban card update <CARD_ID> --status done --priority high
# Sprints
kanban sprint create --board-id <ID>
kanban sprint activate <SPRINT_ID>
kanban card assign-sprint <CARD_ID> --sprint-id <SPRINT_ID>All commands output JSON. See kanban --help for full reference.
Switch between view modes with V:
- Flat List: See all cards in a simple list with details
- Grouped by Column: Cards organized under their respective columns
- Kanban Board: Classic columnar board layout for visual workflow
Tip: Press
?at any time to view the help menu with all available bindings for your current context.
Navigation
j/k- Up/down,h/l- Previous/next columnEnter- Open card
Card list
n- New card,e- Edit,r- Renamed- Archive,c- Toggle done,p- Set priorityv- Toggle selection mode,Ctrl+a- Select all
Views & Search
V- Toggle view mode,/- Searcht- Sprint filter,D- Archived cards
Undo & Other
u- Undo,U- Redoy- Copy to clipboard,H/L- Move card left/right,q- Quit
Built with Rust for speed and reliability:
crates/
βββ kanban-core β Shared traits, error handling & reusable state primitives
βββ kanban-domain β Domain models, business logic, filtering & sorting
βββ kanban-persistence β JSON storage, versioning & migrations
βββ kanban-tui β Terminal UI with ratatui
βββ kanban-cli β CLI entry point
βββ kanban-mcp β Model Context Protocol server for LLM integration
Key Design Patterns:
- Command Pattern: All mutations flow through domain commands for persistent tracking
- Immediate Saving: Changes auto-save after each action
- Format Versioning: Automatic V1βV2 migration with backup on first load
- Multi-Instance Support: Last-write-wins conflict resolution for concurrent edits
- Format: JSON-based import/export
- Automatic Migration: V1 data files are automatically upgraded to V2 format on load with backup creation
- Multi-Instance Support:
- Real-time file watching detects changes from other running instances
- Automatic reload when no local changes exist
- User prompt when local edits conflict with external changes
- Last-write-wins conflict resolution for concurrent edits
- Atomic Writes: Crash-safe write pattern (temp file β atomic rename) prevents data corruption
- External Editor: Automatically detects vim, nvim, nano, or your
$EDITORfor editing descriptions - Rich Metadata: Timestamps, priority levels, story points, custom tags
- Bounded Save Queue: Maintains a queue of up to 100 pending snapshots
- Progressive auto-save (save changes to board as you make them, not just on exit)
- Full CLI interface matching TUI operations (scriptable kanban commands)
- Card dependencies
- Configurable keybindings
- Audit log
- Multiple storage backends (.md archive, SQL, MongoDB) with pluggable architecture
- HTTP API for remote board access and programmatic control
- Collaborative features (multi-user, sync)
See CONTRIBUTING.md for development workflow, code style, and testing guidelines.
Apache 2.0 - See LICENSE.md for details
