Hidden and retired providers
Distinguish hidden cards, risk notices, unsupported executors, and retired model errors.
Provider availability has several states. Existing saved credentials can remain even when the add card is hidden. Instead a provider is retired in one of three ways, and each one behaves differently.
| State | Can add new | Existing connections route | How you notice |
|---|---|---|---|
| Hidden | No | When its executor is available | The card is gone from the Providers page |
| Risk notice | Yes | Yes | A warning banner on the provider page |
| Not runnable yet | Yes | No | Requests return HTTP 501 |
Hidden providers
A registry entry with hidden: true drops out of the Providers page, the media providers list, and the model picker's no-auth list. POST /api/providers answers Invalid provider, the same as for an id that does not exist. A connection saved before the provider was hidden remains stored and still shows in GET /api/providers. Routing also requires an implemented executor and valid credentials. The card for it no longer appears in the dashboard list, so manage or delete it through the management API (/api/providers/{id}).
Hidden in this build:
| Id | Why |
|---|---|
qwen, iflow | Deprecated; hidden since the v0.4.49 changelog entry |
ollama | Ollama Cloud was hidden; ollama-local is unaffected |
dify | Needs a per-application endpoint the connection form cannot collect yet |
databricks | Needs a per-workspace serving endpoint the form cannot store yet |
factory | Waiting on a correct gateway route |
zed, codex-cloud | Metadata-only rows with no transport and no models |
kimi-coding, gitlab, mmf | No reason recorded in the registry |
tortoise, coqui, playht, cartesia | Speech providers; no reason recorded |
Use the catalog for registry IDs. Hidden status and runnable support are separate from model counts.
Some hidden ids have a visible sibling. Use kimi-coding-apikey or kimi for Kimi, gitlab-duo for GitLab Duo, and ollama-local for a local Ollama.
Providers with a risk notice
These stay addable, but the provider page shows a banner saying the provider uses a subscription or OAuth session that was not licensed for router use, and the account may be restricted:
claude, codex, gemini-cli, antigravity, github, kiro, qoder-cn.
This warning does not disable routing, refresh, or quota handling. Per-provider pages: Claude Code, OpenAI Codex, Antigravity, Kiro.
Registry ids with no executor yet
Some ids are in the registry so their card, auth hint, and model list exist, but the executor has not been ported. Any request returns HTTP 501:
{
"error": {
"type": "provider_port_pending",
"message": "...",
"provider": "...",
"sourceFiles": ["..."]
}
}The current blocked set includes adapta-web, huggingchat, muse-spark-web, suno, t3-web, udio, yuanbao-web, and devin. ChatGPT Web is implemented and is not in that set. It is mostly web cookie providers, plus devin, which has no chat transport. Saving a credential does not enable inference. Choose an implemented provider until a release adds the required transport.
Retired models
Models retire more often than providers. When a catalog model passes its shutdown date, requests for it, and for any alias that resolves to it, get HTTP 410 model_shutdown. A deprecated model that has not shut down yet only logs a warning. Swap the id in your combos or client config for one from GET /v1/models.
For a hidden card, use an available sibling listed above or manage an existing connection through the management API. For HTTP 501, change providers. For HTTP 410, replace the retired model in aliases, combos, and client settings, then verify a new request.