Getting Started

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