Area
Dashboard / vision sidecar configuration
Current status
This request is partially implemented.
The Dashboard now exposes the main Vision sidecar routing controls:
- vision model selection;
- backend-aware model selection;
- model-aware reasoning effort;
- filtering so known text-only models are not offered as vision describers.
The current implementation was completed through the vision-sidecar stack:
The remaining work is the configuration that still requires editing config.json manually.
Remaining problem
The current Dashboard Vision sidecar card does not expose all of the existing visionSidecar configuration.
In particular, users still cannot manage these settings from the Dashboard:
{
"visionSidecar": {
"enabled": true,
"maxDescriptionsPerTurn": 8,
"timeoutMs": 45000
}
}
maxDescriptionsPerTurn is already supported by /api/sidecar-settings, but it is not surfaced in the Dashboard.
enabled and timeoutMs are supported by the runtime/config contract but are not currently exposed by the sidecar management API used by the Dashboard.
The current documentation therefore still requires users to edit config.json to disable the Vision sidecar.
What OpenCodex should do
Complete the existing Dashboard Vision sidecar configuration surface.
1. Enable / disable control
Add an explicit toggle:
Vision sidecar [ On / Off ]
It should persist:
Requirements:
- preserve the current default behavior for existing users;
- disabling must prevent new Vision sidecar descriptions;
- re-enabling must preserve the user's existing model, backend, reasoning, timeout, and limit settings;
- disabling should not delete the configuration.
2. Description limit
Expose:
visionSidecar.maxDescriptionsPerTurn
as a positive-integer control.
The management API already understands this field, so the Dashboard should hydrate, edit, save, and preserve it.
3. Timeout
Expose:
through /api/sidecar-settings and the Dashboard.
The UI should validate it using the same runtime/config bounds rather than inventing a second contract.
4. Preserve the existing model controls
Do not regress the already-landed behavior:
- eligible Vision model picker;
- backend provenance;
- OpenAI / Anthropic routing;
- model-aware reasoning effort;
- support for custom/unknown model IDs where the server cannot prove the model is text-only.
Example interface
Vision sidecar [ Enabled ]
Model
[gpt-5.6-luna ▾]
Reasoning
[medium ▾]
Advanced
Maximum descriptions per turn [ 8 ]
Timeout [ 45000 ] ms
The exact layout can follow the existing Dashboard settings patterns.
Management API
GET /api/sidecar-settings should return enough state for the Dashboard to render the complete configuration, including:
{
"vision": {
"enabled": true,
"model": "gpt-5.6-luna",
"backend": "openai",
"reasoning": "medium",
"maxDescriptionsPerTurn": 8,
"timeoutMs": 45000
}
}
PUT /api/sidecar-settings should allow updating the same fields with strict validation.
Partial updates must preserve fields that were not supplied.
Acceptance criteria
Relationship to the original request
The original broad request to expose the Vision sidecar in the web UI is mostly complete.
This issue now tracks only the remaining controls that still require manual configuration.
If additional Vision-sidecar features are proposed later, they should be tracked separately rather than expanding this issue again.
Checks
Area
Dashboard / vision sidecar configuration
Current status
This request is partially implemented.
The Dashboard now exposes the main Vision sidecar routing controls:
The current implementation was completed through the vision-sidecar stack:
The remaining work is the configuration that still requires editing
config.jsonmanually.Remaining problem
The current Dashboard Vision sidecar card does not expose all of the existing
visionSidecarconfiguration.In particular, users still cannot manage these settings from the Dashboard:
{ "visionSidecar": { "enabled": true, "maxDescriptionsPerTurn": 8, "timeoutMs": 45000 } }maxDescriptionsPerTurnis already supported by/api/sidecar-settings, but it is not surfaced in the Dashboard.enabledandtimeoutMsare supported by the runtime/config contract but are not currently exposed by the sidecar management API used by the Dashboard.The current documentation therefore still requires users to edit
config.jsonto disable the Vision sidecar.What OpenCodex should do
Complete the existing Dashboard Vision sidecar configuration surface.
1. Enable / disable control
Add an explicit toggle:
It should persist:
visionSidecar.enabledRequirements:
2. Description limit
Expose:
visionSidecar.maxDescriptionsPerTurnas a positive-integer control.
The management API already understands this field, so the Dashboard should hydrate, edit, save, and preserve it.
3. Timeout
Expose:
visionSidecar.timeoutMsthrough
/api/sidecar-settingsand the Dashboard.The UI should validate it using the same runtime/config bounds rather than inventing a second contract.
4. Preserve the existing model controls
Do not regress the already-landed behavior:
Example interface
The exact layout can follow the existing Dashboard settings patterns.
Management API
GET /api/sidecar-settingsshould return enough state for the Dashboard to render the complete configuration, including:{ "vision": { "enabled": true, "model": "gpt-5.6-luna", "backend": "openai", "reasoning": "medium", "maxDescriptionsPerTurn": 8, "timeoutMs": 45000 } }PUT /api/sidecar-settingsshould allow updating the same fields with strict validation.Partial updates must preserve fields that were not supplied.
Acceptance criteria
maxDescriptionsPerTurncan be configured from the Dashboard.timeoutMscan be configured from the Dashboard./api/sidecar-settingsround-trips all Dashboard-managed Vision settings.Relationship to the original request
The original broad request to expose the Vision sidecar in the web UI is mostly complete.
This issue now tracks only the remaining controls that still require manual configuration.
If additional Vision-sidecar features are proposed later, they should be tracked separately rather than expanding this issue again.
Checks