Use case
Controllers with enabled, API-key-configured external OpenAI-compatible providers currently expose those providers' models only through GET /studio/provider-models. The model picker discovers models through GET /v1/models, so models served by an external provider never appear in the picker even when the provider is configured and reachable.
Users who route chat/model selection through a remote controller with a connected external provider have no way to see or select those upstream models from the UI.
Expected behavior
GET /v1/models should also return models from enabled, API-key-configured external providers so they show up in the model picker alongside the locally-discovered recipe/active-inference entries.
Proposed solution
Append provider-discovered models to the /v1/models response using qualified IDs (<provider-id>/<upstream-model-id>), with per-provider discovery failures swallowed so one unreachable provider never fails the whole endpoint. The proxy already parses the qualified ID and rewrites the upstream request model, so no proxy changes are needed.
Use case
Controllers with enabled, API-key-configured external OpenAI-compatible providers currently expose those providers' models only through
GET /studio/provider-models. The model picker discovers models throughGET /v1/models, so models served by an external provider never appear in the picker even when the provider is configured and reachable.Users who route chat/model selection through a remote controller with a connected external provider have no way to see or select those upstream models from the UI.
Expected behavior
GET /v1/modelsshould also return models from enabled, API-key-configured external providers so they show up in the model picker alongside the locally-discovered recipe/active-inference entries.Proposed solution
Append provider-discovered models to the
/v1/modelsresponse using qualified IDs (<provider-id>/<upstream-model-id>), with per-provider discovery failures swallowed so one unreachable provider never fails the whole endpoint. The proxy already parses the qualified ID and rewrites the upstream request model, so no proxy changes are needed.