Kanbus

Git-backed project management for people and AI agents.

CLI Reference

This reference describes the intended Kanbus CLI for the first release. It is based on the current specification and will be kept in parity with both implementations. Rust installs kbs with identical subcommands.

Global Flags

All commands support:

Project CLI version requirement

Repositories may declare a minimum Kanbus CLI version in a root file named kanbus-version. The file contains a single line with a semantic version core (MAJOR.MINOR.PATCH), for example:

0.19.1

When present, every CLI command (except --help, --version, init, setup, and repair) compares the running CLI version against this requirement before loading project data. Git-describe suffixes on the running version (for example 0.18.3-29-g36a5204) use only the leading MAJOR.MINOR.PATCH portion. Rust builds that cannot see a kanbus-rust-* tag (shallow clones, crates.io) fall back to the Cargo package version so the running CLI remains comparable. If the running CLI is too old, the command exits with code 1 and prints an upgrade message. Missing or unreadable files are handled as follows:

Upgrade an outdated Rust CLI with:

cargo install kanbus --locked --force

Setup

kanbus init

Initialize a Kanbus project in the current git repository.

kanbus init [--local]

Flags:

Notes:

kanbus setup agents

Ensure AGENTS.md contains the Kanbus project-management section and refresh CONTRIBUTING_AGENT.md.

kanbus setup agents [--force]

Flags:

Notes:

kanbus setup ai

Store an LLM API key once per user, so compaction, right-now summaries, standup rollups, and wiki summarization work in every project without a per-project .env.

kbs setup ai [--key VALUE] [--from-stdin] [--variable NAME] [--status]

Flags:

With no flags in an interactive terminal, prompts for the key with hidden input. Works outside a project — no .kanbus.yml needed.

On success, prints: Saved OPENAI_API_KEY to ~/.kanbus.env (mode 600). A project .env or your shell environment can override it per project.

Run non-interactively with no key provided fails with: no key provided; pass --key, --from-stdin, or run interactively.

Precedence when resolving a key at runtime: shell environment, then ~/.kanbus.env, then the project .env file.

kbs setup ai is a friendlier shortcut for kbs setup env OPENAI_API_KEY (or another variable via --variable); see kanbus setup env below for the general-purpose command.

kanbus setup env

Store or inspect any environment variable in ~/.kanbus.env, machine-wide. kbs setup ai is built on this command, specialized for the LLM API key.

kbs setup env NAME [--value VALUE] [--from-stdin] [--status]

Arguments:

Flags:

Value source precedence when saving: --value, then --from-stdin (first line), then a hidden interactive prompt. Non-interactive with none of these fails with: no value provided; pass --value, --from-stdin, or run interactively.

Writes or updates the NAME=... line in ~/.kanbus.env (mode 600), preserving other lines. On success, prints: Saved NAME to ~/.kanbus.env (mode 600). A project .env or your shell environment can override it per project.

Works outside a project — no .kanbus.yml needed.

Issue CRUD

kanbus create

Create a new issue.

kanbus create <title> [options]

Options:

Example:

kanbus create "Implement OAuth2 flow" --type task --priority 1 --label auth

Example with agent metadata:

kanbus create "Agent task" --type task \
  --agent-platform "Cursor" --agent-model "Composer 2.5" --agent-name "Cloud Agent" \
  --agent-settings '{"thinking_level":"high"}'

kanbus show

Show issue details, dependencies, and comments.

kanbus show <id>

kanbus update

Update issue fields.

kanbus update <id> [options]

Options:

Note: Incomplete provenance on create and comment warns with a one-step kbs update or kbs comment update command. Those commands set agent when it is missing. Complete metadata is not replaced.

Example:

kanbus update kanbus-a1b2c3 --status in_progress --assignee "you@example.com"

kanbus close

Close an issue (shortcut for --status closed).

kanbus close <id> [--comment <text>]

With --comment, Kanbus records a normal issue comment before it attempts the close transition. If the comment is invalid, the issue is unchanged. If the comment succeeds but closing is rejected, the comment remains and the issue keeps its prior status.

kanbus delete

Delete an issue (removes the file).

kanbus delete <id>

Issue Router

The optional Issue Router dispatches labeled issue packages through the configured agent adapter (Codex or OpenCode). See the Issue Router operator guide for configuration and recovery, and the Issue Router design for exact planning, result, and lifecycle contracts.

