CLAUDE CODE PLUGIN OPEN SOURCE
Code in stereo.
Ship with confidence.
Claude plans. A second model challenges. Codex builds. A fresh reviewer gates the diff. You decide what ships.
- Apache-2.0
- Durable Codex jobs
- Per-role model choice
The pair workflow
-
01 · PLAN
Claude drafts the plan
A contained planner explores the repository read-only.
claude:opus -
02 · CHALLENGE
A second model challenges assumptions
Adversarial review through bounded revision rounds.
claude:fable -
03 · BUILD
Codex builds in a workspace-write task
Repository checks run before the review gate.
codex:sol @ max -
04 · GATE
A fresh reviewer gates the diff
The gate runs outside the session.
claude:fable
Built with itself — planned, challenged, built, and gated with Claudex Stereo.
The reviewed plan and its findings persist across phases.
Self-review is not independent review.
A model reviewing its own plan reads its own work generously — same context, same blind spots, same assumptions. Claudex Stereo makes disagreement the default: plans are drafted by one contained model and attacked by another, and implementations pass a fresh gate, independent of the orchestrating session, before you ever look at a diff.
Review loops are bounded and visible. They consume real usage on both
sides — control time and spend with --max-plan-rounds and
--max-fix-rounds, and route any role to a different model with one flag.
See
model routing
and the
deliberate boundaries.
Plan. Challenge. Build. Gate.
/stereo:plan drafts a plan and runs a bounded adversarial review loop toward
approval. By default, /stereo:implement builds that plan behind a
session-independent review gate. /stereo:quick collapses both commands into
one for small tasks.
> /stereo:plan add rate limiting to the public API ◆ planner claude:opus — drafting (read-only)… ◆ plan-reviewer claude:fable — round 1: needs-revision · 3 findings ◆ plan-reviewer claude:fable — round 2: approve ✓ plan stored — run /stereo:implement > /stereo:implement ◆ implementer codex:sol @ max — 14 files changed ◆ host checks — tests ✓ lint ✓ typecheck ✓ ◆ implementation-reviewer claude:fable — acceptable · 0 fixes ✓ done — nothing committed; review and commit yourself
-
/stereo:reviewReview before shipping — Codex’s built-in reviewer on your tree or branch.
-
/stereo:rescueHand an investigation or a fix straight to Codex.
-
/stereo:quickFrom plan to gated diff in a single run.
-
--backgroundLong work as durable Codex jobs — check in with
/stereo:statusand reopen runs in Codex. Claude agent runs stay session-bound.
Built for real repository work.
Contained agents, durable state, and honest gates: the mechanics under the pair workflow.
-
Per-role model routing
Every role has its own configurable model — Claude, Codex, or a third-party provider.
-
Review findings persist
Review findings are stored with the plan and travel into implementation and its gate.
-
Durable background jobs
Long Codex runs survive turn boundaries, with logs and
codex resume. -
You own the commit
The pair workflow stops at the reviewed delta — committing and pushing stay yours.
-
Optional review gate
A Stop hook can review Claude’s response and block completion until issues are addressed. Turn it on with
/stereo:setup, and only while you are actively monitoring. -
Bring your own provider
Route
codex:kimi,codex:qwen,codex:deepseek, orcodex:glmthrough your own Codex configuration (Responses API); probe compatibility before implementation work.
Twelve commands, one namespace.
The pair workflow, both review styles, Codex delegation, session transfer, background jobs, and setup. Every command is documented in depth in the README.
- /stereo:plan draft and adversarially review a plan through bounded revision rounds
- /stereo:implement implement the reviewed plan behind a separately routed review gate
- /stereo:quick the whole cycle in one command for small tasks
- /stereo:review Codex’s built-in review of your working tree or branch
- /stereo:adversarial-review steerable challenge review, Claude- or Codex-routed
- /stereo:plan-state inspect the stored plan and its findings between phases
- /stereo:rescue hand an investigation or fix directly to Codex
- /stereo:transfer continue this Claude Code session inside Codex
- /stereo:status · result · cancel durable background jobs that survive turn boundaries
- /stereo:setup readiness, provider configuration, and the optional review gate
Every role is a flag.
One addressing convention. claude:* names the closed Claude Code set:
session, inherit, sonnet, opus,
haiku, fable. Everything else routes through the Codex runtime —
registry aliases, raw model ids, or qualified model@provider selections,
written here with the optional codex: prefix.
/stereo:plan <task>
/stereo:implement
Amber chips route to Claude, cyan to the Codex runtime. The codex: prefix is
optional in commands, and tool output prints resolved model ids (codex:sol
runs gpt-5.6-sol). Flags matching the defaults are omitted, so the default
selection is just the two bare commands. A Codex plan reviewer becomes the stored
implementer default, while Claude-reviewed plans fall back to codex:sol.
claude:session is not offered for the implementer — Claude writes always run
in the contained file-edit agent. Trust a third-party provider with implementation work
only after a small --plan-reviewer codex:<alias> round.
View the default model matrix
| Role | /stereo:plan + /stereo:implement | /stereo:quick |
|---|---|---|
| Planner | claude:opus |
claude:session |
| Plan reviewer | claude:fable |
claude:fable |
| Implementer | stored model, else codex:sol at max |
codex:sol at max after a Claude review;
otherwise the stored Codex plan-review model and effort
|
| Implementation reviewer | claude:fable |
claude:fable |
Aliases, prefix semantics, effort rules, and reviewer continuation live in the README’s routing primer and routing reference; third-party providers under other model providers.
FAQ
Do I need a separate Codex account?
No — the plugin uses your local Codex CLI sign-in. If you have not used Codex yet,
sign in once with a ChatGPT account or an API key; a configured custom provider and
its environment key can satisfy runtime authentication instead.
/stereo:setup checks readiness.
More →
Does it run a separate Codex runtime?
No — it delegates through the same local Codex CLI and app server you would use directly: same install, same authentication, same repository checkout. More →
Will it use my existing Codex config and API keys?
Yes — it picks up your config.toml, sign-in method, and any custom
base-URL setup unchanged.
More →
Install Claudex Stereo.
/plugin marketplace add vsladkov/claudex-stereo
/plugin install stereo@claudex-stereo
/reload-plugins
/stereo:setup
Requires Claude Code with plugin support, Node.js 24+, a signed-in
Codex CLI
or a configured custom provider — /stereo:setup checks runtime readiness,
authentication, provider configuration, sandbox state, and the review gate. The default
pipeline also needs a harness exposing named opus and
fable models. Anything OpenAI-backed counts against your Codex usage
limits. Details under
requirements.
Something not working? Run /stereo:setup first, then see
troubleshooting
— thread reservations, sandbox prerequisites, and per-role escape hatches.
A safe first run
/stereo:review --background
/stereo:status
/stereo:result
A read-only review of your current work: it runs on Codex and counts against Codex
usage, while /stereo:status and /stereo:result read local job
state and consume no model budget.