Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion docs-site/src/content/docs/guides/web-dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,18 @@ and other providers.
- **Refresh quotas** re-reads account usage immediately so routing and the account cards use the same
values.
- Pool request logs use opaque labels such as `p3fa91c`, never account emails.
- **Target a specific Codex account from the model picker** is an explicit opt-in. When enabled,
ordinary supported GPT picker rows are replaced by one entry per public account selector.
Choosing one locks that conversation to the mapped account: it does not rotate, fall back, or
change the active Pool account. The built-in Codex App login has its own selector; generated maps
normally use `main`, with a collision-safe suffix such as `main-2` when needed. Added accounts
receive stable, privacy-safe labels, and existing custom selector labels are preserved.
Existing conversations and saved model selections continue routing. Turning the setting off
hides generated picker entries without deleting accounts, selectors, or exact routes. Plain GPT
model ids continue to use the configured Pool or Direct behavior.
- Account add, remove, and picker-setting changes are saved before the model catalog is refreshed.
If that bounded refresh cannot finish, the dashboard shows an amber success-with-recovery notice;
run `ocx sync` to retry. The account or setting change itself remains saved.

The Providers overview separately summarizes Pool-mode usage as a display-only weighted capacity
estimate, alongside the effective account's raw quota and the next capacity recovery. See
Expand Down Expand Up @@ -166,7 +178,7 @@ The GUI is a thin client over the proxy's JSON management API. Useful endpoints

| Endpoint | Purpose |
| --- | --- |
| `GET` / `PUT /api/settings` | Read settings or toggle Codex autostart. |
| `GET` / `PUT /api/settings` | Read settings or update Codex autostart, stream/memory settings, and account-targeting picker visibility. |
| `GET` / `POST /api/github/star` | Read the `gh`-derived star state, or star the repository. The POST is refused with `403` `agent_consent_required` for agent-driven callers without a dashboard session. |
| `GET /api/startup-health` | Read secret-free routing, service, shim, and restart-safety diagnostics. |
| `POST /api/startup-action` | Install the background service or Codex launcher shim through fixed, allowlisted actions. |
Expand Down
11 changes: 10 additions & 1 deletion docs-site/src/content/docs/ja/guides/web-dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,15 @@ Codex タスクだけに適用され、このオプション自体が委任を
枠のうち最も高い使用率でスコア付けし、Go/Free プランは 30 日枠のみ使います。
- **クォータ更新**はアカウント使用量を即座に再読み込みし、ルーティングと画面のアカウントカードが同じ値を見るようにします。
- プールリクエストログにはメールの代わりに `p3fa91c` のような不透明なラベルを使います。
- **モデルピッカーで使用する Codex アカウントを指定** は明示的な opt-in です。有効にすると、通常の
GPT picker 項目が公開 account selector ごとの項目に置き換わります。選択した会話はそのアカウントに
固定され、Pool のローテーションや fallback は行われず、active Pool account も変わりません。組み込みの
Codex App login には専用 selector があり、生成 map では通常 `main`、衝突時は `main-2` のような安全な
suffix が使われます。追加アカウントには安定した privacy-safe label が割り当てられます。
既存の会話と保存済みのモデル選択は引き続きルーティングされます。無効にしても account、selector、
exact route は削除されず、通常の GPT id は従来どおり Pool / Direct で動作します。
- account の追加・削除と picker 設定は catalog refresh より先に保存されます。refresh が完了できない場合は
amber の回復案内が表示されます。変更自体は保存済みなので、`ocx sync` で refresh を再試行してください。

Providers の概要は、Pool モードの使用状況を表示専用の重み付き容量推定値として別途まとめ、現在の
有効アカウントの生のクォータと次の容量回復も併せて表示します。表示される項目、不完全な対象範囲の
Expand All @@ -119,7 +128,7 @@ GUI はプロキシの JSON 管理 API を使うシンクライアントです

| エンドポイント | 用途 |
--- | --- |
| `GET` / `PUT /api/settings` | 設定を読むか Codex 自動起動をオン/オフします。 |
| `GET` / `PUT /api/settings` | 設定を読み、Codex 自動起動、stream/memory、account-targeting picker の表示を更新します。 |
| `GET /api/startup-health` | 秘密情報を含まないルーティング、サービス、shim、再起動安全性診断を読み取ります。 |
| `GET` / `POST /api/windows-tray` | Windows トレイの導入・表示状態を読み取り、`install`、`start`、`stop`、`uninstall` を実行します。 |
| `POST /api/sync` | 共有モデルカタログを再構築し Codex モデルキャッシュを古い状態としてマークします。 |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,17 +180,20 @@ preemption が未バインドリクエストを直ちに引き上げます。既

