Reference

Documentation

Everything the engine does is reachable from one CLI and one server-rendered board.

Getting started

Install the CLI, provision a board, put a card on it, and drain it with real workers. init verifies that row-level security is actually enforced rather than merely declared — a check worth having, because a board that believes it is isolated and is not is the worst of both states.

Quick start

brew install interlock/tap/cooddee

cooddee init                 # provision the schema, verify RLS
cooddee add "Fix the flaky reclaim test" \
  --repo /srv/repos/my-service \
  --done-when "pytest tests -q"
cooddee board                # show the board
cooddee run --agent claude   # drain it with real workers
CommandWhat it does
initProvision the schema and verify RLS enforcement
addPlace a card on the board
authorDecompose a goal into validated cards
boardShow the board
runDrain the board with real workers
costInspect spend against the ceiling
landLand cards that passed but have not merged
reapRemove worktrees with no live claim
syncTwo-way issue-tracker synchronisation
memoryInspect the episode store
uiServe the board UI

Choosing a driver

run --agent accepts claude, codex, gemini or openrouter. The first three drive the vendor's own CLI; OpenRouter reaches 200+ models across Anthropic, OpenAI, Google, Meta and Mistral behind a single key.

Model choice per role is separate: --builder-model and --reviewer-model let a cheap model build while a stronger one reviews.

Running continuously

run --watch keeps the fleet alive across a dry board, re-checking every few seconds (--watch-poll-seconds, default 5) instead of exiting when work runs out.

The poll is a backstop rather than the mechanism: a transition made by any process — this one, the UI, another CLI — becomes visible on the next pass, with no cross-process message bus required.