What problem are you trying to solve?
Running Open Design against a local Ollama server (BYOK → Ollama provider pointed at a local endpoint), the Fetch models button is disabled and model discovery returns an unsupported_ollama result. I can't auto-populate the models I actually have installed, so I have to know and type each model id by hand.
Every other supported protocol (OpenAI, Anthropic, Google, AIHubMix, SenseAudio) can fetch its catalogue. Ollama is the one gap, even though it exposes a discovery endpoint (GET /api/tags) that lists locally-pulled models. So the capability exists on the provider side; the daemon just doesn't call it.
Related: I opened #6076, which lets you at least type a custom model id in the onboarding BYOK picker. Discovery would remove the guesswork entirely.
Describe the solution you'd like
Wire up the daemon's provider-model discovery for the ollama protocol in apps/daemon/src/integrations/provider-models.ts:
providerModelsUrl: GET {baseUrl}/api/tags
- an
extractOllamaModels parser for the { models: [{ name, ... }] } response shape → { id, label }
- headers: none needed for local Ollama (unauthenticated); optional bearer if a key is supplied
Then remove the apiProtocol === 'ollama' short-circuits in the front-end gates (EntryShell.tsx, SettingsDialog.tsx, InlineModelSwitcher.tsx, AvatarMenu.tsx) so Fetch models lights up and populates the installed models.
Design question I'd like to settle before coding
The protocol is labeled "Ollama Cloud" and defaults to ollama.com, but /api/tags is a local Ollama endpoint. I suspect discovery was stubbed on purpose because the cloud endpoint behaves differently. Before writing a PR I'd like to agree on the boundary:
- Option A: only attempt
/api/tags when the base URL is a loopback/local host, and keep the current "not available" message for genuine cloud endpoints.
- Option B: always attempt it and let it fail gracefully for cloud.
I lean toward A. It respects what looks like a deliberate choice and avoids confusing people who really are pointed at the cloud. Does that match your intent, or is there a reason discovery was left off that I'm missing?
Alternatives you've considered
Additional context
Related PR: #6076 (custom model entry in the onboarding BYOK picker).
Would you be willing to contribute a PR?
Yes, with guidance from a maintainer.
What problem are you trying to solve?
Running Open Design against a local Ollama server (BYOK → Ollama provider pointed at a local endpoint), the Fetch models button is disabled and model discovery returns an
unsupported_ollamaresult. I can't auto-populate the models I actually have installed, so I have to know and type each model id by hand.Every other supported protocol (OpenAI, Anthropic, Google, AIHubMix, SenseAudio) can fetch its catalogue. Ollama is the one gap, even though it exposes a discovery endpoint (
GET /api/tags) that lists locally-pulled models. So the capability exists on the provider side; the daemon just doesn't call it.Related: I opened #6076, which lets you at least type a custom model id in the onboarding BYOK picker. Discovery would remove the guesswork entirely.
Describe the solution you'd like
Wire up the daemon's provider-model discovery for the
ollamaprotocol inapps/daemon/src/integrations/provider-models.ts:providerModelsUrl:GET {baseUrl}/api/tagsextractOllamaModelsparser for the{ models: [{ name, ... }] }response shape →{ id, label }Then remove the
apiProtocol === 'ollama'short-circuits in the front-end gates (EntryShell.tsx,SettingsDialog.tsx,InlineModelSwitcher.tsx,AvatarMenu.tsx) so Fetch models lights up and populates the installed models.Design question I'd like to settle before coding
The protocol is labeled "Ollama Cloud" and defaults to
ollama.com, but/api/tagsis a local Ollama endpoint. I suspect discovery was stubbed on purpose because the cloud endpoint behaves differently. Before writing a PR I'd like to agree on the boundary:/api/tagswhen the base URL is a loopback/local host, and keep the current "not available" message for genuine cloud endpoints.I lean toward A. It respects what looks like a deliberate choice and avoids confusing people who really are pointed at the cloud. Does that match your intent, or is there a reason discovery was left off that I'm missing?
Alternatives you've considered
Additional context
Related PR: #6076 (custom model entry in the onboarding BYOK picker).
Would you be willing to contribute a PR?
Yes, with guidance from a maintainer.