Summary
This is not working / wrong:
When a connected provider (e.g. DeepSeek) exposes a vision-capable model on its /models endpoint, OpenWork's model picker does not list it. In our case the DeepSeek provider serves deepseek-v4-flash, deepseek-v4-pro, and deepseek-v4-flash-vision-exp, but only flash and pro appeared in the picker — the vision model was missing entirely.
Additionally, even after manually registering the vision model in opencode.jsonc, the engine refuses to read images with the error "This model does not support image input" unless the model entry also declares modalities.input containing "image". Just naming a model "vision" is not enough, because the bundled model registry doesn't include it and the app has no UI path to add a model to an existing provider.
To Reproduce
- Connect DeepSeek as a provider via Settings → AI Providers with a valid API key.
- Confirm the API serves a vision model:
curl https://api.deepseek.com/v1/models → returns deepseek-v4-flash-vision-exp.
- Open the model picker for a session.
- Observe only
deepseek-v4-flash and deepseek-v4-pro are listed — the vision model is absent.
- Workaround: manually add the vision model to the deepseek provider in
opencode.jsonc.
- Attach an image and ask the agent to view it → error: "This model does not support image input".
- Only after adding
"modalities": { "input": ["text", "image"] } to the model entry and reloading the engine does image input actually work.
Expected behavior
- The model picker lists every model the connected provider exposes, including vision-capable models.
- A vision-capable model is recognized automatically (or enabled via an obvious UI control) without manual config edits.
Actual behavior
- The model picker is limited to a curated model registry compiled into the engine; models the provider serves but that aren't in that registry are hidden, with no UI way to add them.
- Image input is gated on a
modalities flag that must be set manually in config; without it, even a fundamentally vision-capable model is rejected with "This model does not support image input".
Environment
- OpenWork Desktop (bundled opencode engine)
- Provider: DeepSeek (OpenAI-compatible), API key stored by the app via auth.json.
Summary
This is not working / wrong:
When a connected provider (e.g. DeepSeek) exposes a vision-capable model on its
/modelsendpoint, OpenWork's model picker does not list it. In our case the DeepSeek provider servesdeepseek-v4-flash,deepseek-v4-pro, anddeepseek-v4-flash-vision-exp, but only flash and pro appeared in the picker — the vision model was missing entirely.Additionally, even after manually registering the vision model in
opencode.jsonc, the engine refuses to read images with the error "This model does not support image input" unless the model entry also declaresmodalities.inputcontaining"image". Just naming a model "vision" is not enough, because the bundled model registry doesn't include it and the app has no UI path to add a model to an existing provider.To Reproduce
curl https://api.deepseek.com/v1/models→ returnsdeepseek-v4-flash-vision-exp.deepseek-v4-flashanddeepseek-v4-proare listed — the vision model is absent.opencode.jsonc."modalities": { "input": ["text", "image"] }to the model entry and reloading the engine does image input actually work.Expected behavior
Actual behavior
modalitiesflag that must be set manually in config; without it, even a fundamentally vision-capable model is rejected with "This model does not support image input".Environment