kanbus router plan [--json]
kanbus router run --once
kanbus router run --watch
kanbus router pause
kanbus router resume
kanbus router hold --class <name>
kanbus router hold --provider-profile <name>
kanbus router unhold --class <name>
kanbus router unhold --provider-profile <name>
kanbus router status
kanbus router cancel <package-id>
kanbus router stop

plan --json prints a stable, two-space indented plan object. run requires exactly one of --once or --watch; --once processes at most the first eligible package and exits. --watch reconciles immediately, then polls router state and GitHub pull request state at router.watch_interval (default 30s). The current watcher does not subscribe to MQTT for early wake-ups.

hold and unhold require exactly one of --class <name> or --provider-profile <name>. Pause, resume, holds, and watch state are local to the current clone; their router events are published for audit, but another clone does not inherit the effective control state. stop targets the local watch process and lets its active adapter call finish before exit. The Rust executable is available as both kanbus and kbs; the Python executable is kanbus.

The router publishes event history and router-owned issue status records to refs/heads/kanbus/router-state through an isolated hidden worktree. A usable origin is needed to share that branch with other clones. Checkpoint and artifact references are recorded in router history, but the current implementation does not separately push those refs or arbitrary artifact objects to origin; see the Issue Router design for details. Router commands fail with exit code 2 and error: issue router is not configured when the project has no router: block.

Queries

kanbus list

List issues with optional filters. Uses the index daemon by default.

kanbus list [filters]

Filters:

Example:

kanbus list --status open --sort priority --limit 10
kanbus list --parent kanbus-a1b2c3
kanbus list --all

In human-readable output, every configured status that has no issues in the result gets a marker line after the issue rows, in configuration order:

T open   - open   P2 Title
T closed - closed P2 Title
Backlog: (empty)
In Progress: (empty)
Blocked: (empty)

The marker lines follow the current filters: with --type, only statuses in that type's workflow appear, and columns that have at least one listed issue get no marker line. --porcelain (machine-readable output) and beads compatibility mode never print marker lines.

kanbus standup

Generate on-demand standup reports from right-now summaries (fail-closed; no placeholder text).

kbs standup [issue-ids...] \
  [--profile meeting-script|director-brief] \
  [--window rolling|calendar] \
  [--lookback 24h|8h|1d|...] \
  [--skip-weekends|--no-skip-weekends] \
  [--rollup flat|project|tree] \
  [--json]

kanbus commit

Commit project/issues/ changes to git.

kanbus commit

Daemon

kanbus daemon-status

Report daemon status.

kanbus daemon-status

kanbus daemon-stop

Stop the daemon process.

kanbus daemon-stop

kanbus ready

List open issues with no open blockers.

kanbus ready

Blocked issues

List issues in blocked status.

kanbus list --status blocked

Searching

Full-text search across titles, descriptions, and comments.

kanbus list --search <text>

Dependencies

kanbus dep

Manage issue dependencies.

kanbus dep <id> blocked-by <target-id>
kanbus dep <id> relates-to <target-id>
kanbus dep <id> remove blocked-by <target-id>
kanbus dep <id> remove relates-to <target-id>
kanbus dep tree <id> [--depth N] [--format FORMAT]

Agent metadata

Tag create and comment with Title Case product, model, and session name (--agent-platform, --agent-model, --agent-name, or matching KANBUS_AGENT_* defaults). That is the expected path for agent provenance. Settings (--agent-settings) stay optional. If provenance is incomplete, the write still succeeds and stderr warns with a ready kbs update or kbs comment update command. Native Kanbus issue JSON stores the agent block when present; event payloads include it when present. CLI and console output omit the Agent row when metadata is absent — that is display behavior, not permission to skip tagging. Platform and model without a session name still store and display an Agent row, and still warn that provenance is incomplete.

CLI flags

Flag Field Commands
--agent-platform <name> platform create, comment, update, comment update
--agent-model <name> model create, comment, update, comment update
--agent-name <name> name create, comment, update, comment update
--agent-settings <json> settings create, comment, update, comment update

update and comment update set agent only when the issue or comment is missing complete provenance (platform, model, and name). Complete metadata is not replaced. close does not accept agent flags.

On create and comment, incomplete provenance warns on stderr with a ready kbs update or kbs comment update command. Use --no-agent-provenance to silence the warning when tagging does not apply.

