A second opinion for your AI coding work.
Duet runs two coding agents in alternating turns: one reviews or plans, the other implements or challenges the result. Each keeps its own conversation, and you get a saved transcript to inspect.
Run two different models through a single agent harness (CLI), such as Codex or OpenCode. You can also pair different CLIs, such as Claude Code and Codex. Gemini and Copilot are also supported. A native ZCode account can provide a read-only review peer. See examples using one CLI.
An edited replay using a public toy fixture. Demo details and evidence.
A supplied work audit describes a proposed fix that accidentally stopped hiding sensitive values. The other agent challenged it, and the first revised both the code and a test that had accepted the incorrect output.
Read the anonymized cases and their limits.
You need Python 3.9+ and at least one chosen agent CLI, installed and signed in. See Claude Code installation or Codex CLI installation. Duet uses two separate sessions, which may use the same CLI with different models. Only have Codex? Run two Codex models. For the Claude + Codex pair, run this from a Git repository:
pipx install duet-cli
duet --recipe reviewThis starts a review and fix loop with the coder in a separate Git worktree. Inspect the changes before merging; agent agreement does not prove correctness.
Already working inside an agent? Install the same Duet skill for Claude Code, Codex, OpenCode, and ZCode (requires Node.js/npm; choose Symlink):
npx skills add volkan/duet --skill duet --global \
--agent claude-code --agent codex --agent opencode --agent zcodeStart a new session. Use /duet in Claude Code, $duet in Codex, or /skill duet in ZCode.
Ask OpenCode to use the duet skill.
Installation details
cover ~/.agents/skills, prerequisites, and alternative installers. See the
OpenCode guide
for its native skill and optional command wrapper.
The ZCode guide
provides its /duet shortcut and native peer setup.
These optional native routes install the same shared Duet skill. Use one route per host.
Codex, in a terminal:
codex plugin marketplace add volkan/duet
codex plugin add duet@volkan-duetStart a new Codex session, then invoke $duet. See the Codex installation
guide
for setup and marketplace recovery.
Claude Code, inside Claude Code:
/plugin marketplace add volkan/duet
/plugin install duet@volkan-duet
/reload-plugins
Then invoke /duet:duet. See the Claude Code installation
guide.
Update the CLI and, if installed, the shared skill:
pipx upgrade duet-cli
npx skills update duet --globalIf pipx reports already at latest version despite a newer release on PyPI,
retry without pip's cache:
pipx upgrade duet-cli --pip-args="--no-cache-dir"
duet --versionStart a new agent session afterward. For uv, pip, source checkouts, or
native marketplace plugins, follow the
upgrade guide.
- Duet inside ChatGPT Work, using internal models
- Installation, recipes, and CLI reference
- Review reports and feedback · Recorded workflow demo
- Local metrics and privacy · Usage evidence
One Python file. Stdlib-only runtime; YAML support is optional. MIT licensed.
Contributing: project guidance, Codex notes, and merge checks.