Bicameral bicameral / Spec Compliance Layer
Star

Bicameral helps close specification gap and prevent implementation drift.

Integrated with your coding agents.

Demo video coming soon

A walkthrough of the full bicameral loop — ingest, preflight, drift, sign-off — recorded end-to-end in Claude Code.

Use Cases

Flow 1 / context capture

Record decisions from a meeting.

Paste a transcript or PRD. Bicameral logs each decision with its source quote, flags collisions with prior ones, and asks whether to ratify now or leave proposals for the next session.

Try thisPaste 5–10 lines of recent meeting notes that touch architecture or product behavior. Run /bicameral:ingest. Include a subtle contradiction with something you've decided before — see the supersession candidate fire.
claude-code · pm-session
/bicameral:ingest sprint-planning notes parsing transcript · proposing decision blocks… 8 decisions captured · cap retries at 3, graceful error · log retry failures to Sentry · severity warn · drop ZIP for non-US postal codes · refund holds via Stripe Treasury ! Collision: "retry policy" contradicts d-194 d-194 said: cap at 3 attempts (2026-03-08) new said: cap at 5 attempts (today) Ratify, supersede, or keep both?
Flow 2 / briefing

Begin to write code.

The PM's intent is carried into the engineer's session at the moment it matters — without a sync, standup, or handoff message. Preflight surfaces the relevant prior decisions before the first edit lands.

Try thisIn a fresh session, ask Claude to implement something the ledger touches. Don't mention bicameral. Watch preflight fire before the first edit.
claude-code · dev-session
implement onboarding email flow (bicameral surfaced — checking context) Send email after first login, not signup source: PM brainstorm 9:42 AM Welcome email after first invoice succeeds source: pricing review · 2026-03-08 The first-invoice rule is the load-bearing precedent. Proceeding with both…
Flow 3 / reconciliation

Commit code, surface drift.

Every commit compares bound code regions against the original decision. No CI gate. No merge block. Just a verdict the next person can act on — and a way for the PM to see what shipped without DM-ing the engineer.

Try thisModify a constant tied to a tracked decision, commit, then run any bicameral call. Watch reflected or drifted status flip on the local dashboard.
post-commit · auth-refactor
git commit -m "raise rate limit to 200 RPM" [main f4e5d6c] raise rate limit to 200 RPM 3 files changed, 87 insertions(+), 42 deletions(-) bicameral · scanning f4e5d6c · 12 tracked decisions… ✓ 9 reflected   ⚠ 3 drifted d-082 · token bucket cap 100 RPM per IP src/checkout/limiter.py:42-78 code now: 200 RPM. Decision unchanged. d-156 · session expires after 30 days src/auth/session.py:88-97 code now: 14 days. 3 decisions drifted. Review before next feature.
Flow 4 / ambient documentation

End a coding session.

When you make a decision aloud but never explicitly ingest it, session-end capture surfaces it as a proposal for the next session. The negotiation continues without a meeting.

Try thisSay "use 30 days, not 14" during a normal coding session. End the session. Open a new one and run /bicameral:history.
session-end · capture-corrections
! 3 uningested decisions found Proposal: cache TTL is 30 days, not 14 source: agent session turn 38 Proposal: skip retry on 4xx (not 5xx) source: agent session turn 51 Proposal: rate-limit per workspace, not per user source: agent session turn 64 Surfacing in next bicameral.history call.
Flow 5 / sign-off

Review what's been tracked.

Ask for history and bicameral returns the ledger grouped by feature, with reflected, drifted, pending, proposed, ratified, and superseded states. The PM's pre-meeting prep becomes a query, not a write-up.

Try thisAfter flows 1–4, run /bicameral:history. Bulk-ratify anything ready to lock in. Walk into your next sync with a one-page status, not a Slack scroll.
claude-code · pre-1on1
/bicameral:history --feature=onboarding Onboarding · 7 decisions reflected ratified d-201 · welcome email after first invoice reflected ratified d-204 · email after first login (not signup) reflected proposed d-218 · cache TTL: 30 days drifted ratified d-156 · session expires 30d → code now 14d drifted proposed d-221 · skip retry on 4xx ○ pending proposed d-225 · rate-limit per workspace — super d-082 · cap checkout 100 RPM per IP 5 unratified proposals · ratify in bulk? [Y/n]