Clodex는 ChatGPT 데스크톱 앱의 Codex CLI에 Claude를 연결하는 포크다. 데스크톱 앱과 음성 모드, ChatGPT 로그인은 그대로 두고 백엔드 바이너리만 바꾼다.

제작자는 openai/codex를 포크해 Anthropic의 Messages API를 프로세스 내부에서 호출하도록 수정했다고 설명한다. 프록시나 변환 계층, TypeScript를 사용하지 않는다. 하루 동안 한 번에 음성으로 만들어졌으며, 제작자는 거친 결과물일 수 있다고 경고한다.

기능과 조건

기능 설명에 따르면 Clodex는 Codex의 Responses 형식 프롬프트를 Anthropic Messages 형식으로 연결하며, 도구 사용, 서명이 포함된 추론, 프롬프트 캐싱, 이미지, 네이티브 웹 검색을 지원한다. 결과는 Codex 이벤트로 스트리밍한다. Claude Code의 자격 증명을 읽고 OAuth 토큰을 갱신하며, 401 응답을 받으면 한 번 재시도한다. 사용량은 Claude 구독 할당량에 포함된다.

음성 모드는 ChatGPT 계정에서 실시간 연결을 만들고, 응답은 Claude가 생성한다. 각 실시간 세션에 음성 백엔드용 지침을 추가한다. 하위 에이전트가 작업을 마치면 부모 에이전트에 알리고, 다른 제공자에서 만든 스레드도 현재 활성화된 제공자로 이어서 사용할 수 있다.

이 포크는 rust-v0.162.0-alpha.10에 커밋 12개를 추가했다. 제작자는 변경 내역을 git log b496f984f4..HEAD에서 확인할 수 있다고 안내한다.

주의 사항에 따르면 테스트는 Arch Linux, ChatGPT 데스크톱 26.930(chatgpt-bin), 번들된 Codex CLI 0.162.0-alpha.10이 설치된 한 대의 기기에서만 이뤄졌다. 데스크톱 앱에서 UI와 음성 모드에 쓸 ChatGPT 로그인이 필요하고, 모델을 사용하려면 Claude Code 로그인도 있어야 한다. Anthropic OAuth는 Claude Code용이며, Clodex는 자신을 Claude Code로 표시한다. 사용 중인 요금제의 약관에 부합하는지는 이용자가 확인해야 한다.

개발 빌드는 최적화되지 않았으며 바이너리 크기는 약 420MB다. 테스트와 clippy 검사는 실행하지 않았다. 인용 정보가 사라지고 apply_patch가 변경 내용을 스트리밍하지 않으며, 속도 제한 헤더도 무시한다. 데스크톱 앱은 기본 codex-code-mode-host를 계속 실행하고, Clodex는 이 파일에 심볼릭 링크를 건다.

설치와 실행

설치 안내에 제시된 빌드 명령은 다음과 같다.

```sh

git clone https://github.com/ZmoleCristian/clodex

cd clodex/codex-rs

RUSTFLAGS="-C link-arg=-fuse-ld=mold" cargo build -p codex-cli --bin codex --profile dev-small

ln -s /usr/lib/chatgpt/resources/codex-code-mode-host target/dev-small/codex-code-mode-host

```

안내된 빌드 시간은 8코어 환경에서 첫 빌드가 약 5분, 이후 증분 빌드가 30~50초다. Claude 모델이 포함된 모델 카탈로그를 ~/.codex/catalog.clodex.json에 두어야 한다. 예시는 docs/clodex-catalog.example.json에 있다.

데스크톱 앱이 번들된 CLI 대신 실행할 래퍼는 다음과 같다.

```sh

#!/bin/sh

~/bin/clodex-codex

real=/path/to/clodex/codex-rs/target/dev-small/codex

case " $* " in

*" app-server "*) exec "$real" "$@" \

-c model_provider=anthropic \

-c model=claude-opus-5-5 \

-c model_catalog_json=$HOME/.codex/catalog.clodex.json ;;

*) exec "$real" "$@" ;;

esac

```

앱을 실행하는 런처 예시는 다음과 같다.

```sh

#!/bin/sh

~/bin/clodex

pkill -f /usr/lib/chatgpt/ChatGPT 2>/dev/null

while pgrep -f /usr/lib/chatgpt/ChatGPT >/dev/null; do sleep 0.2; done

export CODEX_CLI_PATH=$HOME/bin/clodex-codex

exec /usr/lib/chatgpt/ChatGPT "$@"

```

제작자에 따르면 기본 앱과 /usr/lib/chatgpt, ~/.codex는 수정하지 않는다. 메뉴에서 앱을 실행하면 기본 Codex가, clodex 명령으로 실행하면 Claude가 사용된다.

포크 배경과 업스트림

제작 배경에 따르면 OpenCodex는 작동했지만 앱과 모델 사이에 48만 줄 규모의 TypeScript 프록시가 있었다. 제작자는 Codex의 core/src/client.rs에 있는 분기 하나에 Anthropic 연결을 추가하는 편이 더 간단했다고 설명한다.

업스트림 안내에 따르면 이 포크는 openai/codex 태그를 따라간다. 리베이스할 때 client.rs, realtime_conversation.rs, thread_processor.rs에서 충돌을 해결한 뒤 다시 빌드해야 한다. 업스트림 README는 docs/README.upstream.md에 있다.