← 資料一覧

概要

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。

v2.7.30 MIT Node ≥ 18 default :10100
40+
組み込みプロバイダ
5
プロトコルアダプタ
2
クライアント面
(Codex / Claude)
3
OS サービス対応
(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 設定
独立コミュニティプロジェクト。 OpenAI / Anthropic 等との提携・公認はない。 一部プロバイダは第三者プロキシ経由の利用を制限する場合がある(UAYOR)。利用前に各 ToS を確認すること。
クイックスタート
Step 1 — インストール
グローバル npm

Bun ランタイムは依存として同梱。別途 Bun を入れる必要はない。ユーザ所有の Node(nvm / fnm)を推奨。

npm install -g @bitkyc08/opencodex
lifecycle scripts がブロックされると「bundled Bun runtime is missing」になる。再インストール時はパッケージ名を明示:
npm install -g --allow-scripts=bun @bitkyc08/opencodex
Step 2 — 初期設定
対話セットアップ
ocx init ocx start ocx codex-shim install # 任意: on-demand 自動起動
init は設定書き込み・Codex 注入・autostart shim の案内まで行う。
Step 3 — 利用
Codex をいつもどおり
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)
  → 同じデーモン
リクエスト経路(Codex → プロキシ → 上流)
%%{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]
ChatGPT アカウントプール(新規 vs 既存スレッド)
%%{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 面を使う。
OpenAI アカウントモード
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-responsesforward(キー不要)
OpenAI (API key)openai-responseskey
Anthropic Claudeanthropicoauth / key
Google Geminigooglekey
Azure OpenAIazure-openaikey
xAI / Kimi / Ollama / OpenRouter 等openai-chatoauth または key
Cursor(実験的)cursordashboard / 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
CLI と自動起動
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 installocx codex-shim install
仕組み launchd / systemd / Task Scheduler codex ランチャをラップ(実 codex.exe は触らない)
いつ動く ログイン後常駐 codex 起動のたび ocx ensure
クラッシュ 自動再起動 呼び出し単位で一度起動
向き 開発機の常時プロキシ 軽量・オンデマンド(既定で有効、GUI で無効化可)

アンインストール前に ocx uninstall してから npm uninstall -g @bitkyc08/opencodex。 ~/.opencodex も削除対象に含まれる。

ローカル状態と制約
パス所有者内容
~/.opencodex/config.jsonopencodexメイン設定
~/.opencodex/auth.jsonopencodexOAuth(マルチアカウント形)
~/.opencodex/codex-accounts.jsonopencodexPool 用 Codex 資格情報ストア
~/.opencodex/usage.jsonlopencodex利用ログ(プロンプト/認証は書かない)
$CODEX_HOME/config.tomlCodex(編集)アクティブプロバイダ表
$CODEX_HOME/opencodex-catalog.jsonopencodexネイティブ+ルーティング共有カタログ
  • 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(既定・非表示)または --native WinSW。WSL 不要

出典: lidge-jun/opencodex の README.md / structure/00_overview.md / 01_runtime.md / 08_openai-provider-tiers.md(本ページ作成時点 v2.7.30)