opencodex
make codex open!
Codex CLI / App / SDK と Claude Code 向けのローカル Responses 互換プロキシ。
Codex バイナリはパッチせず、設定とカタログを書き換えて
http://127.0.0.1:<port>/v1/responses へ誘導する。
パッケージ名は @bitkyc08/opencodex、
CLI は ocx / opencodex。
(Codex / Claude)
(macOS / Linux / Win)
- 任意 LLM を Codex で使う — Anthropic / Google / xAI / Ollama / OpenRouter など。ストリーミング・ツール呼び出し・推論トークン・画像を双方向で橋渡し
- Claude Code も同じデーモン —
/v1/messagesとcount_tokens。ocx claudeで起動し、ゲートウェイ発見のモデル別名がネイティブ/modelに出る - ChatGPT アカウントプール — 既存スレッドはアフィニティ維持。新規セッションは 5h / weekly / 30d の使用量から健全な低使用アカウントへ自動割当可能
- 履歴安全な注入 — ローカルでは Codex 組み込み
openaiプロバイダのopenai_base_urlを自分向けに向ける。停止時はネイティブ設定へ復元 - ダッシュボード —
ocx guiでlocalhost:10100。プロバイダ追加・OAuth・リクエストログ・Claude 設定
Bun ランタイムは依存として同梱。別途 Bun を入れる必要はない。ユーザ所有の Node(nvm / fnm)を推奨。
npm install -g @bitkyc08/opencodex
npm install -g --allow-scripts=bun @bitkyc08/opencodex
ocx init
ocx start
ocx codex-shim install # 任意: on-demand 自動起動
init は設定書き込み・Codex 注入・autostart shim の案内まで行う。codex "Write a hello world in Rust"
# プロバイダ明示
codex -m "anthropic/claude-opus-4-8" "Explain this stack trace"
ocx gui。プロバイダ追加後の再起動は不要。
公開ユーザ向け手順は上流の docs-site、メンテナ向け形状の正は structure/。
プロキシはルーティングとアダプタブリッジを行い、上流プロバイダへ中継する。
Codex CLI / TUI / App / SDK
→ http://127.0.0.1:<port>/v1/responses
→ opencodex routing + adapter bridge
→ upstream provider
Claude Code (ocx claude)
→ /v1/messages (+ count_tokens)
→ 同じデーモン
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#d8ebe0', 'primaryTextColor': '#1a3d2e', 'primaryBorderColor': '#6a9b7e', 'lineColor': '#3d7a5a', 'edgeLabelBackground': '#f4faf6', 'fontSize': '14px'}}}%%
flowchart LR
client[Codex / Claude Code] --> proxy[opencodex]
proxy --> router[router.ts]
router --> adapters[adapters]
adapters --> upstream[Upstream LLM]
proxy --> gui[Dashboard /api]
proxy --> catalog[Codex catalog inject]
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#fef3d0', 'primaryTextColor': '#5c3d0a', 'primaryBorderColor': '#e0b04a', 'lineColor': '#c4891a', 'fontSize': '14px'}}}%%
flowchart LR
session[Codex session] --> proxy[opencodex]
proxy --> existing{Existing thread?}
existing -->|yes| pinned[Keep same account]
existing -->|new| quota[Refresh 5h / weekly / 30d]
quota --> pick[Lowest-usage healthy]
pick --> upstream[ChatGPT / Codex backend]
pinned --> upstream
upstream --> outcome{Outcome}
outcome -->|429| cooldown[Cooldown + failover]
outcome -->|401 / 403| reauth[Mark reauth]
cooldown --> quota
bin/ocx.mjs— npm bin。同梱 Bun を解決してsrc/cli/index.tsを実行src/server/index.ts—/v1/responses(HTTP/SSE、WebSocket は opt-in)、Images、Models、GUI フォールバックsrc/bridge.ts— アダプタの内部イベントを Responses SSE / WS に変換。上流無音 5 分でストール打ち切りocx stop/POST /api/stop— サービス停止込みでネイティブ Codex を復元して終了
明示ルーティングは provider/model。プレフィックス省略時は defaultProvider、
またはモデル名パターン(例: claude-* → Anthropic、gpt-* → OpenAI)で解決する。
内側に / を含むモデル ID(OpenRouter 等)は Codex 向けに - へエイリアスし、プロキシがネイティブ ID へ戻す。
codex -m "anthropic/claude-opus-4-8" "Explain this stack trace"
codex -m "google/gemini-3-pro" "Write unit tests for auth.ts"
codex -m "ollama-cloud/glm-5.2" "Write a SQL migration"
codex -m "ollama/llama3" "Refactor this function"
推論努力と ultra
Codex 側の low / medium / high / xhigh / max / ultra を、
モデルが広告する範囲で保持する。ultra は最大推論+クライアント側マルチエージェント委譲の意味で、
プロバイダ到達前に max へ変換される。ルーティング済みモデルが ultra を出すのは
reasoningEfforts でオプトインしたときだけ。
ダッシュボードまたは設定で最大 5 つの featured モデルを Codex のサブエージェントピッカーに出せる。
v2 マルチエージェント面では injectionModel / injectionEffort と featured 名簿、
fork_turns 規則をコンパクトに注入する。文言は injectionPrompt で
{{model}} / {{effort}} / {{roster}} プレースホルダ付き上書きが可能。
spawn_agent すると、
タスク本体がバックエンド暗号化のまま失われる場合がある(上流 Issue #92)。
クロスプロバイダ委譲の確実性が要るときは v1 面を使う。
| Provider ID | ルート | 資格情報 | 挙動 |
|---|---|---|---|
openai |
Codex login | main + 追加 Codex アカウント | 既定は Pool。pool / direct |
openai-apikey |
OpenAI API | API キー / キープール | Codex アカウント選択なし。相互フォールスルー禁止 |
- Pool — アフィニティ・クォータ・クールダウン・フェイルオーバー。モード未設定の新規は Pool
- Direct — プール状態を読まず、呼び出し元 / main ログインの bearer のみ
- レガシー公開 ID
chatgptは移行後に非表示。バックアップは~/.opencodex/config.json.pre-openai-tiers-v2.bak - 現行は
openaiProviderTierVersion: 2。API 面の Pro 仮想 ID(例:gpt-5.6-sol-pro)は wire 上で base +reasoning.mode: "pro"
gpt-5.6-sol # openai(Pool または Direct)
openai-apikey/gpt-5.6-sol # API キー経路
openai-apikey/gpt-5.6-sol-pro
API カタログは固定 8 ID(gpt-5.5 / gpt-5.6 / Sol・Terra・Luna と各 Pro)。
汎用 gpt-5.6-pro エイリアスはない。Compact は選択ティアを保ちつつ base モデルのみ送る。
| プロバイダ | アダプタ | 認証 |
|---|---|---|
| OpenAI (ChatGPT login) | openai-responses | forward(キー不要) |
| OpenAI (API key) | openai-responses | key |
| Anthropic Claude | anthropic | oauth / key |
| Google Gemini | google | key |
| Azure OpenAI | azure-openai | key |
| xAI / Kimi / Ollama / OpenRouter 等 | openai-chat | oauth または key |
| Cursor(実験的) | cursor | dashboard / local。native local exec は既定オフ |
追加はダッシュボードの Add Provider、ocx init、または ~/.opencodex/config.json。
モデルはプロバイダの /v1/models から自動発見されることが多い。
{
"port": 10100,
"defaultProvider": "anthropic",
"providers": {
"anthropic": {
"adapter": "anthropic",
"baseUrl": "https://api.anthropic.com",
"authMode": "oauth",
"defaultModel": "claude-sonnet-4-6"
},
"ollama": {
"adapter": "openai-chat",
"baseUrl": "http://localhost:11434/v1",
"authMode": "key",
"apiKey": "",
"defaultModel": "llama3"
}
}
}
JSON が壊れている場合は config.json.invalid-<timestamp> に退避してデフォルトへフォールバックする(元ファイルは黙って上書きしない)。
WebSocket は既定 false。"websockets": true のときだけ Responses WS を広告する。
- 非 OpenAI モデル向けの web search / 画像理解は、ChatGPT ログイン経由の
gpt-5.4-miniサイドカーで補強できる - Codex のスタンドアロン
image_genはPOST /v1/images/generationsと/v1/images/edits(Responses 内蔵の image_generation とは別) - LAN 公開(
hostname: 0.0.0.0)時はOPENCODEX_API_AUTH_TOKEN必須。クライアントはx-opencodex-api-key
ocx init # 対話セットアップ
ocx start [--port 10100] # プロキシ起動(占有時は空きポートへ)
ocx stop # 停止 + ネイティブ Codex 復元
ocx restore # 停止せず復元(alias: ocx eject)
ocx uninstall # サービス/shim/設定削除 + 復元
ocx ensure / ocx sync # 起動保証・カタログ再注入
ocx gui # ダッシュボード
ocx claude [args...] # Claude Code をプロキシ接続で起動
ocx login <provider> # OAuth(xai, anthropic, kimi, cursor, …)
ocx service [install|…] # OS サービス
ocx codex-shim install # codex 起動時に ocx ensure
ocx update [--tag preview] # 更新
ocx service install | ocx codex-shim install | |
|---|---|---|
| 仕組み | launchd / systemd / Task Scheduler | codex ランチャをラップ(実 codex.exe は触らない) |
| いつ動く | ログイン後常駐 | codex 起動のたび ocx ensure |
| クラッシュ | 自動再起動 | 呼び出し単位で一度起動 |
| 向き | 開発機の常時プロキシ | 軽量・オンデマンド(既定で有効、GUI で無効化可) |
アンインストール前に ocx uninstall してから
npm uninstall -g @bitkyc08/opencodex。
~/.opencodex も削除対象に含まれる。
| パス | 所有者 | 内容 |
|---|---|---|
~/.opencodex/config.json | opencodex | メイン設定 |
~/.opencodex/auth.json | opencodex | OAuth(マルチアカウント形) |
~/.opencodex/codex-accounts.json | opencodex | Pool 用 Codex 資格情報ストア |
~/.opencodex/usage.jsonl | opencodex | 利用ログ(プロンプト/認証は書かない) |
$CODEX_HOME/config.toml | Codex(編集) | アクティブプロバイダ表 |
$CODEX_HOME/opencodex-catalog.json | opencodex | ネイティブ+ルーティング共有カタログ |
websockets既定はfalse- 有効な
CODEX_HOMEは~/.codexより優先 - ルート TOML の
model_provider等はテーブルより前 - ルーティングスラッグは
provider/model openaiとopenai-apikeyは相互フォールスルーしないspawn_agent可視性は featured 先頭 5 件に依存stop/restore/ サービス停止後はネイティブ Codex が使えること
- macOS — launchd、完全対応
- Linux — systemd user unit
- Windows — Task Scheduler(既定・非表示)または
--nativeWinSW。WSL 不要
- GitHub: lidge-jun/opencodex — ソースリポジトリ
- 公式ドキュメント — インストール・設定リファレンス
- npm: @bitkyc08/opencodex
- Configuration reference — フィールド一覧
- CONTRIBUTING.md — 開発セットアップ
- SECURITY.md — 脆弱性報告
出典: lidge-jun/opencodex の README.md / structure/00_overview.md / 01_runtime.md / 08_openai-provider-tiers.md(本ページ作成時点 v2.7.30)