### `ocx account login|reauth|code|cancel ...`

ヘッドレス シェルからブラウザベースまたは手動コードのアカウント認証を実行します。プロバイダー固有のコマンド形式には `ocx account --help` を使用します。
ヘッドレス シェルからブラウザベースまたは手動コードのアカウント認証を実行します。プロバイダー固有のコマンド形式には `ocx account --help` を使用します。Codex account login は保存済みでも catalog refresh が保留中なら成功終了し、human output の stderr に固定の `ocx sync` 案内を出します。`--json` は案内を混ぜず、完了 state に `catalogRefreshPending: true` を保持します。

### `ocx account remove <provider> <id|main> --yes [--json]`

この保護された非対話型削除には `--yes` が必要です。削除する前に、ID が存在することが確認されます。 ID が欠落している場合は、DELETE を送信せずに 1 が終了します。メインの Codex App ログインは削除できないため、`remove openai main --yes` は拒否されます。削除後、ファミリーは再度読み取られます。固定された Codex アカウントを削除すると、ピンがクリアされ、自動選択に戻ります。 OAuth は最初に残ったアカウントを昇格させるか、何も報告しません。 API キー プールは、最初に残っているキーを昇格するか、何も報告しません。 `--json` の成功と失敗の形状は次のとおりです。

```text
{ ok: true, provider, id, removedActive: boolean, promotedActiveId: string | null }
{ ok: true, provider, id, removedActive: boolean, promotedActiveId: string | null, catalogRefreshPending?: boolean }
{ error: string } // stderr, exit 1
```

`catalogRefreshPending` は Codex 削除だけに含まれます。`true` でも削除は保存済みで、human output は
stderr に `ocx sync` の案内を出して終了コード 0 のままです。OAuth account と API key の削除形状は変わりません。

### `ocx account add-key <provider> [--label <label>] [--json]`

API キー プロバイダーのキーを追加してアクティブ化します。キーは、非 TTY パイプ/リダイレクトされた標準入力からの読み取り専用です。インタラクティブ TTY 入力、空の入力、OAuth/Codex プロバイダー、および API エラー終了 1。キーがラベル内に表示される場合も含め、キーがエコーされることはありません。シークレット マネージャーまたはヒア文字列を使用することをお勧めします。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ namespace 付き combo または routing-profile alias はその namespace prefi
非公開のままにし、selector を公開名として使ってください。明示的な選択の動作と優先順位は
[ルーティング構成](/reference/configuration/routing/)を参照してください。

Codex Auth dashboard が管理する map には明示的な `codexAccountPickerEnabled` field があります。空の
managed map を有効にすると privacy-safe selector が作られ、その後の account 追加は picker を非表示に
している間も既存 label を変えずに map を拡張します。flag を省略した手書き map は自動拡張されません。
account を削除しても mapping は保持され、同じ id を再追加すると新しい selector ではなく既存 selector が戻ります。

## 予約済み OpenAI プロバイダー

`openai` および `openai-apikey` は固定予約 ID です。 `openai.codexAccountMode` はデフォルトでは `"pool"` で、メインアカウントと追加アカウント全体を選択します。 `"direct"` は、現在の呼び出し元/メイン ログインのみを使用します。 API は、設定された API キーまたはキー プールのみを使用します。ベア モデルまたは `openai-apikey/<model>` を使用します。クロスルート認証情報のフォールバックはありません。 API GPT-5.6 行は 1,050,000 コンテキスト / 最大 922,000 入力メタデータを伝送し、Pro 仮想 ID は `reasoning.mode: "pro"` を使用してベース ワイヤー モデルに書き換えられます。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,16 @@ description: デフォルトのプロバイダーの選択、モデルの解決

opencodex は、要求されたモデルを次の順序で解決します。

