Codex Reverse is a macOS desktop client for local agent CLIs. It can run with a user's own Codex CLI, and it also includes an experimental Claude Code mode that reads Claude Code history and starts Claude CLI sessions from the app.
The app does not bundle an account, token, or fixed CLI binary. Each user should install and configure their own CLI first.
| Claude Code mode | Slash commands |
|---|---|
![]() |
![]() |
| Codex mode commands | Chat + diff review + terminal |
|---|---|
![]() |
![]() |
- macOS
- Node.js 22 or newer
- pnpm
- Codex CLI with
app-serversupport for Codex mode - Claude Code CLI for Claude Code mode
Check the CLIs before starting the desktop app:
codex --version
codex app-server --help
claude --versionYou do not need to run codex app-server manually. The app starts and manages the subprocess.
git clone <repo-url>
cd codex-reverse
pnpm installIf you keep this project inside another workspace, use the app/ directory as the repository root when publishing to GitHub.
Use the CLIs from PATH:
pnpm devUse a specific Codex binary:
CODEX_BIN=/absolute/path/to/codex pnpm devUse a separate Codex home:
CODEX_HOME="$HOME/.codex-desktop" pnpm devUse a specific Claude Code binary:
CLAUDE_BIN=/absolute/path/to/claude pnpm devUse a separate Claude home:
CLAUDE_HOME="$HOME/.claude-desktop" pnpm devOpen a specific project on startup:
CODEX_PROJECT_CWD=/path/to/project pnpm devStart in a specific backend:
AGENT_BACKEND=codex pnpm dev
AGENT_BACKEND=claude pnpm devCodex mode resolves the CLI in this order:
CODEX_BIN- Packaged app resource:
Resources/codex CODEX_RS_TARGETCODEX_DEV_WORKSPACE/codex-rs/target/*/codex- A sibling development checkout at
../codex/codex-rs/target/*/codex /Applications/Codex.app/Contents/Resources/codexcodexfromPATH
Claude Code mode resolves the CLI in this order:
CLAUDE_BINclaudefromPATH
Codex mode uses the same files as the Codex CLI unless overridden:
~/.codex/config.toml
~/.codex/desktop-state.json
Claude Code mode uses the same files as Claude Code unless overridden:
~/.claude/
Use separate homes if you want to test without touching your normal CLI setup:
CODEX_HOME="$HOME/.codex-desktop" CLAUDE_HOME="$HOME/.claude-desktop" pnpm devpnpm packageCreate distributable artifacts:
pnpm makeCodex mode opens but cannot chat:
codex app-server --helpIf this command is missing, update your Codex CLI or point CODEX_BIN to a build that supports app-server.
Claude Code mode cannot send messages:
claude --version
CLAUDE_BIN="$(which claude)" pnpm devThe app loads stale frontend code during development:
rm -rf .vite node_modules/.vite
pnpm dev -- --forceUse a clean temporary Codex config:
CODEX_HOME="$(mktemp -d)" CODEX_BIN="$(which codex)" pnpm devClaude Code support is implemented as a separate backend mode. It should not reuse Codex-only settings such as Codex reasoning effort or Codex permission labels.
The compatibility goal is:
- read local Claude Code project history from the user's Claude home
- start new Claude CLI sessions in the selected project directory
- keep Git and diff views scoped to the selected project
- expose slash commands from Claude Code built-ins plus installed local skills/plugins
- keep Codex slash commands and Claude slash commands separate
More details are in docs/claude-code-compat.md.



