You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`baseUrl`|`string`| 업스트림 API base URL. 고정 endpoint를 쓰는 대부분의 기본 제공 provider는 일치하지 않는 URL을 무시합니다. 새로 승격된 충돌 보호 API-key preset은 기존의 같은 이름 custom provider 목적지를 유지합니다. [고정 프로바이더 엔드포인트](#고정-프로바이더-엔드포인트)를 참조하세요. |
162
162
|`responsesPath?`|`string`|`key` 인증 `openai-responses` 요청에 사용할 선택적 상대 resource path. `/`로 시작해야 하며 URL scheme, query, fragment를 포함할 수 없습니다. 생략하면 기존 `/v1/responses` URL 구성을 유지합니다. |
|`apiKey?`|`string`| API 키 또는 요청 시점에 해석할 `${ENV_VAR}` / `$ENV_VAR` 참조. |
165
165
|`apiKeyTransport?`|`"x-api-key" \| "bearer"`| Anthropic API 키 헤더 방식입니다. 기본값은 네이티브 `x-api-key`이며, `Authorization: Bearer <key>`를 요구하는 호환 gateway에는 `"bearer"`를 설정합니다. key 인증 `anthropic` 프로바이더에서만 유효합니다. |
166
166
|`apiKeyPool?`|`ApiKeyPoolEntry[]`| 여러 키를 담는 pool. `apiKey`는 활성 항목을 반영합니다. 각 항목에는 `id`, `key`, 선택 `label`, 선택 숫자 `addedAt`이 있습니다. |
167
167
|`defaultModel?`|`string`| 명시적인 모델 없이 이 프로바이더를 선택했을 때 쓸 모델. |
168
168
|`models?`|`string[]`| seed/fallback 모델 목록. `liveModels`가 `false`이면 여기 있는 모델만 발견됩니다. |
169
-
|`liveModels?`|`boolean`| 시작/동기화 시 프로바이더의 실시간 `/models` 카탈로그를 가져옵니다(기본 `true`). `false`이면 설정된 `models`만 사용합니다. |
169
+
|`liveModels?`|`boolean`| 시작/동기화 시 프로바이더의 실시간 모델 카탈로그를 가져옵니다(기본 `true`). 기본 제공 preset은 registry의 신뢰된 URL·쿼리·필터를 사용할 수 있고, 사용자 지정 provider는 `${baseUrl}/models`가 기본입니다. `false`이면 설정된 `models`만 사용합니다. |
170
170
|`selectedModels?`|`string[]`| 모델 발견 뒤 적용할 카탈로그 allowlist. 비어 있지 않으면 해당 id만 Codex에 노출하고, 비어 있거나 생략하면 발견한 모델을 모두 노출합니다. |
171
171
|`contextWindow?`|`number`| 라우팅 카탈로그 항목에 표시할 프로바이더 단위 context-window cap. 실시간 metadata가 더 작으면 그대로 둡니다. |
172
172
|`modelContextWindows?`|`Record<string,number>`| 모델별 context-window cap. 일치하는 모델에서는 `contextWindow`보다 우선하며 더 작은 실시간 metadata를 올리지 않습니다. |
@@ -202,6 +202,29 @@ token 대신 쓸 수 있습니다. 모든 후보는 timing side channel을 막
202
202
|`desktopExecutor?`|`DesktopExecutorConfig`|**Cursor 전용.** 외부 computer-use/record-screen 명령. 필드는 아래에 설명합니다. |
203
203
|`unsafeAllowNativeLocalExec?`|`boolean`|**Cursor 어댑터 전용.** Cursor 서버가 지시한 로컬 `read` / `write` / `delete` / `ls` / `grep` / `shell` / `fetch` 실행을 허용하는 opt-in escape hatch. 기본 `false`라 원격 Cursor 메시지가 Codex 승인과 sandbox를 우회하지 못합니다. 아래 [Cursor 프로바이더](#cursor-프로바이더-adapter-cursor) 참조. |
204
204
205
+
### 고정 프로바이더 엔드포인트
206
+
207
+
라우팅은 adapter가 요청을 보기 전에 provider endpoint를 결정합니다. 대부분의 기본 제공 provider에서는
208
+
config의 `baseUrl`보다 registry endpoint가 우선합니다. 이 단계에서 설정 URL을 유지하는 경우는 네 가지입니다.
209
+
210
+
- override를 명시적으로 허용하는 provider: `ollama`, `vllm`, `lm-studio`, `litellm`, `qwen-cloud`,
211
+
`alibaba-token-plan-intl`.
212
+
- registry endpoint가 사용자가 채우는 template인 provider(예: `azure-openai`,
213
+
`cloudflare-ai-gateway`).
214
+
- 이름 충돌을 보호하는 새 고정 API-key preset. 기존의 같은 이름 custom provider가 다른 목적지를
215
+
가리키면 원래 목적지를 유지하며 key를 새 registry host로 보내지 않습니다.
216
+
- registry에 없고 사용자가 직접 정의한 provider.
217
+
218
+
그 뒤에도 adapter가 결정된 URL을 조정할 수 있습니다. 예를 들어 `kiro` adapter는 canonical
219
+
`runtime.{region}.kiro.dev` host에서 가져온 credential의 API region을 사용합니다. adapter별 규칙은
220
+
[Adapters](/ko/reference/adapters/)를 참조하세요.
221
+
222
+
라우팅이 설정된 `baseUrl`을 버리면 opencodex가 경고를 출력합니다. registry endpoint는 전체를 표시하고
223
+
설정 URL은 origin만 표시합니다. path는 credential 정보를 포함할 수 있으므로 기록하지 않습니다. 사용하지
224
+
않는 `baseUrl`을 제거하거나 목적 URL과 endpoint가 일치하는 provider를 선택하세요. 지역별 서비스에서는
225
+
올바른 항목을 사용해야 합니다. `alibaba-token-plan`은 베이징으로 고정되고,
226
+
`alibaba-token-plan-intl`은 국제 endpoint override를 허용합니다.
227
+
205
228
## Cursor 프로바이더 (`adapter: "cursor"`)
206
229
207
230
Cursor bridge는 실험적입니다. `ocx login cursor`를 실행한 뒤
@@ -274,6 +297,11 @@ OpenRouter에서 같은 모델을 제공하는 endpoint마다 prompt cache 지
274
297
일부 프로바이더는 실시간 모델 카탈로그가 매우 크거나 느립니다. Codex에 `models`로 고정한 모델만
275
298
보이게 하려면 `liveModels`를 `false`로 설정하세요.
276
299
300
+
실시간 discovery 응답이 4 MiB 또는 원시 모델 행 2,000개를 넘으면 캐시 전에 거부됩니다. 기본 제공
301
+
preset은 이 한도를 더 낮추고 혼합 카탈로그를 채팅 가능 행으로 필터링할 수 있습니다. 한도 초과 또는
Copy file name to clipboardExpand all lines: docs-site/src/content/docs/reference/configuration.md
+12-3Lines changed: 12 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -299,15 +299,15 @@ or bind the forward explicitly to loopback (`ssh -L 127.0.0.1:20100:localhost:10
299
299
| Field | Type | Meaning |
300
300
| --- | --- | --- |
301
301
|`adapter`|`string`| One of `openai-chat`, `openai-responses`, `anthropic`, `google`, `kiro`, `cursor`, `azure-openai` (or alias `azure`). |
302
-
|`baseUrl`|`string`| Upstream API base URL. Built-in providers with a fixed endpoint ignore it — see[Fixed provider endpoints](#fixed-provider-endpoints). |
302
+
|`baseUrl`|`string`| Upstream API base URL. Most built-in fixed endpoints ignore a mismatch; newly promoted collision-safe key presets preserve an older same-named custom destination. See[Fixed provider endpoints](#fixed-provider-endpoints). |
303
303
|`responsesPath?`|`string`| Optional relative resource path for key-auth `openai-responses` requests. It must start with `/` and contain no URL scheme, query, or fragment. When omitted, the adapter keeps its legacy `/v1/responses` URL construction. |
304
304
|`disabled?`|`boolean`| Keep the provider on disk but exclude it from routing and model/catalog listings. |
305
305
|`apiKey?`|`string`| API key, or an `${ENV_VAR}` / `$ENV_VAR` reference resolved at request time. |
306
306
|`apiKeyTransport?`|`"x-api-key" \| "bearer"`| Anthropic API-key header style. Defaults to native `x-api-key`; set `"bearer"` for compatible gateways that require `Authorization: Bearer <key>`. Valid only for key-auth `anthropic` providers. |
307
307
|`apiKeyPool?`|`ApiKeyPoolEntry[]`| Multi-key pool. `apiKey` mirrors the active entry; each item has `id`, `key`, optional `label`, and optional numeric `addedAt`. |
308
308
|`defaultModel?`|`string`| Model used when this provider is selected without an explicit model. |
309
309
|`models?`|`string[]`| Seed/fallback model list. When `liveModels` is `false`, these are the only discovered models. |
310
-
|`liveModels?`|`boolean`| Fetch the provider's live `/models` catalog on start/sync (default `true`). Set `false` to use only configured `models`. |
310
+
|`liveModels?`|`boolean`| Fetch the provider's live model catalog on start/sync (default `true`). Built-in presets may use a trusted registry URL/query/filter; custom providers default to `${baseUrl}/models`. Set `false` to use only configured `models`. |
311
311
|`selectedModels?`|`string[]`| Catalog allowlist applied after discovery. A non-empty list exposes only those ids to Codex; empty/omitted exposes all discovered models. |
312
312
|`contextWindow?`|`number`| Provider-wide Codex-visible context-window cap for routed catalog entries. Live metadata below this value is kept. |
313
313
|`modelContextWindows?`|`Record<string,number>`| Model-specific context-window caps. These override `contextWindow` for matching model ids and never raise smaller live metadata. |
@@ -351,13 +351,16 @@ or bind the forward explicitly to loopback (`ssh -L 127.0.0.1:20100:localhost:10
351
351
### Fixed provider endpoints
352
352
353
353
Routing resolves a provider's endpoint before any adapter sees it, and for most built-in
354
-
providers the registry's own endpoint wins over a `baseUrl` in your config. Three kinds of entry
354
+
providers the registry's own endpoint wins over a `baseUrl` in your config. Four kinds of entry
355
355
keep the configured URL at this stage:
356
356
357
357
- providers that opt into an override — `ollama`, `vllm`, `lm-studio`, `litellm`, `qwen-cloud`
358
358
and `alibaba-token-plan-intl`;
359
359
- providers whose registry endpoint is a template you fill in, such as `azure-openai` and
360
360
`cloudflare-ai-gateway`;
361
+
- newly promoted fixed API-key presets that protect name collisions: if an older same-named
362
+
custom provider points somewhere else, it remains custom instead of sending that key to the new
363
+
registry host;
361
364
- providers you define yourself, which are not in the registry at all.
362
365
363
366
Adapters may adjust the resolved URL afterward. The `kiro` adapter, for example, follows the API
@@ -521,6 +524,12 @@ want Codex to see only the models pinned in `models`:
521
524
When `liveModels` is `false` and `models` is empty or omitted, opencodex exposes no routed models
522
525
for that provider.
523
526
527
+
Live discovery rejects a response before caching when it exceeds 4 MiB or 2,000 raw model rows.
528
+
Built-in presets may lower either limit and filter mixed catalogs to chat-eligible rows. An
529
+
oversized or malformed response follows the normal stale/configured fallback path, while
530
+
ineligible rows are excluded. A valid result with zero eligible rows remains an authoritative
531
+
empty catalog; OpenCodex never silently truncates an over-limit response.
532
+
524
533
Use `selectedModels` for a different purpose: discovery still runs, but only the selected ids are
525
534
published to Codex's catalog and `/v1/models`. The dashboard's full model list remains available so
0 commit comments