Skip to main content

CLI Reference

The kl (or kanban-lite) CLI gives you full control of every board resource from the terminal. All mutations fire the same webhooks as the UI and REST API, making the CLI a first-class citizen in your automation pipelines.

  • Create, update, move, and delete cards with kl add / kl edit / kl move
  • Fuzzy and metadata-scoped search: kl list --search "meta.team: backend" --fuzzy
  • Manage columns, webhooks, settings, and storage migrations
  • --json flag for machine-readable output in scripts
  • Start the web server or MCP server with kl serve / kl mcp
Common commands
# Install
npm install -g kanban-lite

# Create and work with cards
kl add --title "Implement search" --priority high --label frontend
kl list --status todo
kl move implement-search in-progress
kl edit implement-search --assignee alice

# Start the board UI
kl serve

CLI

Manage your kanban board from the terminal using kanban-lite or the shorthand kl:

# List all cards
kl list

# List with filters
kl list --status todo --priority high

# Exact and fuzzy search
kl list --search "release meta.team: backend"
kl list --search "meta.team: backnd api plumbng" --fuzzy

# Combine fuzzy search with structured metadata filters
kl list --search "release" --fuzzy --meta sprint=Q1 --meta links.jira=PROJ-123

# Create a card
kl add --title "Implement search" --priority high --label "frontend,search"

# Create a card with actions
kl add --title "Deploy service" --actions "retry,rollback,notify"

# Create a card with attached forms
kl add --title "Investigate outage" --forms '[{"name":"incident-report"}]'

# Update form attachments or persisted per-form data
kl edit investigate-outage --forms @forms.json --form-data @form-data.json

# Show card details
kl show implement-search

# Show the currently active/open card
kl active

# Move to a different column
kl move implement-search in-progress

# Update fields
kl edit implement-search --assignee alice --due 2026-03-01

# Add actions to an existing card
kl edit deploy-service --actions "retry,rollback,notify"

# Trigger an action
kl action trigger deploy-service retry

# Submit a card form payload
kl form submit investigate-outage incident-report --data '{"severity":"high","owner":"alice"}'

# Delete a card
kl delete implement-search

# Attachments
kl attach implement-search                              # List attachments
kl attach add implement-search ./screenshot.png         # Attach a file
kl attach remove implement-search screenshot.png        # Remove attachment

# Comments
kl comment implement-search                             # List comments
kl comment add implement-search --author alice \
  --body "Looks good, needs tests"                      # Add a comment
kl comment edit implement-search c1 --body "Updated"    # Edit a comment
kl comment remove implement-search c1                   # Remove a comment

# Logs
kl log list implement-search                             # List log entries
kl log add implement-search --text "Build passed"         # Add a log entry
kl log add implement-search --text "Deployed" \
  --source ci --object '{"version":"1.0"}'               # With source and data
kl log clear implement-search                            # Clear all logs

# Board Logs
kl board-log list                                        # List board-level log entries
kl board-log add --text "Deployment complete"            # Add a board log entry
kl board-log add --text "Pipeline passed" \
  --source ci --object '{"build":"42"}'                    # With source and data
kl board-log clear                                       # Clear all board logs

# Board Actions
kl board-actions list --board default                    # List board-level actions
kl board-actions add --board default \
  --key deploy --title "Deploy to Production"            # Add/update a board action
kl board-actions fire --board default deploy             # Trigger a board action

# Boards
kl boards                                               # List boards
kl boards add --id bugs --name "Bug Tracker"            # Create a board
kl boards show bugs                                     # Show board details
kl boards remove bugs                                   # Remove an empty board
kl boards default bugs                                  # Set default board
kl transfer card-42 --from default --to bugs            # Transfer card between boards

# Target a specific board (works with most commands)
kl list --board bugs                                    # List cards in a board
kl add --title "Login bug" --board bugs                 # Create card in a board

# Manage columns
kl columns                                              # List columns
kl columns add --id testing --name Testing              # Add column
kl columns update testing --color "#ff9900"             # Update column
kl columns remove testing                               # Remove column

# Webhooks
kl webhooks                                             # List webhooks
kl webhooks add --url https://example.com/hook          # Register webhook
kl webhooks add --url https://example.com/hook \
  --events task.created,task.moved --secret mykey       # With event filter and secret
kl webhooks update wh_abc123 --active false             # Disable a webhook
kl webhooks update wh_abc123 --events task.created      # Change subscribed events
kl webhooks remove wh_abc123                            # Remove webhook

# Settings
kl settings                                             # Show current settings
kl settings update --compactMode true                   # Update a setting

# Workspace
kl pwd                                                  # Print workspace root path

# Storage providers
kl storage status                                       # Show current provider + capability status
kl storage migrate-to-sqlite --sqlite-path .kanban/kanban.db  # Migrate to SQLite
kl storage migrate-to-markdown                          # Migrate back to markdown

# Card state / unread
kl card-state status                                    # Show active card.state backend + default actor contract / availability
kl card-state status <card-id>                          # Show side-effect-free actor-scoped unread/open summary (not active-card UI state)
kl card-state read <card-id>                            # Explicitly acknowledge unread activity for the current actor
kl card-state open <card-id>                            # Acknowledge unread and persist explicit actor-scoped open-card state

# Start web server
kl serve                                                # Start on port 3000
kl serve --port 8080 --no-browser                       # Custom port, no auto-open

# Start MCP server (stdio transport for AI agent integrations)
kl mcp                                                  # Auto-detect directory
kl mcp --dir .kanban                                    # Explicit directory

# Initialize features directory
kl init

# Other
kl version                                              # Print version
kl help                                                 # Show help
kl help sdk                                             # Show SDK documentation
kl help api                                             # Show REST API documentation

Use --json for machine-readable output. Use --dir <path> to specify a custom features directory. Use --board <id> to target a specific board.

--forms accepts a JSON array of attached form descriptors, and --form-data accepts a JSON object keyed by resolved form id. Both flags also support @path/to/file.json.