The guide

A kata is a form you practice until it disappears.

Nine moves that humans and coding agents run against the ledger until they turn into habits. Every stop links into the documentation for exact commands and configuration.

  1. 01 Bind
  2. 02 Seed
  3. 03 Claim
  4. 04 Note
  5. 05 Coordinate
  6. 06 Close
  7. 07 Supervise
  8. 08 Sync
  9. 09 Own
  1. Bind the workspace.

    kata init writes a small, secret-free .kata.toml that binds your repo, including every clone and worktree of it, to one kata project. Issue state lives in SQLite under KATA_HOME, so your code history stays clean of tracker churn.

    kata init --with-agents also drops kata's operating contract into AGENTS.md/CLAUDE.md, and kata quickstart prints it on demand. Every agent that opens the repo already knows the form.

    Quickstart · Workspaces and projects

    bind once, resolve everywhere
    $ cd your-repo
    $ kata init --with-agents
    # .kata.toml written; commit it. clones and
    # worktrees now resolve to the same project
    $ kata quickstart
    # the agent contract, printed on demand
  2. Put the plan in the ledger.

    Work that only exists in a conversation dies with the conversation. Search before creating, then create with an idempotency key so a retried run resumes instead of duplicating.

    Structure goes in as data: children hang under a parent with --parent, ordering lives in --blocks and --blocked-by, and context rides on --related.

    Agent workflows · Concepts

    search, then create
    $ kata search "login race" --agent
    $ kata create "fix login race" \
        --body "Double-submit in Safari callback." \
        --idempotency-key "login-race-2026-05-31" \
        --agent
    OK create abc4
    $ kata create "add regression test" --parent abc4 --agent
    OK create d4ex
  3. Claim one issue. Loudly.

    In a multi-agent workspace, kata next --unowned applies the shared priority rules and returns at most one candidate. kata claim takes ownership, and fails if someone got there first. Treat the failure as a signal: run next again and take different work.

    A claim costs about 20ms end to end, so agents check and re-check constantly. The ledger stays truthful because staying truthful is cheap.

    The claim flow

    one issue, one owner
    $ kata next --unowned --agent
    OK next issue=abc4 priority=1 title="fix login race"
    $ kata claim abc4 --agent
    OK claim abc4
    # another agent's claim on abc4 now fails —
    # it runs `next` again and takes different work
  4. Write notes the next session can use.

    Before a long pause, a context compaction, or a handoff, record the decision, the partial attempt, and what remains in a comment on the issue, where the next actor will actually look.

    Planning state is native: kata schedule parks work until a date, kata deadline presses without parking, and a someday flag shelves an idea without losing it.

    Durable notes · Issue editing

    kata web UI issue detail with Markdown body, properties, recurrence, links, checklist, and comments
    An issue is a document: Markdown body, properties, links, checklist, comments. Captures use synthetic data.
  5. Fan out, then join on the event stream.

    An orchestrator, agent or human, creates child issues under a tracking parent and launches workers on their own branches. Workers claim, comment, and close against the same ledger. The orchestrator follows kata events --tail and returns the moment a sub-task closes or needs a human.

    Every mutation lands on a durable, cursor-addressable stream, so a supervisor that was away replays exactly what it missed. Session hooks keep attention truthful: the ledger knows which issues have an agent on them right now.

    Agent orchestration · Event polling

    An orchestrator fans work out into the kata ledger, worker agents claim and close issues against it, the event stream joins results back, and a human supervises the same ledger
  6. Close only what you can prove.

    Closing is a completion claim, and claims need evidence: real prose plus a commit, a test command, or typed evidence a reviewer can check later. Incomplete work gets a needs-review label and an honest comment instead of a close.

    Close each issue as its work is verified, not in a batch at the end. The daemon refuses to close a parent over open children. kata audit closes lets a reviewer replay anything that looks lazy, and kata reopen undoes it.

    Close discipline

    a close is a claim
    $ kata close abc4 --done \
        --message "Fixed the Safari double-submit; race test passes." \
        --commit 4f2a91c --test "go test ./internal/auth/..." \
        --agent
    OK close abc4
    # not actually done? don't close:
    $ kata label add abc4 needs-review --agent
    $ kata comment abc4 --body "Fix drafted; flake persists in CI." --agent
  7. Steer from the terminal or the browser.

    Everything the agents wrote is there for you to read, in the same ledger, with no export step. kata tui keeps triage in the terminal. kata ui opens the daemon's own browser workspace with projects, collections, editing, recurrences, and a relationship graph of how the work connects.

    The supervision surfaces read the same database the agents write, so there is nothing to sync and nothing to export.

    Web UI guide

    kata web UI relationship graph generated from synthetic issues, showing parents, blockers, and related work
    The relationship graph: the plan your agents built, drawn as one.
  8. Sync daemons, not keystrokes.

    Federation keeps a team of agents in sync without giving up the local loop. Each machine runs its own daemon, and agents and humans only ever talk to the daemon beside them. Spoke daemons enroll with a hub and replicate shared projects in the background, so nobody's read ever waits on the network.

    The other sharing models are just as deliberate: serve one daemon over a private network with bearer auth, mirror GitHub issues into the ledger, or run hosted behind $PORT.

    Federation · Sharing models · GitHub sync

    Two machines whose agents each work against their own local kata daemon at millisecond speed while the daemons replicate shared projects through a federation hub in the background
  9. Own the ledger outright.

    The whole record, issues, comments, events, and attribution alike, is a SQLite database under KATA_HOME on hardware you control. kata export writes it as JSONL for backup. kata import restores or merges it anywhere, no vendor in the loop.

    kata is MIT-licensed, a single Go binary, and yours. The tracker your agents depend on shouldn't live behind someone else's API key.

    Backup and restore · Data model and durability

    your data, in the open
    $ kata export --output backups/kata-20260901.jsonl
    # the full ledger as JSONL: issues, comments, events
    $ kata import --input backups/kata-20260901.jsonl \
        --target ~/.kata/restored.db
    # restored on any machine, no vendor in the loop

After the tour

Run the form until it's muscle memory.

Install kata, bind a repo, and let kata init --with-agents teach the loop to every agent that opens it. The documentation carries the exact commands, configuration, and architecture.

Expanded documentation capture