Add Ollama Cloud provider
Configure Ollama Cloud as an OpenAI-compatible chat provider with the hosted API base and model listing endpoint.\n\nAdd a focused provider config test so the integration stays key-required and keeps the expected /models endpoint.
Alessandro committed
May 9, 2026 at 06:46 UTC
0395778fd7273ca48d100c29fe6960479eb1390e
2 files changed
+21
conf/model_providers.yaml
+7
@@ -100,6 +100,13 @@ chat:
100
endpoint_url: "/api/tags"
101
format: "ollama"
102
default_base: "http://host.docker.internal:11434"
103
+ ollama_cloud:
104
+ name: Ollama Cloud
105
+ litellm_provider: openai
106
+ models_list:
107
+ endpoint_url: "/models"
108
+ kwargs:
109
+ api_base: https://ollama.com/v1
110
openai:
111
name: OpenAI
112
litellm_provider: openai
tests/test_model_config_api_keys.py
+14
@@ -12,6 +12,7 @@ if str(PROJECT_ROOT) not in sys.path:
12
sys.path.insert(0, str(PROJECT_ROOT))
13
14
sys.modules["giturlparse"] = types.SimpleNamespace(parse=lambda *args, **kwargs: None)
15
+sys.modules["whisper"] = types.SimpleNamespace(load_model=lambda *args, **kwargs: None)
16
17
18
class _DummyObserver:
@@ -115,3 +116,16 @@ def test_model_config_frontend_tracks_inline_api_key_edits():
116
assert '@input="$store.modelConfig.setApiKeyValue(_prov, $el.value)"' in config_content
117
assert "persistAllDirtyApiKeys()" in modal_content
118
assert "$store.modelConfig.resetApiKeyDrafts();" in modal_content
119
+
120
+
121
+def test_ollama_cloud_provider_config_requires_key_and_base_url():
122
+ import yaml
123
+
124
+ provider_path = PROJECT_ROOT / "conf/model_providers.yaml"
125
+ provider_config = yaml.safe_load(provider_path.read_text(encoding="utf-8"))
126
+ ollama_cloud = provider_config["chat"]["ollama_cloud"]
127
+
128
+ assert ollama_cloud["name"] == "Ollama Cloud"
129
+ assert ollama_cloud["kwargs"]["api_base"] == "https://ollama.com/v1"
130
+ assert ollama_cloud["models_list"]["endpoint_url"] == "/models"
131
+ assert "api_key_mode" not in ollama_cloud