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
Provider adapters, provider registry, model discovery, CLI, dashboard, and documentation.
What are you trying to accomplish?
Add a coherent batch of first-class OpenAI-compatible inference providers so users can select them in ocx init or the dashboard, store an API key, discover usable chat models, and route Codex or Claude Code requests through the normal provider/model interface.
Together AI is already a canonical provider on the current main and dev branches, so it should be treated as the baseline for this work rather than added again.
I intend to implement this batch. If the scope is acceptable, please assign this issue to @olddonkey.
What prevents this today?
Most of the proposed services are absent from PROVIDER_REGISTRY. Several are already documented in the intentionally inert FREE_PROVIDER_DIRECTORY, but directory entries are not canonical runtime providers and cannot be selected as maintained presets.
Users can configure these services through the custom OpenAI-compatible flow, but every user must know the correct base URL, authentication, model-discovery behavior, and provider-specific limitations.
Blindly copying every candidate into the runtime registry would also create two correctness and safety problems:
Model discovery currently assumes ${baseUrl}/models, reads the entire response, and exposes every valid data[].id. Some providers return embeddings, image, audio, or video models alongside chat models.
Promoting a previously non-canonical id can cause an existing same-named custom provider to be canonicalized onto a new host. A persisted API key must never be silently retargeted to a different destination.
A credential-free probe on 2026-07-27 confirmed that all proposed model endpoints are live and either return an OpenAI-style model list or the expected 401 authentication boundary. Existing issues and pull requests were searched for every provider below; no duplicate provider request was found.
What should OpenCodex do?
Promote the following verified providers to first-class API-key presets.
Provider id
Service
OpenAI-compatible base URL
Discovery notes
baseten
Baseten Model APIs
https://inference.baseten.co/v1
Authenticated GET /v1/models; managed Model APIs only
deepinfra
DeepInfra
https://api.deepinfra.com/v1/openai
Public model list currently has 172 rows; filter to the 92 rows tagged chat
sambanova
SambaNova Cloud
https://api.sambanova.ai/v1
Public OpenAI list currently has 6 models
nebius
Nebius Token Factory
https://api.tokenfactory.nebius.com/v1
Authenticated OpenAI GET /v1/models; use the current Token Factory endpoint, not the retired AI Studio host
novita
Novita AI
https://api.novita.ai/openai/v1
Public list currently has 142 rows and all report model_type: chat
chutes
Chutes
https://llm.chutes.ai/v1
Public list currently has 14 models; 12 advertise tool support
hyperbolic
Hyperbolic Inference API
https://api.hyperbolic.xyz/v1
Authenticated model list; official docs cover streaming and function calling
digitalocean
DigitalOcean Serverless Inference
https://inference.do-ai.run/v1
Authenticated model list; scope is the shared serverless endpoint, not per-agent or dedicated hosts
scaleway
Scaleway Generative APIs
https://api.scaleway.ai/v1
Authenticated OpenAI model list; chat, Responses, tools, and multimodal features are documented
nscale
Nscale Serverless Inference
https://inference.api.nscale.com/v1
Authenticated model list; filter to chat-compatible models
vultr
Vultr Serverless Inference
https://api.vultrinference.com/v1
Authenticated OpenAI model list; preserve documented normalizer model ids and tool-call behavior
featherless
Featherless AI
https://api.featherless.ai/v1
The unfiltered endpoint currently returns about 21,500 rows; use a bounded chat/tool-capable query rather than importing the whole catalog
All entries should initially use:
Adapter: openai-chat
Authentication: Authorization: Bearer <key>
Official API-key/dashboard URL
Provider-native model ids preserved end to end, including embedded / characters
The existing flattened Codex alias form for namespaced model ids, while retaining raw full-slash routing
Discovery and safety requirements
Add an explicit, registry-derived model-discovery URL/query mechanism (or an equivalent safe design) instead of assuming every provider can use an unqualified ${baseUrl}/models.
Filter discovery to models that can serve the configured chat path. Do not expose embedding, reranking, image, audio, or video-only ids in the Codex model catalog.
Bound the model response body and accepted row count before parsing/caching so a large or hostile upstream catalog cannot cause unbounded memory or catalog growth.
Keep provider discovery failure behavior unchanged: cached/static degradation, observable status, and no credential logging.
Do not automatically turn every free-directory row into a canonical provider. Promotion must remain an explicit allowlist.
Preserve the destination of existing same-named custom providers, or provide an explicit safe migration. Adding a canonical id must never silently send a stored key to a newly registered host.
Keep Baseten dedicated Truss model/chain predict endpoints out of scope; their hosts, Api-Key authentication, and arbitrary schemas are different from Baseten Model APIs.
Keep DigitalOcean agent-specific and dedicated endpoint hosts out of scope for this preset.
User-facing behavior
Each promoted provider should:
appear consistently in ocx init, the dashboard provider catalog, key-login flow, and provider workspace;
link to its official API-key management page;
validate a key against the provider's safe model-discovery endpoint;
sync only eligible chat models into the OpenCodex/Codex catalog;
support streaming, tool calls, structured output, cancellation, usage, and upstream error propagation where the selected upstream model implements them;
document material provider-specific limitations without claiming unsupported capabilities.
Verification
Add focused coverage for:
registry id uniqueness and EXPECTED_KEY_PROVIDER_IDS parity;
derived CLI, key-login, and dashboard presets;
provider-specific model URLs and authentication headers;
mixed-catalog filtering;
bounded response/model counts;
namespaced model-id routing and flattened aliases;
ocx init
# Select one of the new providers, paste its API key, and sync eligible models.
codex -m "baseten/deepseek-ai-DeepSeek-V4-Pro" \
"Review this repository and propose the smallest safe fix."
codex -m "chutes/Qwen-Qwen3-32B-TEE" \
"Run the tests and diagnose the first failure."
The raw full-slash selector should continue to work as well:
codex -m "chutes/Qwen/Qwen3-32B-TEE""Inspect the routing code."
Users can continue adding each service as a custom OpenAI-compatible provider. That covers the basic wire protocol but provides no maintained preset, key link, safe provider-specific discovery, or consistent documentation.
Opening one issue per provider would make each item smaller, but most implementation and review work is shared: registry derivation, model-list filtering, response bounds, slug routing, migration safety, tests, and docs. One umbrella issue with reviewable phases or pull requests makes the shared contract explicit while still allowing commits to be grouped by provider.
Providers that need a materially different transport or discovery contract should remain separate follow-ups. Examples include Perplexity's Agent/Responses API, GitHub Models' separate catalog endpoint and API-version header, Clarifai's URL-shaped model ids, AWS Bedrock's regional/authentication requirements, and Replicate's arbitrary prediction schemas.
Area
Provider adapters, provider registry, model discovery, CLI, dashboard, and documentation.
What are you trying to accomplish?
Add a coherent batch of first-class OpenAI-compatible inference providers so users can select them in
ocx initor the dashboard, store an API key, discover usable chat models, and route Codex or Claude Code requests through the normalprovider/modelinterface.Together AI is already a canonical provider on the current
mainanddevbranches, so it should be treated as the baseline for this work rather than added again.I intend to implement this batch. If the scope is acceptable, please assign this issue to @olddonkey.
What prevents this today?
Most of the proposed services are absent from
PROVIDER_REGISTRY. Several are already documented in the intentionally inertFREE_PROVIDER_DIRECTORY, but directory entries are not canonical runtime providers and cannot be selected as maintained presets.Users can configure these services through the custom OpenAI-compatible flow, but every user must know the correct base URL, authentication, model-discovery behavior, and provider-specific limitations.
Blindly copying every candidate into the runtime registry would also create two correctness and safety problems:
${baseUrl}/models, reads the entire response, and exposes every validdata[].id. Some providers return embeddings, image, audio, or video models alongside chat models.A credential-free probe on 2026-07-27 confirmed that all proposed model endpoints are live and either return an OpenAI-style model list or the expected
401authentication boundary. Existing issues and pull requests were searched for every provider below; no duplicate provider request was found.What should OpenCodex do?
Promote the following verified providers to first-class API-key presets.
basetenhttps://inference.baseten.co/v1GET /v1/models; managed Model APIs onlydeepinfrahttps://api.deepinfra.com/v1/openaichatsambanovahttps://api.sambanova.ai/v1nebiushttps://api.tokenfactory.nebius.com/v1GET /v1/models; use the current Token Factory endpoint, not the retired AI Studio hostnovitahttps://api.novita.ai/openai/v1model_type: chatchuteshttps://llm.chutes.ai/v1hyperbolichttps://api.hyperbolic.xyz/v1digitaloceanhttps://inference.do-ai.run/v1scalewayhttps://api.scaleway.ai/v1nscalehttps://inference.api.nscale.com/v1vultrhttps://api.vultrinference.com/v1featherlesshttps://api.featherless.ai/v1All entries should initially use:
openai-chatAuthorization: Bearer <key>/charactersDiscovery and safety requirements
${baseUrl}/models.context_length,max_model_len,context_size, input modalities, and tool/reasoning capability arrays. Full per-model capability UX remains related to [Feature]: GUI fields (or a built-in registry) for per-model capability metadata on relay providers #485.predictendpoints out of scope; their hosts,Api-Keyauthentication, and arbitrary schemas are different from Baseten Model APIs.User-facing behavior
Each promoted provider should:
ocx init, the dashboard provider catalog, key-login flow, and provider workspace;Verification
Add focused coverage for:
EXPECTED_KEY_PROVIDER_IDSparity;Normal feature pull requests should target
dev.Example usage or interface
The raw full-slash selector should continue to work as well:
Representative configuration:
{ "defaultProvider": "sambanova", "providers": { "sambanova": { "adapter": "openai-chat", "baseUrl": "https://api.sambanova.ai/v1", "authMode": "key", "apiKey": "${SAMBANOVA_API_KEY}", "liveModels": true } } }Alternatives or workarounds
Users can continue adding each service as a custom OpenAI-compatible provider. That covers the basic wire protocol but provides no maintained preset, key link, safe provider-specific discovery, or consistent documentation.
Opening one issue per provider would make each item smaller, but most implementation and review work is shared: registry derivation, model-list filtering, response bounds, slug routing, migration safety, tests, and docs. One umbrella issue with reviewable phases or pull requests makes the shared contract explicit while still allowing commits to be grouped by provider.
Providers that need a materially different transport or discovery contract should remain separate follow-ups. Examples include Perplexity's Agent/Responses API, GitHub Models' separate catalog endpoint and API-version header, Clarifai's URL-shaped model ids, AWS Bedrock's regional/authentication requirements, and Replicate's arbitrary prediction schemas.
Additional context
Canonical/inert directory precedent:
FREE_PROVIDER_DIRECTORYas intentionally inert metadata.Official provider documentation:
The current
upstream/devbranch was also checked and contains none of these canonical provider entries.Checks