Agora

Overview
An orchestrator that puts Claude Code and Codex on the same coding task. They plan, critique each other's plans, implement and audit, and code, not a model, decides whether the result passes.
Stack
TypeScript, Node.js, Claude Code and Codex CLIs, git worktrees, Vitest, GitHub Actions; dashboard in Next.js 16 on Cloudflare Workers
What I built
- Three effort-scaled pipelines picked by a cheap triage call: fast (one agent builds, the other reviews), standard (both plan, critique, merge and ratify, then build and review) and max (both build in parallel git worktrees, then two independent audits).
- A plan-blind discovery audit: the auditor gets only the task and a throwaway checkout of the result, with no plan, no history and no sibling worktrees, and every audit is tied to the git tree hash it read.
- Deterministic adjudication: findings from the two auditors are merged only through explicit links made in cross-review, and each one is labelled cross-validated, consensus, disputed or solo.
- Every phase is a checkpoint that can be resumed, and human merge decisions, overrides included, are recorded as data.
- 187 tests, with fake agent CLIs so that all three pipelines run end to end in CI without a single API call.
- Agora Observatory, a dashboard that shows a checksummed run report and where each finding came from.
Key decisions
- Two separate gates: a conformance review checks the diff against the plan, and a discovery audit never sees the plan, because reviewers who agreed on a plan share its blind spots.
- No judge model: the verdict is computed. It approves only with zero findings and zero failures, only corroborated findings are fixed automatically, and a human still confirms the merge.
- Fail closed: a missing auditor keeps the gate on hold, and malformed agent output gets one retry while the bad file is kept for inspection.
- Measured on a real run: the plan-aware review found no blocking defects, while the plan-blind audit found six, one of them high severity. That result is why the audit now runs on a sanitized checkout.