Automation·terminal·MIT
cdx
Codex and Antigravity as detached lanes, driven with 23 tools from the session.

cdx lets a Claude Code session hand work to OpenAI Codex and Google Antigravity and keep going. Each task runs as a detached, sandboxed lane on your machine, started with one of the 23 tools the mod registers in the session, and cdx wakes Claude when the lane finishes, asks a question, stalls or hits an outage. Claude never waits on a lane: there is no wait tool by design. Version 10.0.9 at the time of writing.
What it does
- Start work with
mcp__cdx__spawn(a lane with a brief and a contract of outcome, files and acceptance),resume(repair a gate or review failure at the same HEAD),review(a diff reviewed in a fresh, read-only session),consult(a read-only advisory lane) andpanel(the same question to Codex Astra, Codex Sol and Claude Fable, merged into one report). - Steer a running lane with
send, answer its question withreply, message another session withmsg, read messages withinbox. - Check in with
status,events,report,tail,questionsandusage. None of them block. - Finish with
land(commit, gate the merge once, fast-forward, push),closeorkill.gatesets the shell command a lane must pass before its report counts andgate-receiptreturns the proof;jobruns a detached shell command,askanswers a code question through a read-only Gemini lookup,doctordiagnoses the install. /lanesopens a pane with lane details and recent transcript lines. A band above the prompt lists this session’s running lanes and jobs as a table, refreshed every two seconds; each wake event also shows a toast.gpt, the default, runs Codex: work lanes ongpt-6.1-sol, reviews, consults and supervisors ongpt-6-astra.geminiruns Antigravity ongemini-3.8-flash-highand is reserved for read-only work. A Codex lane spawned as supervisor drives its own children, each a tracked lane.- The same lanes are reachable from the
cdxCLI in any terminal.
Install
Needs Claude Code 2.1.287 or later, Bun, and at least one engine: Codex CLI 0.159 or later, signed in, for gpt, or the Google Antigravity CLI agy, authorized, for gemini. macOS, Linux and WSL; the sandbox, ask and panels need macOS, and panels also need the claude binary and cca. The author does not state a minimum Claude Code version; the type definitions vendored in the repo come from Claude Code 2.1.283.
git clone https://github.com/RedesignedRobot/cdx.git ~/.claude/skills/cdx && ln -s ~/.claude/skills/cdx/cdx.ts ~/.local/bin/cdx
cdx doctor --fix
cdx doctor --probe
The clone into ~/.claude/skills/ loads the mod in the next Claude Code session; the symlink gives you the cdx command in the terminal. doctor --fix renders the Codex lane homes and installs the shipped Antigravity agents and hooks; --probe sends a short request through each engine. Then ask Claude to spawn a lane, or run /lanes. If cdx doctor says the session is not polling, run /reload-plugins. Coming from 9.x, stop every lane, run cdx migrate once and restart every open session: the README has the steps.
How it works
The mod talks to cdx only through $.process.run: every call starts bun cdx.ts from the plugin folder with your session id in the environment. On session.start it registers the 23 tools under the prefix mcp__cdx__, the /lanes command, the band and a two-second timer that runs cdx events --json --snapshot, one call that returns the session’s events and the rows the band draws. cdx brief runs at start and after /clear or /resume; its output is queued as context for Claude.
Events reach Claude by two paths. When no turn is running and a wake event is pending, the mod holds it 15 seconds so a burst costs one prompt, then submits a prompt that starts with [cdx], which starts a turn of its own. Mid-turn, events stay in a buffer and are attached as [cdx] events context to the next tool result of the head, or to your next prompt. Subagent tool calls never drain the buffer. Claude Code refuses a plugin’s prompt after 50 in one session; past that the mod keeps events for the next tool result and puts each fresh wake in the prompt box as a Tab suggestion.
From the session it reads turn.start and turn.complete, to know whether the head is idle; each tool.call, to see whether it was denied and whether a subagent made it, never its arguments; and the command of every Bash call, which it denies when it calls an engine CLI directly, polls cdx in a loop, runs cdx wait, or runs a cdx subcommand that has a native tool. It reads no prompt text: prompt.submit only gets pending events attached.
A lane belongs to the session that opened its latest round, and its events go to that session while it polls; once it stops, the head, the session that most recently drove cdx, receives them. Another live session is refused on spawn, send, reply, land, close, kill and gate unless it passes force: true, which takes the lane over.
The mod makes no network calls and never calls $.model, so it spends Claude tokens only through what it puts in context: the tool definitions, each [cdx] wake prompt, and the events and briefs attached to tool results and prompts. Lanes run the engines’ own CLIs as local processes, so their tokens land on your OpenAI or Google account; a panel’s Claude member runs the real claude binary on your Anthropic account. usage shows each account’s windows, burn and which Codex account to spend next, several Codex homes can be pooled in config.json, and a Gemini round that hits its five-hour quota writes ~/.cdx/gemini-quota.json and blocks Gemini work until the reset.
State lives under $CDX_HOME, default ~/.cdx: one SQLite file, state/cdx.db, with every lane, round, event, job and question, plus logs/ (raw engine events and stderr), briefs/ (every prompt cdx injected into an engine), reports/ and control/. cdx redacts known secret environment values, provider key shapes and Authorization headers before it stores or shows lane output. cdx doctor --fix also writes a cdx entry into ~/.gemini/config/hooks.json.
Every lane runs sandboxed. A Codex work lane gets workspace-write with .git read-only, so it cannot commit: cdx land does. Antigravity runs under macOS sandbox-exec with the same writable roots. Review and consult lanes are read-only through a Codex permissions profile or the Gemini deny list, and cdx hashes the reviewed tree before and after the round; a moved hash fails it. "fullAccess": true in config.json lifts the Codex work sandbox for lanes that need the GPU or ps. Lanes run shell commands without approval inside those roots and the lane rules forbid commits, pushes and deploys.
Limitations
- Function hooks are early access. The author removed the 135 end-to-end tests, so engine integration, gates and panels have no automated coverage beyond small pure tests and
claude plugin testsuites. - The head never waits. There is no wait tool;
cdx waitexists only in the CLI, for supervisors and people. Mid-turn, check witheventsorstatus. - Panels need
ccaon PATH and refuse to start when the Codex account or the Claude weekly window has under 10 percent left. - Antigravity lanes have a 90-minute runtime cap by default and a cap of two work rounds per lane. Codex lanes have neither cap. No lane runs below
mediumeffort. - Headless (
claude -p) keeps polling and delivery but skips the band, toasts and logs.
Similar Claude Mods
threads
Spin up Claude sessions on other models, watch them in a pane, get their answers back.
codex-computer-use
Claude's computer use on Codex's engine: one session per chat, per-app approval.
multi-core
ChatGPT, Cursor, Zen, Antigravity and Grok models in one Claude Code session, via /model.
fable-pin
Every subagent spawn rewritten to the Fable model, with /fable-pin on, off and status.
Popular Claude Mods
The whole directory →savvy-progress
Running, finished and planned subagents with model, context, cost and time, in one panel.
show-your-work
Claude shows screenshots and recorded Playwright runs in the chat, with before/after QA.
terminal-browser
A Chromium browser in a pane beside the transcript, for previews and agent browsing.
prompt-rail
Your session's prompts as a rail: hover to read one, click to jump back to it.





