Install & Brew Formula
One command to install, one to prove the isolation is real.
Homebrew
The tap carries the CLI and its post-quantum extra.
brew install interlock/tap/cooddee
cooddee --version
pip
The post-quantum signing backend is an extra, because it pulls a native dependency that an air-gapped build may want to vendor itself.
pip install cooddee
pip install "cooddee[pqc]" # adds ML-DSA-65 run signing
Docker
The image ships the CLI and the board UI. Point it at a PostgreSQL instance and provision.
docker compose up -d
docker compose exec cooddee cooddee init
What it needs
Python 3.12 or newer, a PostgreSQL database, and git 2.20+ for worktree support. The board UI is server-rendered, so there is no Node toolchain and no build step.
At least one agent CLI or API key for whichever driver you intend to run — Claude, Codex, Gemini, or an OpenRouter key that reaches all of them.
Verify before you trust
cooddee init does not merely create the schema — it verifies that row-level security is enforced, not just declared. A board that believes it is tenant-isolated and is not is worse than one that knows it is single-tenant.
If your database role bypasses RLS (a superuser connection will), init says so rather than reporting success.
Upgrading
Upgrade the CLI, then re-run init. It is idempotent: it applies any pending schema change and re-verifies RLS rather than assuming the previous verification still holds.
brew upgrade cooddee
cooddee init # idempotent; re-verifies isolation