opencodex — Codexで任意のLLMを使えるローカルプロキシ
(lidge-jun.github.io)CodexはOpenAIモデルしか使えない。Claudeを使いたいなら? GLM-5.2でコーディングしたいなら? OpenAIが追加してくれるまで待たなければならない。
opencodexはこの問題を解決するローカルプロキシだ。CodexとLLMプロバイダーの間に入り、プロトコルをリアルタイムで変換する。ストリーミング、ツール呼び出し、推論トークン、画像 — すべて双方向で動作する。
Codexアプリ、CLI、SDK
のモデルピッカーに正常に登録され、
1つのセッション内でGPTと登録済みモデルをすべて使える。
npm install -g @bitkyc08/opencodex
ocx init # プロバイダー選択
ocx start # プロキシ開始
codex -m "anthropic/claude-opus-4-8" "このバグを直して"
どのように動作するか
CodexはResponses API(/v1/responses)という独自プロトコルしか使わない。ほとんどのLLMはこれを実装していない。opencodexが5つのプロトコルアダプター(Anthropic Messages、Google Gemini、Azure、OpenAI passthrough、OpenAI-compatible Chat Completions)で変換してくれる。40以上のプロバイダーがデフォルトで内蔵されている。
ルーティングされたモデルは、Codexのモデルセレクターにネイティブモデルのように表示される。provider/model 形式で指定すればよい。
作る中で難しかったこと
プロキシ設計は多くのオープンソースがあり実装は容易だったが、
Codexのネイティブな体験のためにはcodex-rsの分解が必須だった。
reasoning effortのマッピング。 プロバイダーごとにeffort名が異なる。GLMはmaxを使い、Codexはそれをxhighと呼ぶ。Kimiはこのパラメーター自体を拒否する。モデルごとに変換テーブルを別途作る必要があった。
セッション履歴。 Codexは各スレッドのmodel_providerをDBに保存する。opencodexへ切り替えると既存セッションがすべて見えなくなる。SQLiteを直接開き、inject/restore時にmodel_providerタグを書き換えるマイグレーターを作った。ファイルのmtimeは保持し、再開順が崩れないようにした。
サイドカー。 OpenAI以外のモデルはWeb検索や画像理解ができない。ChatGPTログインを通じてgpt-5.4-miniサイドカーにこの機能をルーティングし、ClaudeやGLMでも実際にWeb検索できるようにした。
無効化すれば元どおり
ocx stopを実行すると、Codex設定、カタログ、セッション履歴がすべて元の状態に復元される。残留物はない。ダッシュボードのStopボタンやocx service uninstallでも同じ結果になる。
MITライセンス。macOS/Linux/Windowsネイティブ対応(WSL不要)。
GitHub: https://github.com/lidge-jun/opencodex
npm:npm install -g @bitkyc08/opencodex
まだコメントはありません。