Environment variables

When a flag is omitted, Kanbus reads these environment variables (flags override env):

Empty or whitespace-only environment values are ignored. Platform and model must both be present or both absent.

Product and model names

Pass Title Case product and model names on the CLI (for example Cursor, Claude Code, Composer 2.5). Do not use a separate slug or identifier as the input convention.

Kanbus stores platform lowercased with spaces replaced by underscores (for example Claude Code becomes claude_code). model is stored as you provide it. After that normalization, platform must match ^[a-z0-9_-]{1,64}$ (a storage charset check, not a product allowlist).

Preferred products (examples, not a closed enum): Cursor, Codex, Claude Code, Antigravity, Grok Bot.

Model examples (not exhaustive): Composer 2.5, GPT-5.6, Claude Sonnet 4, Grok 4.

Settings

--agent-settings and KANBUS_AGENT_SETTINGS accept a JSON object string. Recommended keys:

Other non-secret keys are accepted (for example speed, reasoning_effort). Kanbus rejects keys whose names match api_key, token, secret, password, or credential (case-insensitive). Never store credentials in agent metadata.

The serialized agent block is limited to 2 KB.

JSON shape

When present:

{
  "platform": "cursor",
  "model": "Composer 2.5",
  "name": "Cloud Agent",
  "settings": {
    "thinking_level": "high"
  }
}

Omit the agent key entirely when absent. Omit settings when empty.

Beads compatibility

In Beads compatibility mode (--beads or beads_compatibility: true), agent flags and environment defaults that would produce metadata fail with:

agent metadata requires native Kanbus issue storage

Common errors

Maintainer setup for host instructions and environment defaults: Agent Provenance.

Comments

kanbus comment

Add a comment to an issue.

kanbus comment <id> <text> [options]

Options:

When agent flags are omitted, KANBUS_AGENT_* environment variables apply.

Example:

kanbus comment kanbus-abc "Shipped fix" \
  --agent-platform "Codex" --agent-model "GPT-5.6" --agent-name "Cloud Agent"

Synchronization

kanbus github dependabot pull

Pull Dependabot alerts from GitHub Security into Kanbus.

kanbus github dependabot pull [--dry-run] [--repo <owner/repo>] [--min-severity <critical|high|medium|low>] [--state <open|fixed|dismissed|auto_dismissed>] [--parent-epic <id>]

Requires GITHUB_TOKEN or GH_TOKEN. Short alias: kanbus gh dependabot pull.

Migration

kanbus migrate

Migrate Beads issues into Kanbus.

kanbus migrate
kanbus migrate --into-existing

--into-existing imports Beads issues into an already initialized Kanbus project and is safe to re-run.

Methodologies

kanbus methodology list

List the methodologies configured in .kanbus.yml, then the built-ins that are not active.

kanbus methodology list

Each line is <marker> <name> (<source>) <title>. * marks an active methodology and - a built-in that is not active. The source is built-in or bundle <folder>.

kanbus methodology show

Print a methodology's guidance, rendered with the project's template variables.

kanbus methodology show <name>

Works for configured methodologies and for built-ins that are not active. An unknown name fails with the built-in names.

kanbus methodology run

Run a tool that a configured methodology bundle declares.

kanbus methodology run <methodology> <tool> [args...]

The tool runs from the repository root with KANBUS_METHODOLOGY_DIRECTORY set to the bundle folder. Arguments pass through unchanged, and a non-zero exit fails the command. See Methodologies.

Diagnostics

kanbus doctor

Run environment diagnostics.

kanbus doctor

Output includes an AI credentials line, e.g. ai credentials: OPENAI_API_KEY from ~/.kanbus.env, or ai credentials: OPENAI_API_KEY not set (run kbs setup ai) when no key is configured.

It also lists the active methodologies (methodologies: bdd, git-flow), fails when one cannot be loaded or rendered, and prints a warning when CONTRIBUTING_AGENT.md differs from what the configured methodologies generate.

kanbus --version

Show the Kanbus version.

kanbus --version

Wiki

kanbus wiki render

Render a wiki page with live interpolated data.

kanbus wiki render <page>
kanbus wiki render <page> --json

kanbus wiki list

List available wiki pages.

kanbus wiki list
kanbus wiki list --json
kanbus wiki list --limit 10