1. 設定済みの `<account-selector>/<native-openai-model>` namespace。対応する保存済み Codex アカウントだけに routing され、無効または利用不能な exact target は fail closed します。
2. 正規の `combo/<id>` または構成されたコンボ エイリアス。正規 ID は、エイリアスが一致する前に優先されます。
3. 構成されたプロバイダーを示すプレフィックスを持つ明示的な `<provider>/<model>` 名前空間。
4. `gpt-*`、`o1-*`、`o3-*`、`o4-*` などのベア ネイティブ OpenAI ファミリ ID。
正規対応の `openai` プロバイダー。
5. プロバイダーの `defaultModel` と完全に一致します。
6. 既知のプロバイダー ファミリ モデル プレフィックス。
7. プロバイダーの構成された `models` リスト内の正確なモデル。
8. `defaultProvider`、要求されたモデル ID を保持します。
1. 設定済みの `policy/<id>` または routing-profile alias。policy evaluator を実行して選択した候補へ routing します。未解決の `policy/<id>` は後続のルールへフォールスルーします。
2. 設定済みの `<account-selector>/<native-openai-model>` namespace。対応する保存済み Codex アカウントだけに routing され、無効または利用不能な exact target は fail closed します。
3. 正規の `combo/<id>` または構成されたコンボ エイリアス。正規 ID は、エイリアスが一致する前に優先されます。
4. 構成されたプロバイダーを示すプレフィックスを持つ明示的な `<provider>/<model>` 名前空間。
5. `gpt-*`、`o1-*`、`o3-*`、`o4-*` などのベア ネイティブ OpenAI ファミリ ID。
正規対応の `openai` プロバイダー。
6. プロバイダーの `defaultModel` と完全に一致します。
7. 既知のプロバイダー ファミリ モデル プレフィックス。
8. プロバイダーの構成された `models` リスト内の正確なモデル。
9. `defaultProvider`、要求されたモデル ID を保持します。

無効なプロバイダーは除外されます。無効なプロバイダーの明示的な名前空間は、フォールスルーではなく失敗します。プロバイダー エントリは、複数のプロバイダーに一致する可能性のあるルールの JSON 挿入順序でチェックされるため、ベア モデルがあいまいな可能性がある場合は明示的な名前空間を使用します。

Expand All @@ -44,6 +45,11 @@ selector の後には bare native OpenAI-family id だけを指定できます
が存在しない selector は表示されません。selector の検証、衝突規則、privacy guidance は
[プロバイダーの構成](/reference/configuration/providers/)を参照してください。

Codex Auth ページではこの picker 動作を opt-in できます。無効化すると selector-qualified row は非表示に
なり通常の GPT row が戻りますが、mapping と exact `<selector>/<model>` routing は残るため、再有効化で
同じ公開 label が復元されます。mutation は bounded catalog refresh より先に保存され、`ocx sync` warning は
picker catalog の convergence だけが保留中で routing change は失われていないことを示します。

## コンボ (`config.combos`)

各コンボ キーは `[A-Za-z0-9][A-Za-z0-9._-]{0,63}` に一致する ID です。これは常に `combo/<id>` として直接アドレス指定可能であり、1 つの `alias` を公開することもあります。エイリアスは一意である必要があり、`combo/` 名前空間を占有することはできず、`gpt-*`、`o1-*`、`o3-*`、`o4-*`、または `codex-*` などの予約されたベア ネイティブ ファミリを使用することはできません。
Expand Down
21 changes: 18 additions & 3 deletions docs-site/src/content/docs/ja/reference/management-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ Authorization: Bearer <admin-token>
| --- | --- | --- |
| `GET /api/config` |編集された、管理上安全な構成 DTO を返します。 — |
| `PUT /api/config` |フルコンフィグ置換ガードを無効にする | 405;代わりにフォーカスされたエンドポイントを使用してください。
| `GET, PUT /api/settings` |ランタイム/起動設定の読み取り、または自動起動、ストリーム モード、アプリ所有のメモリ バジェットの更新 | 400 無効または空の更新 |
| `GET, PUT /api/settings` |ランタイム/起動設定の読み取り、または自動起動、ストリーム モード、アプリ所有のメモリ バジェット、`codexAccountPickerEnabled` の更新 | 400 無効、object 以外、または空の更新 |
| `GET /api/startup-health` |キャッシュされたサービス/シムの起動状態を読み取る | — |
| `POST /api/startup-action` |サービスまたは Codex シムをインストールまたは修復する | 400 無効なアクション。 500 アクション失敗 |
| `GET, POST /api/windows-tray` | Windows トレイの状態を読み取るか、インストール/起動/停止/アンインストールする | 400 のサポートされていないプラットフォーム/アクション。 500 操作失敗 |
Expand Down Expand Up @@ -197,11 +197,16 @@ Authorization: Bearer <admin-token>

