Bicameral / decision continuity for software teams
Where decisions go missing in your stack

Stop arguing about
what we agreed.
Start checking
whether it shipped.

Bicameral keeps PM and engineer decisions tied to the code that implements them — so the third vendor integration doesn't re-litigate what the first two already settled. The PM and engineer are the only two who run it. Everyone else lands in the ledger via their meeting transcripts, or meets a better-prepared PM at sign-off.

Enter a URL. We'll infer the industry, crawl the page, and draw a stakeholder-by-stakeholder decision-handoff map.
Today · MCPLocal-first ledger, briefing, drift reconciliation, capture & sign-off, and a live local dashboard.
Coming · suiteHosted team server, multi-repo rollups, Slack ingest, desktop notifications, owner routing.
B2B SaaS

Where decisions go missing in your stack.

Bicameral handoff External / non-bicameral Hover any handoff for the exact PM / engineer steps
Hover any handoff to see what the PM and engineer actually do.
Honest install-time scope

The MCP is the wedge. The hosted suite extends it.

The CLI you can install today is a local-first preview of the larger Bicameral suite. The PM and engineer already get the full core loop in their terminal. The hosted suite (in build) adds the team-side surfaces — Slack ingest, desktop pings, multi-repo rollups, owner routing.

Surface
Today · MCP
Coming · hosted suite
Decision ledger
Local SurrealKV ledger, FTS, source quotes, region binding.
Hosted multi-user ledger; cross-repo rollups.
Briefing
Claude Code preflight surfaces prior decisions before edits.
Cursor, Codex, CI, web IDE integrations.
Reconciliation
Post-commit verdicts flip decisions to reflected, drifted, or pending.
Team-wide feeds, owner routing, batched approval queues.
Capture
Session-end correction capture and proposal sign-off.
Slack, email, Notion, desktop-notification capture.
Dashboard
Live local browser dashboard, SSE-pushed updates.
Hosted dashboard, per-team views, deadline reminders.
Pilot tester guide

Five flows
to break on purpose.

Mapped 1:1 to the canonical flows in issue #108. Each card includes a "Try this →" you can run on your machine.

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.

The PM is the only one who runs ingest. Compliance, partners, designers — their meetings just become durable repo memory.

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]
Places to break things

Pilot tester checklist.

Where the most subtle behavior lives — and the most likely places pilot testers find genuine bugs.

  • Ingest 3 near-duplicate decisions with subtle phrasing differences. Verify the right ones get flagged as supersession candidates.
  • Ingest a contradiction on purpose. Try keep_both. See what happens at the next preflight.
  • Make a decision mid-implementation without invoking ingest. End session. Verify Flow 4 picks it up.
  • Ingest in session A. Ratify in session B against the same ledger. Confirm cross-session continuity.
  • Bind on a feature branch, then switch to main without merging. Status should flip to drifted.
  • Commit outside a Claude Code session. Open a new session. Verify the pending verdict drains on the next tool call.
  • Ask Claude to implement something with zero prior decisions. Preflight should be silent, not noisy.
  • Trigger a collision_pending. Verify it blocks the first edit until resolved, then stops blocking.