Imported from Gabriel-Dalton/claude-codex-orchestrator (
AGENTS.md). Install upstream withnpx skills add Gabriel-Dalton/claude-codex-orchestrator. Copyright stays with the author.
Claude Codex Orchestrator
A small command line tool and a Claude Code skill that let one Claude Code session direct several Codex agents running in Orca terminals: launch them, know which model each one has, know when each is done, and stop them. Claude Code briefs and checks; Codex does the work.
This repository is public. Nothing private goes in it.
Rules that do not bend
- No real people, clients, companies, repositories, email addresses, account names or local user paths anywhere: code, tests, docs, examples, commit messages. Examples use
~/code/example-app,example.comand invented names. - No secrets, tokens or usage data from a real account.
- Python 3.11 or newer, standard library only. No dependencies, no package installs.
- Never close, send to or otherwise touch an Orca terminal the tool did not launch itself, unless the person passes an explicit flag naming it.
- Do not commit or push. The reviewer does that.
What the tool must get right
These come from real failures. Each has a test.
- No duplicates. After Orca restarts it restores old terminals, and they keep working. Launching again gives two agents on one job.
launchlists live terminals first and refuses when one already exists for that folder. - Done is detected, not assumed. Orca does not tell the caller when a Codex turn ends.
waitwatches for a chosen signal: a report file appearing, a pull request opening for a branch, or the terminal going idle. It also ends, with a different exit code, when Orca is gone or the time runs out. - Orca can die. Every command says so plainly when Orca is not running.
doctorcan start it withorca open, which returns at once and leaves the app up. - Folders Orca does not know. A git worktree Orca has not registered makes
terminal createtime out.launchfalls back to the nearest registered repository and startscodex -C <folder>. - The prompt may not have been submitted.
terminal send --entersometimes reports that no turn start was observed.launchreads the screen afterwards and confirms the agent is working; if the text is still sitting in the draft it presses Enter once more. A trust prompt for a new folder is accepted first. - The model fits the job. Three tiers map to a model and an effort in one config file.
launchtakes a tier and prints the model it chose. - One short prompt, one task file. Long instructions live in a task file in the target folder. The prompt sent to the agent is one line that points at it.
Layout
cco/: the package.orca.pyis the only module that knows Orca's command line;codex.pythe only one that knows Codex's screen; everything else goes through them.tests/:unittest, run withpython -m unittest. A fakeorcascript stands in for the real one, so the tests need neither Orca nor Codex.skill/SKILL.md: the playbook for Claude Code.templates/: task file templates.docs/:lessons.mdandorca-cli.md.tasks/: task files for agents working on this repository. Each task writes a short report next to itself.
Writing
Plain sentences. No em dashes. No sales language and no claims about savings that have not been measured.