### Codex認証の委任

`GET /api/settings` は有効な `codexAccountPickerEnabled` boolean を返します。この strict boolean を
`PUT` すると、空の map を有効化する場合は privacy-safe selector を初期化し、既存 label を保持したまま
先に永続化し、有効な picker 表示が変わったときだけ bounded catalog convergence を 1 回要求します。
成功応答の `catalogRefreshPending: true` は設定は保存済みだが `POST /api/sync` による再試行が必要という意味です。

ルート管理ディスパッチャーは、すべての `/api/codex-auth/*` リクエストを Codex アカウント マネージャーに委任します。そのルートは次のとおりです。

|メソッドとパス |目的 |注目すべきエラー |
| --- | --- | --- |
| `GET, POST, DELETE /api/codex-auth/accounts` | Codex アカウントの一覧表示/更新、必要に応じてインポート、削除 | 400 無効な入力。手動インポートは無効にすることができます。
| `GET, POST, DELETE /api/codex-auth/accounts` | Codex アカウントの一覧表示/更新、必要に応じてインポート、削除。成功した POST/DELETE は `catalogRefreshPending` を返します。 | 400 無効な入力。手動インポートは無効にすることができます。 |
| `PUT /api/codex-auth/accounts/alias` |アカウント エイリアスの設定またはクリア | 400 無効なアカウント/エイリアス |
| `PUT /api/codex-auth/accounts/pause` | 1 つのアカウントを一時停止または再開する | 400 無効なアカウント/状態。 404 アカウントが見つかりません |
| `PUT /api/codex-auth/accounts/pause-exhausted` |クォータを使い果たしたアカウントを一時停止する |ミューテーションロックの失敗は 503 になります |
Expand All @@ -216,10 +221,20 @@ Authorization: Bearer <admin-token>
| `POST /api/codex-auth/login` | Codex のログインまたは再認証を開始する | 400 無効なリクエスト。競合/ビジー ログイン状態 |
| `POST /api/codex-auth/login/code` | Codex ログイン フローの手動コードを送信する | 400 無効なフロー/コード |
| `POST /api/codex-auth/login/cancel` | Codex ログイン フローをキャンセルする | — |
| `GET /api/codex-auth/login-status` |フローまたはアカウントのログイン状態をポーリングする |不明なフローは `expired` を報告します。アクティブなフローは `idle` を報告しません |
| `GET /api/codex-auth/login-status` |フローまたはアカウントのログイン状態をポーリングする。新規アカウント完了時は回復が必要な場合だけ `catalogRefreshPending: true` を含みます。 |不明なフローは `expired` を報告します。アクティブなフローは `idle` を報告しません |

新規 account の config row は保存されたものの credential setup を完了できない場合、manual POST は
HTTP 500 を返し、OAuth の `login-status` は `status: "error"` を報告します。どちらも
`code: "codex_credential_persistence_failed"`、`accountId`、`needsReauth: true`、必要に応じて
`catalogRefreshPending: true` を含み、storage error の詳細は公開しません。account row は保存済みなので、
account 作成を再試行する前に再認証するか削除してください。

この委任されたファミリーでの構成ライターまたは資格情報の更新ロックのタイムアウトは、コード `CONFIG_MUTATION_LOCK_UNAVAILABLE` の HTTP 503 を返します。クライアントは、その応答を永久的なアカウント障害として扱うのではなく、すぐに再試行する必要があります。

アカウント作成と削除は catalog convergence より先に永続化されます。失敗または延期された catalog 処理は
保存済み mutation をロールバックせず、内部 provider/account/path/credential detail も返しません。削除した
account の selector binding は残るため、欠落中の exact route は fail closed し、同じ id の再追加で同じ selector が戻ります。

## クライアントの選択

通常の管理では、[ウェブダッシュボード](/guides/web-dashboard/) が最も安全なガイド付きワークフローを提供します。ヘッドレス ホストとオートメーションの場合は、対応する `ocx` コマンドを使用します。これらのコマンドは、これと同じライブ API を呼び出し、プロキシに到達できない場合、または操作が失敗した場合にゼロ以外の結果を返します。ダイレクト HTTP は、上記の正確なエンドポイント コントラクトを必要とする統合に最も役立ちます。
Loading
Loading