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
I want to pick my own provider's model as the vision sidecar and web-search sidecar, from the same dropdowns where I select models — not be forced to use a native ChatGPT/Claude model. For example: route the main model through z.ai GLM / DeepSeek / Kimi / Qwen, and have the vision sidecar describe images with Qwen-VL (or whatever vision model I have quota on), and the web-search sidecar execute searches with a model from a provider I actually have available, instead of borrowing the ChatGPT or Anthropic account.
What prevents this today?
The sidecar backend is hardcoded to "openai" | "anthropic" and the model must be a native ChatGPT model:
src/types.ts: OcxVisionSidecarConfig.backend?: "openai" | "anthropic" and OcxWebSearchSidecarConfig.backend?: "openai" | "anthropic" (same in OcxClaudeDesktopProfile.webSearchSidecar/visionSidecar).
The management API rejects any other value with 400: src/server/management/config-routes.ts — "webSearch.backend must be openai, anthropic, or null" / "vision.backend must be openai, anthropic, or null".
src/web-search/index.tsresolveSidecarBackend() and src/vision/index.tsresolveVisionBackend() only resolve to "openai" / "anthropic".
So in the UI dropdowns the sidecar model list only shows native ChatGPT models, and there is no provider: selector to route the sidecar through any other configured provider.
What should OpenCodex do?
Allow the sidecar backend to reference any configured provider (by provider id), with model set to any model that provider exposes:
backend accepts a provider id (e.g. "zai", "deepseek", "moonshot", "qwen", ...) in addition to "openai" | "anthropic".
The vision/search sidecar dropdowns in the UI list models from all configured providers (with a capability hint: vision-capable for the vision sidecar), not just ChatGPT natives.
If the sidecar model is a text-only model, the existing graceful-degradation contract (e.g. [image omitted: …] marker) still applies.
Example usage or interface
// ocx config (sidecar settings)
{
"visionSidecar": {
"backend": "qwen", // any configured provider id, not just openai|anthropic"model": "qwen3-vl-plus"// model from that provider's catalog
},
"webSearchSidecar": {
"backend": "zai",
"model": "glm-5.2"
}
}
In the Dashboard sidecar settings, the backend/model dropdown would show e.g. openai · anthropic · zai · deepseek · moonshot · qwen … and the model list follows the selected provider.
Today I can only work around this by maintaining a ChatGPT/Claude account purely as the sidecar backend, even when my main provider has its own capable vision model.
Area
Proxy and routing · Dashboard · Catalog / models
What are you trying to accomplish?
I want to pick my own provider's model as the vision sidecar and web-search sidecar, from the same dropdowns where I select models — not be forced to use a native ChatGPT/Claude model. For example: route the main model through z.ai GLM / DeepSeek / Kimi / Qwen, and have the vision sidecar describe images with Qwen-VL (or whatever vision model I have quota on), and the web-search sidecar execute searches with a model from a provider I actually have available, instead of borrowing the ChatGPT or Anthropic account.
What prevents this today?
The sidecar
backendis hardcoded to"openai" | "anthropic"and the model must be a native ChatGPT model:src/types.ts:OcxVisionSidecarConfig.backend?: "openai" | "anthropic"andOcxWebSearchSidecarConfig.backend?: "openai" | "anthropic"(same inOcxClaudeDesktopProfile.webSearchSidecar/visionSidecar).src/server/management/config-routes.ts—"webSearch.backend must be openai, anthropic, or null"/"vision.backend must be openai, anthropic, or null".src/web-search/index.tsresolveSidecarBackend()andsrc/vision/index.tsresolveVisionBackend()only resolve to"openai"/"anthropic".So in the UI dropdowns the sidecar model list only shows native ChatGPT models, and there is no
provider:selector to route the sidecar through any other configured provider.What should OpenCodex do?
Allow the sidecar
backendto reference any configured provider (by provider id), withmodelset to any model that provider exposes:backendaccepts a provider id (e.g."zai","deepseek","moonshot","qwen", ...) in addition to"openai" | "anthropic".[image omitted: …]marker) still applies.Example usage or interface
In the Dashboard sidecar settings, the backend/model dropdown would show e.g.
openai · anthropic · zai · deepseek · moonshot · qwen …and the model list follows the selected provider.Alternatives or workarounds
Additional context
Related but not identical existing issues:
openai|anthropic-only constraint (as a bug source), focused on 499/502 failures when those accounts are exhausted.visionSidecar.model, defaultgpt-5.2).