Pair-programming orchestrator for two Codex instances (driver + navigator). It starts by selecting a pair-programming ritual and generating a PRD, then runs the driver/navigator loop.
bun installbun run index.ts --task "Describe the task"If your Codex setup needs an API key explicitly:
OPENAI_API_KEY=... bun run index.ts --task "Describe the task"Optional flags:
--model(or--driver-model/--navigator-model)--apply-patches(applydiffblocks from the driver, default: true)--no-apply-patches(disable applying driver patches)--run-approved-commands(execute commands approved by the navigator, default: true)--no-run-approved-commands(disable running approved commands)--list-models--prd-path(write PRD to a file, default:prd.md)--no-prd-file(skip writing the PRD file)--no-intake(skip the interactive intake chat)--output-dir(change working directory before running; creates it if missing)--danger-full-access(use Codex CLI danger-full-access sandbox mode)--rounds(set a fixed number of rounds; otherwise runs until both say OK_TO_STOP)--swap-interval(0 disables swapping)
- Set
CODEX_MODELto override the default model. - The script prints a full transcript of driver/navigator turns.
--apply-patchesusesgit applywhen a.gitfolder exists, otherwise it falls back topatch.--list-modelstriescodex modelsand falls back tocodex --help.- Requires the Codex CLI installed locally (the SDK shells out to it).
- The navigator approves commands by replying with APPROVE_COMMANDS and a
bashblock. - Commands use short names: the driver writes
# cmd: <name>as the first line of eachbashblock, and the navigator approves by listing names in atextblock under APPROVE_COMMANDS. - Intake mode lets you chat before the pair starts; type
/startto summarize and confirm. - Intake multiline input: enter
/ml, then type lines, end with/end(or use a trailing\to continue). - Driver and navigator outputs stream live during the pair rounds.
- Eval helper:
node tools/eval.js path/to/transcript.txt(rules ineval.yaml). - Sample run transcripts live in
test-run-transcripts/.