@koreanhole/opencodex 2.95.2 → 2.95.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,505 @@
1
+ <p align="center">
2
+ <img src="../assets/banner.png" alt="opencodex — Codex、Claude Code、Claude Desktop、Grok Build などのための一つのローカルゲートウェイ" width="100%">
3
+ </p>
4
+
5
+ <h3 align="center">AI コーディングツールとモデルをつなぐ、一つのローカルゲートウェイ。</h3>
6
+ <p align="center"><b>Codex、Claude Code、Claude Desktop、Grok Build で好きなモデルを使い、<br>管理対象の設定で OpenCode、Pi、Qoder、WorkBuddy、Kilo、Cline、T3 Code などを接続できます。</b><br>
7
+ <a href="https://opencodex.me/ja/reference/client-support/">対応ツールをすべて見る →</a></p>
8
+
9
+ <p align="center">
10
+ <a href="https://x.com/claudeebum"><img src="https://img.shields.io/badge/%40claudeebum-000000?logo=x&logoColor=white" alt="X で @claudeebum をフォロー"></a>
11
+ <a href="https://www.npmjs.com/package/@koreanhole/opencodex"><img src="https://img.shields.io/npm/v/@koreanhole/opencodex?color=cb3837&label=npm&logo=npm" alt="npm version"></a>
12
+ <a href="https://github.com/koreanhole/opencodex-cli/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@koreanhole/opencodex?color=blue" alt="license"></a>
13
+ <img src="https://img.shields.io/node/v/@koreanhole/opencodex?logo=node.js&label=node" alt="node version">
14
+ </p>
15
+
16
+ ```bash
17
+ npm install -g @koreanhole/opencodex
18
+ ocx start
19
+ ```
20
+
21
+ <p align="center">
22
+ <a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="https://img.shields.io/badge/macOS-.dmg-24292f?logo=apple&logoColor=white" alt="macOS 版をダウンロード (.dmg)"></a>
23
+ <a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="https://img.shields.io/badge/Windows-.msi-24292f?logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0zIDNoOC41djguNUgzem05LjUgMEgyMXY4LjVoLTguNXpNMyAxMi41aDguNVYyMUgzem05LjUgMEgyMVYyMWgtOC41eiIvPjwvc3ZnPg==" alt="Windows 版をダウンロード (.msi)"></a>
24
+ <a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="https://img.shields.io/badge/Linux-.AppImage-24292f?logo=linux&logoColor=white" alt="Linux 版をダウンロード (.AppImage)"></a>
25
+ <a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="https://img.shields.io/badge/Linux-.deb-24292f?logo=debian&logoColor=white" alt="Linux 版をダウンロード (.deb)"></a>
26
+ </p>
27
+
28
+ <table>
29
+ <tr>
30
+ <td width="50%" valign="middle">
31
+
32
+ ### Claude Code、どんなモデルでも
33
+
34
+ ピッカーは Claude Code のままです。その裏で動く頭脳だけが違います。
35
+
36
+ </td>
37
+ <td width="50%">
38
+ <img src="../assets/claude-code-models.gif" alt="opencodex でルーティングされたモデルを動かす Claude Code — ステータスバーに gpt-5.6-luna-medium がアクティブモデルとして表示される" width="100%">
39
+ </td>
40
+ </tr>
41
+ <tr>
42
+ <td width="50%" valign="middle">
43
+
44
+ ### Codex、どんなモデルでも
45
+
46
+ プロバイダーを選ぶだけです — 同じワークフロー、違う頭脳。
47
+
48
+ </td>
49
+ <td width="50%">
50
+ <img src="../assets/demo.gif" alt="opencodex のデモ — Codex アプリで OpenAI 以外のルーティングモデルを使ってタスクを実行" width="100%">
51
+ </td>
52
+ </tr>
53
+ <tr>
54
+ <td width="50%" valign="middle">
55
+
56
+ ### Claude Desktop、どんなモデルでも
57
+
58
+ Opus が答えてから、タスクを GPT-5.6 Sol のサブエージェントに渡します。
59
+
60
+ </td>
61
+ <td width="50%">
62
+ <img src="../assets/claude-desktop-subagent.gif" alt="Claude Desktop が Claude Opus 4.8 として応答し、opencodex 経由で GPT-5.6 Sol のサブエージェントを起動する" width="100%">
63
+ </td>
64
+ </tr>
65
+ <tr>
66
+ <td width="50%" valign="middle">
67
+
68
+ ### Grok Build、どんなモデルでも
69
+
70
+ Sol がセッションを進め、Kimi K3 のサブエージェントを呼び出します。
71
+
72
+ </td>
73
+ <td width="50%">
74
+ <img src="../assets/grok-build-subagent.gif" alt="Grok Build が opencodex 経由で GPT-5.6 Sol を動かし、Kimi K3 のサブエージェントを呼び出す" width="100%">
75
+ </td>
76
+ </tr>
77
+ </table>
78
+
79
+ <p align="center">
80
+ <a href="../README.md">English</a> · <a href="README.fr.md">Français</a> · <a href="README.ko.md">한국어</a> · <a href="README.zh-CN.md">简体中文</a> · <a href="README.zh-TW.md">繁體中文</a> · <a href="README.ru.md">Русский</a> · <b>日本語</b> · <a href="README.tr.md">Türkçe</a> · 📖 <a href="https://opencodex.me/ja/"><b>完全なドキュメント →</b></a>
81
+ </p>
82
+
83
+ opencodex は、コーディングツールとモデルプロバイダーをつなぐ軽量なローカルゲートウェイです。Responses、Chat Completions、Anthropic Messages API のリクエストを受け取り、プロバイダーのプロトコルに変換します。クライアント、モデル、プロバイダーが対応する場合は、ストリーミング、ツール呼び出し、推論、画像を中継します。Claude、Gemini、Grok、GLM、DeepSeek、Kimi、Qwen、Ollama などのプロバイダーを、Codex、Claude Code、Claude Desktop、Grok Build や[クライアント対応ページ](https://opencodex.me/ja/reference/client-support/)に記載のツールで使えます。Codex 認証用の **ChatGPT アカウントプール**も管理できます。アカウントを追加し、ダッシュボードでクォータを更新すると、新規セッションは使用量が最も少ない正常なアカウントに自動振り分けされ、既存のスレッドは開始時のアカウントに固定されます。
84
+
85
+ ## クイックスタート
86
+
87
+ ### 個人向けインストール(CLI)
88
+
89
+ ```bash
90
+ npm install -g @koreanhole/opencodex # Node 18 以上。Bun ランタイムは自動で同梱されます
91
+ ocx start # プロキシとダッシュボードが localhost:10100 で起動
92
+ ```
93
+
94
+ バックグラウンドで動かすなら `ocx service` を使ってください。
95
+
96
+ **http://localhost:10100** を開き、Web ダッシュボードですべて設定します。プロバイダーの追加(40 以上の
97
+ 組み込み、または任意の OpenAI 互換エンドポイント)、モデルの選択、アカウントの管理はここで行います。
98
+ `ocx gui` でいつでもダッシュボードを開き直せます。
99
+
100
+ ### ツールを接続する
101
+
102
+ いま使っているツールを接続します。
103
+
104
+ | ツール | 接続方法 |
105
+ |---|---|
106
+ | Codex | ダッシュボードの **Connect** ページで Codex スイッチをオンにし、通常どおり `codex` を実行します。ローカルリスナーでは Codex の組み込みプロバイダーがプロキシを指すようになります。ターミナルからは、ダッシュボードでプロバイダーを追加する前に `ocx init` を実行し、Codex の確認に同意します。 |
107
+ | Claude Code | `claude` CLI をインストールした状態で `ocx claude` を実行します。必要に応じてプロキシを起動し、そこを経由して Claude Code を起動します。 |
108
+ | Claude Desktop | `ocx claude desktop` を実行します。新規インストールではアプリ全体にゲートウェイプロファイルを設定します。既存の first-party 設定は維持され、`ocx claude desktop apply --gateway` で明示的に切り替えられます。[Claude Code ガイド](https://opencodex.me/ja/guides/claude-code/)を参照してください。 切り替えた後は Claude Desktop を完全に終了してから開き直してください。 |
109
+ | Grok Build | ローカルリスナーで Grok 連携が有効かつ `~/.grok` が存在する場合、`ocx start` がモデルを登録します。Grok Build で `ocx-*` モデルを選択してください。リモート設定は [Grok Build ガイド](https://opencodex.me/ja/guides/grok-build/)を参照してください。プロバイダーを追加した後は、プロキシを再起動する(または Codex 自動起動が有効なら `ocx ensure` を実行する)と一覧を更新できます。 |
110
+ | 管理対象の統合があるツール | ダッシュボードの **Connect** ページか `ocx integration client enable --client <id>` を使います。 |
111
+ | その他のツール | カスタムの OpenAI 互換ベース URL に `http://localhost:10100/v1` を、または Anthropic ベース URL に `http://localhost:10100` を設定します。 |
112
+
113
+ 各ツールの接続方法と対応プロトコルは[クライアント対応ページ](https://opencodex.me/ja/reference/client-support/)に記載しています。
114
+
115
+ <details>
116
+ <summary><b>デスクトップアプリ(ベータ版)</b></summary>
117
+
118
+ デスクトップアプリは、同じプロキシとダッシュボードをネイティブウィンドウに収め、トレイと同梱の `ocx` を備えたものです。
119
+ すでに起動しているプロキシに接続するか、同梱のプロキシを起動します。ダッシュボードはプロキシの
120
+ ポートで開きます(別のポートを設定していなければ **http://localhost:10100**)。
121
+ [最新リリース](https://github.com/lidge-jun/opencodex/releases/latest)から、お使いのプラットフォーム向けのファイルを選んでください。
122
+
123
+ | プラットフォーム | ファイル | 備考 |
124
+ |---|---|---|
125
+ | macOS 13 以降(Apple Silicon と Intel) | `OpenCodex-<version>-macos.dmg` | ユニバーサルビルド。Developer ID で署名・公証済み |
126
+ | Windows(x64) | `OpenCodex-<version>-windows-x64.msi` | SignPath Foundation によるコード署名を導入中([コード署名ポリシー](https://opencodex.me/ja/reference/code-signing/))。署名前のリリースでは SmartScreen が一度だけ確認するので、**詳細情報 → 実行**を選択 |
127
+ | Linux(x86_64) | `OpenCodex-<version>-linux-x86_64.AppImage` または `-linux-amd64.deb` | トレイには AppIndicator 対応のデスクトップが必要 |
128
+
129
+ リリースページでは各ファイルの横に `.sha256` があります。macOS 14 以降では、プロキシの状態、
130
+ 今日の使用量、プロバイダーのクォータを表示する WidgetKit 拡張も付属します。表示に使う
131
+ スナップショットモデルは [`app/`](../app)(`MenuBarCore`)にあります。アプリを自分でビルドするには、
132
+ リポジトリのルートで `bun install && bun run build:gui` を実行し、
133
+ `desktop/` で macOS なら `bun install && bun run prepare-sidecar && bun run prepare-widget && bun run build:local`、Windows と Linux なら `bun install && bun run prepare-sidecar && bun run build:local` を実行します(ウィジェットの手順は macOS 専用です)。
134
+ [デスクトップアプリガイド](https://opencodex.me/ja/guides/desktop-app/)と
135
+ [macOS メニューバーアプリガイド](https://opencodex.me/ja/guides/macos-menu-bar/)で初回起動について説明しています。
136
+ [`AGENTS_INSTALL.md`](../AGENTS_INSTALL.md#where-things-are-installed) にはディスクに書き込まれるすべてのものをまとめています。
137
+
138
+ </details>
139
+
140
+ ### ChatGPT アカウントプール
141
+
142
+ opencodex では、Codex 認証用の **ChatGPT アカウントプール**も管理できます。ChatGPT / Codex のアカウントを
143
+ 複数追加し、5 時間 / 週間 / 30 日のクォータをダッシュボードで更新します。クォータルーティングでは、新しい
144
+ セッションが使用量の最も少ない健全なアカウントを使えます。ラウンドロビンと fill-first はそれぞれの方針に
145
+ 従います。既存の Codex スレッドは通常、開始したアカウントとの affinity を保つので、長い SSH・tmux・
146
+ モバイル接続のセッションが会話の途中でアカウントを乗り換えることはありません。ただしクォータの再評価、
147
+ failover、アカウントの除外、affinity の失効、401/403 や 429 からの復帰では再バインドされることがあります。
148
+ ふだんは使わず他が尽きたときだけ回したいアカウント(多くは Codex Desktop のログイン)があるなら、
149
+ アカウントに選択順を指定してください。
150
+
151
+ ### スポンサー
152
+
153
+ アップストリームのプロトコルが変わるたびに opencodex を追随させているのはスポンサーの支援です。
154
+ 興味があれば [SPONSORS.md](../SPONSORS.md) をご覧ください。
155
+
156
+ <!-- sponsors:main — one banner, model developers only; empty until a Main sponsor signs -->
157
+
158
+ <!-- sponsors:standard — one row per sponsor, in order of signing -->
159
+ <table>
160
+ <tbody>
161
+ <tr>
162
+ <td width="180"><a href="https://www.orcarouter.ai/?utm_source=opencodex&utm_medium=readme"><img src="../assets/sponsors/orcarouter.png" alt="OrcaRouter" width="150"></a></td>
163
+ <td>このプロジェクトを支援してくださる <a href="https://www.orcarouter.ai/?utm_source=opencodex&utm_medium=readme">OrcaRouter</a> に感謝します。OrcaRouter は本番の AI 向けに作られた OpenAI 互換の AI ゲートウェイです。すべてのプロンプトを採点して基準を満たすモデルへ送る適応型ルーティング、自動 failover、コードとして書けるルーティングルール、プロンプトキャッシュ付きのマークアップなしプロバイダー価格、そして 200 以上のモデルへのすべての呼び出しに付くガードレール・エージェントファイアウォール・リクエストログを備えています。Add provider ピッカーで <code>OrcaRouter</code> を選ぶか <code>ocx provider add orcarouter</code> を実行してください。適応型ルーターは <code>orcarouter/auto</code> です。</td>
164
+ </tr>
165
+ <tr>
166
+ <td width="180"><a href="https://tokenlab.sh/r/OPENCODEX"><picture><source media="(prefers-color-scheme: dark)" srcset="../assets/sponsors/tokenlab-dark.png"><img src="../assets/sponsors/tokenlab-light.png" alt="TokenLab" width="150"></picture></a></td>
167
+ <td>このプロジェクトを支援してくださる <a href="https://tokenlab.sh/r/OPENCODEX">TokenLab</a> に感謝します。TokenLab はコーディングエージェントに主要モデル向けの API キーを 1 つだけ提供し、OpenAI Responses と Chat Completions、Anthropic Messages、Gemini ネイティブ API の各形式に、ストリーミングとツール呼び出し込みで対応しています。MCP サーバーとエージェント Skills も用意されており、簡単に組み込めます。配信モードを選び、使った分だけ支払えます。Add provider ピッカーで <code>TokenLab</code> を選ぶか <code>ocx provider add tokenlab</code> を実行してください。<br><sub>TokenLab 为编程智能体提供统一的多模型 API,一枚 API Key 即可接入主流模型,支持 OpenAI Responses、Chat Completions、Anthropic Messages 和 Gemini 原生 API 格式,以及流式输出和工具调用。同时提供 MCP 服务器和 Agent Skills,方便接入现有工作流;交付模式可选,按量付费。</sub></td>
168
+ </tr>
169
+ </tbody>
170
+ </table>
171
+
172
+ ---
173
+
174
+ <details>
175
+ <summary>Docker Compose</summary>
176
+
177
+ このリポジトリには、digest 固定で非 root の Compose ビルドが入っています。ビルドは、選択した Git
178
+ スナップショットから正式な互換性マニフェストを生成して検証します。ローカルクローンには Git と Docker
179
+ Compose、リモート Git コンテキストには Docker Compose が必要です。どちらの方法でも、ホスト上の Bun や
180
+ 準備手順は不要です。データプレーンのトークンを stdin から一度だけ初期化してハブを起動します:
181
+
182
+ ```bash
183
+ git clone https://github.com/lidge-jun/opencodex.git
184
+ cd opencodex
185
+ docker compose build
186
+ openssl rand -hex 32 | docker compose run --rm -T hub bun run docker/bootstrap-token.ts
187
+ docker compose up -d
188
+ curl --fail --silent http://127.0.0.1:10100/healthz
189
+ curl --fail --silent http://127.0.0.1:10100/readyz
190
+ ```
191
+
192
+ 既定のホストバインドは `127.0.0.1:10100` です。リモートへ公開するには
193
+ `OPENCODEX_BIND_ADDRESS=<LAN-or-Tailscale-IP> docker compose up -d` を明示する必要があり、
194
+ `0.0.0.0` はホストのすべてのインターフェースを開きます。ファイアウォールと、認証付きの TLS または
195
+ tailnet のフロントエンドでアクセスを制限してください。生成された JSON は追跡されません。ビルド
196
+ コンテキストが受け入れるのは `.git/index` と `.git/HEAD`、つまり `git ls-files` が読み取るインベントリ
197
+ だけです。オブジェクトストア全体ではなく約 1 MB であり、読み取り専用マウントを通じてビルド専用の
198
+ マニフェストステージからのみ参照できるため、`.git` を含む `COPY` はありません。ホストで生成済みの
199
+ マニフェストは検証後にのみ受け入れられ、それ以外の場合はビルドが自動生成します。ビルドは古い
200
+ マニフェスト、欠けているファイルや不一致のファイル、余分なソースファイル、シンボリックリンクを
201
+ 拒否します。記録された SHA-256 は、ビルドコンテキストとコピーされたランタイム
202
+ ファイル(`package.json`、`bun.lock`、明示的に含めた `scripts/model-metadata.source.json`)の
203
+ すべてと照合されます。
204
+
205
+ リモート Git コンテキストでは、BuildKit が Git メタデータを保持する必要があります。次の Compose
206
+ ビルド断片はリモートスナップショットを選択し、必要な組み込み引数を渡します:
207
+
208
+ ```yaml
209
+ services:
210
+ hub:
211
+ pull_policy: build
212
+ build:
213
+ context: https://github.com/lidge-jun/opencodex.git#main
214
+ dockerfile: Dockerfile
215
+ target: runtime
216
+ args:
217
+ BUILDKIT_CONTEXT_KEEP_GIT_DIR: "1"
218
+ ```
219
+
220
+ トークンと可変状態は `ocx-state` という named volume に残り、イメージ、Compose ファイル、環境変数、
221
+ シェル引数のどこにも認証情報は置かれません。プロバイダーの設定、認証付きの受け入れ確認、リモート管理、
222
+ ロールバックは [Remote Hub デプロイガイド](https://opencodex.me/ja/guides/remote-hub/)
223
+ を参照してください。
224
+
225
+ </details>
226
+
227
+ <details>
228
+ <summary>ソースからインストール(最新の dev)</summary>
229
+
230
+ **macOS / Linux:**
231
+
232
+ ```bash
233
+ curl -fsSL https://bun.sh/install | bash
234
+ git clone -b dev https://github.com/lidge-jun/opencodex.git
235
+ cd opencodex && ~/.bun/bin/bun install
236
+ ~/.bun/bin/bun run build:gui
237
+ ~/.bun/bin/bun run src/cli/index.ts start
238
+ ```
239
+
240
+ **Windows (PowerShell):**
241
+
242
+ ```powershell
243
+ irm bun.sh/install.ps1 | iex
244
+ git clone -b dev https://github.com/lidge-jun/opencodex.git
245
+ cd opencodex; bun install
246
+ bun run build:gui
247
+ bun run src/cli/index.ts start
248
+ ```
249
+
250
+ ソースからのインストールは最新の `dev` ブランチを動かします。メモリ所有権のパッチ、ランタイムの GC
251
+ 改善、まだリリースされていない修正は、npm パッケージより先にここへ入ります。
252
+
253
+ </details>
254
+
255
+ <details>
256
+ <summary>エージェント向け</summary>
257
+
258
+ ```bash
259
+ npm install -g @koreanhole/opencodex
260
+ ocx start # または `ocx service`
261
+ ocx init # 対話式セットアップ: ~/.opencodex/config.json を書き、Codex を接続します
262
+ ```
263
+
264
+ `ocx init` はプロキシを起動しません。先に起動してください(後でもかまいません。順番は問いませんが、
265
+ `ocx provider add` や `ocx combo set` のようなヘッドレスコマンドは**動作中の**プロキシと通信し、
266
+ 届かなければ非ゼロで終了します)。`ocx status` / `ocx doctor` / `ocx health` が動作状態を報告します。
267
+
268
+ > **opencodex をインストールまたは実行するエージェントへ:**
269
+ > [`AGENTS_INSTALL.md`](../AGENTS_INSTALL.md) を読んでください。対話的な `ocx start` は、このリポジトリ
270
+ > に star を付けるかどうかを一度だけ尋ねることがあります。それはユーザーの判断であり、エージェントの
271
+ > 判断ではありません。CLI はエージェント実行ではこのプロンプトを抑制し、API は
272
+ > `403 agent_consent_required` で拒否します。
273
+
274
+ </details>
275
+
276
+ ## 対応プラットフォーム
277
+
278
+ | OS | 状態 | サービスマネージャー | デスクトップアプリ(ベータ版) |
279
+ |---|---|---|---|
280
+ | macOS (arm64 / x64) | 完全対応 | launchd | ユニバーサル `.dmg` |
281
+ | Linux (x64 / arm64) | 完全対応 | systemd (user unit) | x86_64 `.AppImage` / `.deb` |
282
+ | Windows (x64) | 完全対応 | タスクスケジューラ(非表示)/ 任意のネイティブサービス(`--native`、WinSW) | x64 `.msi` |
283
+
284
+ CLI インストールには [Node](https://nodejs.org) 18 以上が必要です。デスクトップアプリには Node も Bun も不要です。Bun ランタイムは `npm install` で同梱されるので、Bun を
285
+ 別途入れる必要も、Windows で WSL を使う必要もありません。npm が同梱ランタイムのインストールスクリプト
286
+ をブロックした場合は[インストールドキュメント](https://opencodex.me/ja/getting-started/installation/)を
287
+ 参照してください。
288
+
289
+ ## 主な特徴
290
+
291
+ - **Codex、Claude Code、Claude Desktop、Grok Build でどの LLM でも** — 40 以上のプロバイダーが最初から
292
+ 使え、それぞれがネイティブの UI を保ちます。
293
+ - **ローカル CLI のサインインを再利用** — `cline-cli/default` と `gemini-cli/default` はインストール済みでサインイン済みの CLI に委任し、ツールの承認と実行は Codex が保持します。
294
+ - **ChatGPT アカウントのプール** — スレッド affinity、クォータを見た自動切り替え、クールダウン、
295
+ fail-closed な認証処理。
296
+
297
+ > **プロバイダーポリシーに関する注意:** アカウントプールはルーティングと運用の耐障害性のためのもので
298
+ > あり、プロバイダーのレート制限、措置、停止その他のアカウント処分から守るものではありません。
299
+ > OpenCodex は、プロバイダーの制限を回避するために追加のアカウントを使うことや、アカウントの認証情報
300
+ > を人と共有することを推奨しません。各プロバイダーの現行の規約を守る責任は利用者にあります。
301
+ > [Codex Auth とアカウントプールの案内](https://opencodex.me/ja/guides/web-dashboard/)
302
+ > と [OpenAI の現行利用規約](https://openai.com/policies/terms-of-use/)をご覧ください。
303
+ - **コンボ** — 1 つの仮想モデル ID で、複数プロバイダーにまたがる failover や重み付きラウンドロビンを
304
+ 組みます。[コンボガイド](https://opencodex.me/ja/guides/combos/)を参照してください。
305
+ - **どのモデルでもサブエージェントに** — ルーティングしたモデルを Codex のサブエージェントピッカーに
306
+ 出し、v1/v2 の表面制御とフォールバックチェーンを設定できます。
307
+ [サブエージェントガイド](https://opencodex.me/ja/guides/sub-agent-surface/)を参照してください。
308
+ <!-- sponsors:main-first-mention -->
309
+ - **一度ログインすれば API キーは不要** — xAI、Anthropic、Kimi は OAuth に対応します。あるいは
310
+ `codex login` を転送する、キーを貼り付ける、`${ENV_VAR}` 参照を使う、のいずれでもかまいません。
311
+ - **Web 検索とビジョンのサイドカー** — OpenAI 以外のモデルも、ChatGPT ログインの上で動くサイドカーを
312
+ 通じて本物の Web 検索と画像理解を使えます。
313
+ - **何が起きているか見える** — ダッシュボードがプロバイダー、OAuth の状態、モデルの選択、そしてキャッシュ
314
+ トークン数まで含むリアルタイムのリクエストログを表示します。
315
+ - **後始末の要らない終了** — `ocx stop` が Codex を元の設定に戻します。
316
+ - **上限のあるメモリ所有権** — 長く生きるキャッシュ、リングバッファ、プロトコル変換のストアには、必ず
317
+ 有限の上限、バイト予算、あるいは能動的な reconciliation があります。config を再読み込みしたあとに
318
+ 上限のない `Map` や `Set` は残りません。
319
+
320
+ <details>
321
+ <summary>メモリ所有権の詳細</summary>
322
+
323
+ OpenCodex はプロセスが保持する状態を以下のカテゴリで追跡し、それぞれに文書化された上限があります:
324
+
325
+ - **保持ストア 14 個**(リクエストログ、デバッグリング、画像キャッシュ、モデルキャッシュ、ビジョンの
326
+ 説明、カーソル blob、responses の継続など)はバイト単位で集計され、アプリが持つメモリ予算
327
+ (既定 256 MiB)によって退避されます。ただしネイティブ制御のリプレイ用ストアは固定され、
328
+ 退避されません。
329
+ - **観測バッファ 4 個**(トランスレーターのアキュムレーター、画像・OAuth・Grok の tail)は処理中の
330
+ バイト圧力を監視するだけで、退避はしません。
331
+ - **state-store の登録 31 個**が期限切れの掃除(60 秒間隔)と config 世代の reconciliation を担い、
332
+ 古いプロバイダー/アカウントのキーを取り除きます。
333
+ - **パスとフィンガープリントのメモ**(ワークスペースのメタデータ、hardened identity、インストール
334
+ salt、mode-hint の capability)は挿入順の LRU 上限(8〜128 件)を使います。
335
+ - **モデルキャッシュの世代 tombstone** は reconciliation のあとに削除されます。グローバルな世代を
336
+ 進めることで、進行中だった古い discovery が削除済みのプロバイダーを復活させないようにしています。
337
+ - **Lab のイベント ID 重複排除**はディスク上の ledger ロックの下で動き、プロセス側の RAM インデックス
338
+ は持ちません。
339
+
340
+ 管理トークンを付けて `GET /api/system/memory` を叩けば、現在の保持バイト数、退避カウンター、
341
+ ウォッチドッグのサンプルを確認できます。
342
+
343
+ </details>
344
+
345
+ ## モデルルーティング
346
+
347
+ `provider/model` の書き方で、設定済みのどのプロバイダーとモデルでも指定できます:
348
+
349
+ ```bash
350
+ codex -m "anthropic/claude-opus-5" "このスタックトレースを説明して"
351
+ codex -m "google/gemini-3-pro" "auth.ts のユニットテストを書いて"
352
+ codex -m "ollama/llama3" "この関数をリファクタリングして"
353
+ ```
354
+
355
+ `provider/` の接頭辞を省くと、既定のプロバイダーを使うか、モデル名のパターンで自動的に一致させます。
356
+ `/` を含むプロバイダーのモデル ID は、内側のスラッシュを `-` に置き換えた別名で公開され、スラッシュ
357
+ のままの完全形も引き続き使えます。詳細は
358
+ [モデルルーティングのドキュメント](https://opencodex.me/ja/guides/model-routing/)を参照してください。
359
+
360
+ ### JEV Auto ルーティング(任意)
361
+
362
+ TypeSafe JEV は、明示的に有効にした Combo の最初のモデルと推論エフォートを選べます。通常のモデル
363
+ ピッカーと直接ルートは変わりません。認証情報は `ocx login jev`、**Providers → TypeSafe JEV → Add API key**、
364
+ または `TYPESAFE_API_KEY`/`JEV_API_KEY` で追加します。次に **Models → Combos → Create JEV Auto** を開き、
365
+ 許可するターゲットモデルを選んで、ターゲットごとに JEV が選べるエフォートをチェックします。
366
+ エフォート設定に触れていないターゲットは、そのモデルが現在公開しているすべてのエフォートを許可します。
367
+
368
+ JEV は `jev-auto` でのみ、論理的なモデル呼び出しごとに一度だけ使われます。認証情報がない場合、
369
+ ネットワーク障害、または不正な判定のときは、現在利用可能な最初のターゲットへフェイルオープンします。
370
+ 呼び出し元のキャンセルは引き続きリクエストをキャンセルします。自動テストは TypeSafe のモック
371
+ エンドポイントを使い、実際の JEV アカウントは検証しません。
372
+
373
+ JEV Combo は、キー不要の Ollama `tev1` のようなセルフホストの判断モデルを代わりに使うこともできます。
374
+ `baseUrl` が完全な `/v1/systemone` エンドポイントである `jev-decision` プロバイダーを追加し、Combo の
375
+ `decisionProvider` に指定します。TypeSafe の認証情報がそこへ送られることはありません。詳しくは
376
+ [セルフホストの判断モデル](https://opencodex.me/ja/guides/combos/)を参照してください。
377
+
378
+ ## プロバイダーとアダプター
379
+
380
+ <!-- sponsors:main-first-mention -->
381
+ OpenAI(ChatGPT ログインまたは API キー)、Anthropic、Google Gemini、xAI、Kimi、Azure OpenAI、Ollama
382
+ (ローカル + Cloud)、Cursor(実験的)、そしてあらゆる OpenAI 互換エンドポイント。さらに DeepSeek、
383
+ Groq、OpenRouter、OpenGateway、Together、Fireworks、Cerebras、Mistral、Hugging Face、NVIDIA NIM、MiniMax、
384
+ Qwen Cloud、Qoder Global と CN(公式 PAT + CLI)、SiliconFlow などがあります。全一覧は `ocx init` か
385
+ [プロバイダーのドキュメント](https://opencodex.me/ja/guides/providers/)で確認できます。
386
+
387
+ ## CLI
388
+
389
+ ```bash
390
+ ocx init # 対話式セットアップ(config を書き、Codex を接続し、shim を提案)
391
+ ocx start [--port 10100] [--socks5 [host:port] | --socks5-off] # SOCKS5 の既定値は socks5://127.0.0.1:10808
392
+ ocx stop # 停止してネイティブの Codex を復元
393
+ ocx service [install|repair|restart|start|stop|status|uninstall|remove] # バックグラウンドサービス
394
+ ocx codex-shim install # `codex` の起動時にプロキシをオンデマンドで立ち上げる
395
+ ocx health [--json] # プロキシが今生きているかを確認
396
+ ocx ready [--json] [--wait [--timeout <seconds>]] # 同期後の準備状態を確認
397
+ ocx status # プロキシは動いているか
398
+ ocx gui # Web ダッシュボードを開く
399
+ ocx provider <...> # プロバイダーの管理(list/add/edit/test/remove)
400
+ ocx account <...> # ChatGPT アカウントと API キープールの管理
401
+ ocx combo <...> # failover / ラウンドロビンのコンボ管理
402
+ ocx v2 <...> # マルチエージェント v1/v2 の表面制御
403
+ ocx update [--tag preview] # opencodex の更新
404
+ ```
405
+
406
+ 希望するポートが使用中の場合、起動は別のポートへ移らずに停止し、そのポートを保持しているプロセスを示します。
407
+ そのため、既存のプロキシと並んで 2 つ目のプロキシが動き続けることはありません。ポートを空けるか、`--port` で
408
+ 別のポートを指定してください。全リファレンスは
409
+ [CLI のドキュメント](https://opencodex.me/ja/reference/cli/)にあります。
410
+
411
+ ### ヘルスと準備状態
412
+
413
+ `GET /healthz` はプロキシが今生きているかをすぐに返します。認証の要らない `GET /readyz` は、同期が
414
+ 終わったあとの準備状態を、機微な情報を除いた JSON identity `{service, version, uptime, pid, port, status}`
415
+ で返します。`status` が `ready` なら `200`、`pending` と最終的な `failed` は `Retry-After: 1` を
416
+ 付けて `503` を返します。
417
+
418
+ `ocx ready [--json] [--wait [--timeout <seconds>]]` は既定で 1 回だけ probe します。`--wait` は既定で
419
+ 最大 45 秒ポーリングしますが、最終的な `failed` を見た時点ですぐ終了します。`--timeout <seconds>` は
420
+ 1〜300 秒の上限を設定し、`--wait` を必要とし、正の整数だけを受け付けます。CLI の `--json` 出力は
421
+ `{ready, status, pid, port}` で、`status` は `ready`、`pending`、`failed`、`unreachable` のいずれかです。
422
+
423
+ | 終了コード | 結果 |
424
+ | --- | --- |
425
+ | `0` | 準備完了 |
426
+ | `1` | 準備できていない: pending、failed、タイムアウト、到達不能 |
427
+ | `64` | 引数が不正 |
428
+
429
+ `/readyz` を持たない古いプロキシは `unreachable` として fail-closed になり終了コード 1 を返します。
430
+ `ocx health` はそのまま互換です。
431
+
432
+ ### 自動起動: service と shim
433
+
434
+ 常時稼働でクラッシュ時に再起動させたいなら **service**(`ocx service`)を使います。バックグラウンド
435
+ デーモンなしで軽くオンデマンドに起動したいなら **shim**(`ocx codex-shim install`)を使います。削除は
436
+ `ocx service uninstall` / `ocx codex-shim uninstall` です。
437
+
438
+ ### アンインストール
439
+
440
+ ```bash
441
+ ocx uninstall # 停止し、service/shim を削除し、ネイティブ Codex を復元し、状態を片づける
442
+ npm uninstall -g @koreanhole/opencodex
443
+ ```
444
+
445
+ ## リモートアクセス
446
+
447
+ opencodex は既定で `127.0.0.1` にバインドし、追加の認証を必要としません。ループバックの外へ
448
+ バインドする場合(`"hostname": "0.0.0.0"`)は bearer トークンが**必須**です。
449
+ `OPENCODEX_API_AUTH_TOKEN` がなければプロキシは起動を拒否し、すべてのクライアントリクエストは
450
+ `x-opencodex-api-key` としてトークンを乗せる必要があります。詳細は
451
+ [設定リファレンス](https://opencodex.me/ja/reference/configuration/)にあります。
452
+
453
+ ## ドキュメント
454
+
455
+ 公開ドキュメント(インストール、プロバイダー、ルーティング、コンボ、サブエージェント、サイドカー、
456
+ 連携、CLI/設定/管理 API のリファレンス)は [`docs-site/`](../docs-site) からビルドされ、
457
+ **[opencodex.me](https://opencodex.me/ja/)** に公開されています。
458
+
459
+ メンテナー向けの source-of-truth なノートは [`structure/`](../structure) に、コントリビューターの
460
+ セットアップは [`CONTRIBUTING.md`](../CONTRIBUTING.md) に、セキュリティ報告は
461
+ [`SECURITY.md`](../SECURITY.md) にあります。未公開の脆弱性は公開 issue ではなく
462
+ [GitHub の非公開脆弱性報告](https://github.com/lidge-jun/opencodex/security/advisories/new)から
463
+ 非公開で報告してください。
464
+ 技術的な窓口はこのフォームだけで、セキュリティ用のメールアドレスはありません。やり取りは非公開の報告の
465
+ 中で続けてください。公開 issue に置いてよいのは調整のための連絡だけで、脆弱性の詳細は置けません。受領の
466
+ 連絡はトリアージではなく、初回応答までの期限も約束していません。
467
+
468
+ ## 開発
469
+
470
+ ソース開発には `PATH` に `bun` CLI が必要です。公開 npm パッケージはインストール済みの `ocx`
471
+ コマンド用に Bun ランタイムを同梱し、パッケージのスクリプトもこの同梱依存関係から Bun を解決することがあります。
472
+
473
+ ```bash
474
+ git clone https://github.com/lidge-jun/opencodex.git
475
+ cd opencodex
476
+ bun install
477
+ bun run typecheck
478
+ bun run test
479
+ ```
480
+
481
+ **[コントリビューション](../CONTRIBUTING.md)**を参照してください。
482
+
483
+ メンテナーが代わりに取り込んだり作り直したりして入ったものの、コミットに原作者が記されていない
484
+ コントリビューターの作業は **[CREDITS.md](../CREDITS.md)** に記録しています。
485
+
486
+ ## コード署名ポリシー (Code signing policy)
487
+
488
+ Windows 向けバイナリは Authenticode 署名へ移行中です([#7207](https://github.com/lidge-jun/opencodex/issues/7207))。移行状況、署名の確認方法、ポリシー全文は [Windows コード署名ガイド](https://opencodex.me/ja/reference/code-signing/) を参照してください。
489
+
490
+ Free code signing provided by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/).
491
+
492
+ - Committers and reviewers: [lidge-jun](https://github.com/lidge-jun)
493
+ - Approvers: [lidge-jun](https://github.com/lidge-jun)
494
+ - Privacy: This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
495
+
496
+ ## 免責事項
497
+
498
+ opencodex はコミュニティが維持する独立したプロジェクトであり、**OpenAI、Anthropic をはじめとするどの
499
+ プロバイダーとも提携しておらず、承認も受けていません。**
500
+
501
+ 一部のプロバイダー、とくに Anthropic (Claude) は、サードパーティのプロキシ経由で API トラフィックを流すアカウントを停止または制限することがあります。**自己責任でご利用ください (UAYOR)。** プロバイダーを接続する前に、その利用規約でプロキシ経由のアクセスが認められているか確認してください。opencodex のメンテナーは、アップストリームのプロバイダーが取ったアカウント処分について責任を負いません。
502
+
503
+ ## ライセンス
504
+
505
+ MIT