Search wiki pages by path, title, and body.

kanbus wiki search <query>
kanbus wiki search <query> --json
kanbus wiki search <query> --limit 5

Maintenance

kanbus validate

Validate project integrity.

kanbus validate

kanbus stats

Display project overview statistics.

kanbus stats

kanbus commit

Commit project/issues/ changes to git.

kanbus commit

Realtime Gossip + Overlay

kanbus gossip broker

Run a local UDS broker.

kanbus gossip broker [--socket <path>]

kanbus gossip watch

Watch gossip notifications and update the overlay cache.

kanbus gossip watch [--project <label>] [--transport auto|uds|mqtt] [--broker auto|off|mqtt://...|mqtts://...] [--autostart|--no-autostart] [--keepalive|--no-keepalive]
kanbus gossip watch [..] [--print]

kanbus overlay gc

Sweep overlay cache entries.

kanbus overlay gc [--project <label>] [--all]

kanbus overlay reconcile

Reconcile speculative overlay entries against canonical issue files and optionally prune converged fields.

kanbus overlay reconcile [--project <label>] [--all] [--prune] [--dry-run]

kanbus overlay install-hooks

Install git hooks to run overlay reconcile + GC after merges/checkouts.

kanbus overlay install-hooks

Complete command index

Every command and option accepted by the CLI, generated from the command definitions by tools/generate_cli_reference.py and checked in CI. The prose sections above explain behavior; this index is the exhaustive list. kbs accepts the same commands.

<!-- BEGIN GENERATED: command-index --> <!-- Generated by tools/generate_cli_reference.py; do not edit by hand. -->

kanbus bulk

Bulk issue operations.

kanbus bulk update

Update multiple issues selected by IDs and/or filters.

kanbus close

Close an issue.

kanbus comment

Add a comment to an issue.

kanbus commit

Commit board state (issues and events) to git.

kanbus console

Console-related utilities.

kanbus console close-detail

Deprecated console command.

kanbus console collapse

Deprecated console command.

kanbus console collapse-column

Deprecated console command.

kanbus console expand

Deprecated console command.

kanbus console expand-column

Deprecated console command.

kanbus console focus

Focus on an issue and its descendants in the console.

kanbus console get

Query a specific piece of console UI state.

kanbus console get focus

Print the currently focused issue ID, or 'none'.

Print the active search query, or 'none'.

kanbus console get view

Print the current view mode, or 'none'.

kanbus console maximize

Deprecated console command.

kanbus console now

Emit JSON issues for the Now panel with JIT right-now summaries.

kanbus console reload

Deprecated console command.

kanbus console restore

Deprecated console command.

kanbus console screenshot

Capture a PNG screenshot of the console board.

Set or clear the search query in the console.

kanbus console select

Deprecated console command.

kanbus console set-setting

Deprecated console command.

kanbus console snapshot

Emit a JSON snapshot for the console.

kanbus console standup

Emit a JSON standup report for the console API.

kanbus console status

Print a human-readable summary of the current console UI state.

kanbus console toggle-settings

Deprecated console command.

kanbus console unfocus

Clear the current focus filter in the console.

kanbus console view

Switch the console to a different view mode.

kanbus coordination

Manage soft coordination leases.

kanbus coordination claim

Record a durable soft claim and announce it over MQTT when available.

kanbus coordination inspect

Inspect a resource's derived soft coordination lease.

kanbus coordination publish-result

Publish an artifact reference only when its logical revision is current.

kanbus coordination release

Release the current soft lease and publish the visibility change.

kanbus coordination renew

Extend the current winning soft lease.

kanbus cost

Report LLM usage costs.

kanbus create

Create a new issue in the current project.

kanbus daemon-status

Report daemon status.

kanbus daemon-stop

Stop the daemon process.

kanbus delete

Delete an issue and its event history.

kanbus dep

Manage issue dependencies.

kanbus doctor

Run environment diagnostics for Kanbus.

kanbus edit

File edit commands mirroring the Anthropic text editor tool.

kanbus edit create

Create a new file with the given content.

kanbus edit insert

Insert text after the given line number (0 = beginning).

kanbus edit str-replace

Replace exact text in file (must match exactly one location).

kanbus edit view

View file contents or list directory.

kanbus gh

Alias for GitHub security synchronization commands.

kanbus gh dependabot

Dependabot synchronization commands.

kanbus gh dependabot pull

Pull Dependabot alerts from GitHub into Kanbus.

kanbus github

GitHub security synchronization commands.

kanbus github dependabot

Dependabot synchronization commands.

kanbus github dependabot pull

Pull Dependabot alerts from GitHub into Kanbus.

kanbus gossip

Realtime gossip commands.

kanbus gossip broker

Run a local UDS gossip broker.

kanbus gossip watch

Watch gossip notifications and update overlay cache.

kanbus hooks

Inspect and validate lifecycle hook configuration.

kanbus hooks list

List configured hooks and built-in providers.

kanbus hooks validate

Validate hook commands, IDs, and event bindings.

kanbus init

Initialize a Kanbus project in the current repository.

kanbus jira

Jira synchronization commands.

kanbus jira pull

Pull issues from Jira into Kanbus.

kanbus lifecycle

Issue lifecycle management commands.

kanbus lifecycle compact

Batch compact (summarize) issues based on lifecycle policies.

kanbus list

List issues in the current project.

kanbus localize

Move a shared issue into project-local.

kanbus methodology

Work with the methodologies configured in .kanbus.yml.

kanbus methodology list

List the configured methodologies, then the built-ins that are not active.

kanbus methodology run

Run a tool declared by a configured methodology bundle, from the repository root.

kanbus methodology show

Show the rendered guidance of a methodology.

kanbus migrate

Migrate Beads issues into Kanbus, or write a project_id with project-id.

kanbus move

Move an issue to a different issue type.

kanbus now

List recently-updated issues with right-now summaries.

kanbus overlay

Overlay cache commands.

kanbus overlay gc

Sweep overlay cache entries.

kanbus overlay install-hooks

Install git hooks to run overlay gc after git operations.

kanbus overlay reconcile

Reconcile overlay cache entries against canonical issue files.

kanbus policy

Policy management commands.

kanbus policy check

Check policies against an issue.

kanbus policy guide

Run policy guidance against an issue without enforcing blocks.

kanbus policy list

List all loaded policy files.

kanbus policy steps

List available policy steps.

kanbus policy validate

Validate all policy files for syntax errors.

kanbus promote

Promote a local issue to the shared project.

kanbus ready

List issues that are ready (not blocked).

kanbus rekey

Rename a project key and all issue IDs.

kanbus repair

Repair a broken project structure.

kanbus router

Plan, run, and control the deterministic Issue Router.

kanbus router cancel

Request cancellation for an active package and preserve its checkpoint.

kanbus router hold

Hold new starts for exactly one configured route.

kanbus router pause

Pause new router starts and persist the control event.

kanbus router plan

Show which routed packages can start and why others are deferred.

kanbus router recover

Surface an orphaned or paused agent run without losing its evidence.

kanbus router resume

Resume scheduling without changing route holds.

kanbus router run

Run one package or continuously reconcile the project board.

kanbus router status

Show scheduler state, active package count, and sorted route holds.

kanbus router stop

Stop future scheduler starts after the current package finishes.

kanbus router unhold

Release a hold for exactly one configured route.

kanbus setup

Setup utilities for Kanbus.

kanbus setup agents

Ensure AGENTS.md contains Kanbus instructions.

kanbus setup ai

Store or inspect a user-level AI credential in ~/.kanbus.env.

kanbus setup env

Store or inspect any user-level Kanbus environment value in ~/.kanbus.env.

kanbus show

Show details for an issue.

kanbus snyk

Snyk vulnerability synchronization commands.

kanbus snyk pull

Pull vulnerabilities from Snyk into Kanbus.

kanbus standup

Generate on-demand standup reports from right-now facts.

kanbus stats

Report project statistics.

kanbus summarize

Summarize an issue using AI.

kanbus update

Update an existing issue.

kanbus validate

Validate project integrity.

kanbus wiki

Manage wiki pages.

kanbus wiki check

Validate the wiki tree (alias for wiki lint).

kanbus wiki init

Create the wiki directory and a stub index page.

kanbus wiki lint

Validate wiki-internal markdown links across the wiki tree.

kanbus wiki list

List wiki pages.

kanbus wiki render

Render a wiki page.

kanbus wiki search

Search wiki pages by path, title, and body.

kanbus wiki show

Show raw wiki page source without rendering templates.