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

  1. 01 · PLAN

    Claude drafts the plan

    A contained planner explores the repository read-only. claude:opus

  2. 02 · CHALLENGE

    A second model challenges assumptions

    Adversarial review through bounded revision rounds. claude:fable

  3. 03 · BUILD

    Codex builds in a workspace-write task

    Repository checks run before the review gate. codex:sol @ max

  4. 04 · GATE

    A fresh reviewer gates the diff

    The gate runs outside the session. claude:fable

You decide what ships

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.

  claude — ~/dev/api
> /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
Schematic session. Every role shown is a flag away from a different model — Claude, Codex, or a third-party provider through your own Codex configuration.

Built for real repository work.

Contained agents, durable state, and honest gates: the mechanics under the pair workflow.

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.

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.

Planner
Plan reviewer
Implementer
Implementation reviewer
> /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
Default model for each role per command
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

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.