Add Cerebras model provider

Configure Cerebras as a native LiteLLM provider using Chat Completions and its live model catalog. Expose Cerebras in onboarding with API-key guidance, a production default model, and a bundled logo, with focused provider and UI coverage.

Alessandro committed Jul 25, 2026 at 23:15 UTC ac5a35e5614a0829856e11118dd1dba92f6d8ebe
5 files changed +54 -1
conf/model_providers.yaml
+8
@@ -42,6 +42,14 @@ chat:
42 endpoint_url: "https://api.anthropic.com/v1/models"
43 params:
44 limit: "1000"
45 + cerebras:
46 + name: Cerebras
47 + litellm_provider: cerebras
48 + models_list:
49 + endpoint_url: "/models"
50 + kwargs:
51 + a0_api_mode: chat
52 + api_base: https://api.cerebras.ai/v1
53 cometapi:
54 name: CometAPI
55 litellm_provider: cometapi
plugins/_onboarding/webui/assets/provider-logos/cerebras.svg new
+1
@@ -0,0 +1 @@
1 +<svg fill="currentColor" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Cerebras</title><path clip-rule="evenodd" d="M14.121 2.701a9.299 9.299 0 000 18.598V22.7c-5.91 0-10.7-4.791-10.7-10.701S8.21 1.299 14.12 1.299V2.7zm4.752 3.677A7.353 7.353 0 109.42 17.643l-.901 1.074a8.754 8.754 0 01-1.08-12.334 8.755 8.755 0 0112.335-1.08l-.901 1.075zm-2.255.844a5.407 5.407 0 00-5.048 9.563l-.656 1.24a6.81 6.81 0 016.358-12.043l-.654 1.24zM14.12 8.539a3.46 3.46 0 100 6.922v1.402a4.863 4.863 0 010-9.726v1.402z" fill="#F15A29" fill-rule="evenodd"></path><path d="M15.407 10.836a2.24 2.24 0 00-.51-.409 1.084 1.084 0 00-.544-.152c-.255 0-.483.047-.684.14a1.58 1.58 0 00-.84.912c-.074.203-.11.416-.11.631 0 .218.036.43.11.631a1.594 1.594 0 00.84.913c.2.093.43.14.684.14.216 0 .417-.046.602-.135.188-.09.35-.225.475-.392l.928 1.006c-.14.14-.3.261-.482.363a3.367 3.367 0 01-1.083.38c-.17.026-.317.04-.44.04a3.315 3.315 0 01-1.182-.21 2.825 2.825 0 01-.961-.597 2.816 2.816 0 01-.644-.929 2.987 2.987 0 01-.238-1.21c0-.444.08-.847.238-1.21.15-.35.368-.666.643-.929.278-.261.605-.464.962-.596a3.315 3.315 0 011.182-.21c.355 0 .712.068 1.072.204.361.138.685.36.944.649l-.962.97z"></path></svg>
plugins/_onboarding/webui/onboarding-providers.js
+12
@@ -16,6 +16,7 @@ export const MORE_CLOUD_PROVIDER_IDS = [
16 "ollama_cloud",
17 "bedrock",
18 "groq",
19 + "cerebras",
20 "xai",
21 "moonshot",
22 "nebius",
@@ -63,6 +64,17 @@ export const ONBOARDING_PROVIDER_OVERRIDES = {
64 model_list_autoload: false,
65 short_description: "Enterprise access through AWS.",
66 },
67 + cerebras: {
68 + logo: "/plugins/_onboarding/webui/assets/provider-logos/cerebras.svg",
69 + setup_url: "https://cloud.cerebras.ai/",
70 + api_key_url: "https://cloud.cerebras.ai/",
71 + docs_url: "https://inference-docs.cerebras.ai/quickstart",
72 + default_chat_model: "gpt-oss-120b",
73 + default_utility_model: "gpt-oss-120b",
74 + api_key_mode: "required",
75 + model_list_autoload: true,
76 + short_description: "High-speed inference on Cerebras hardware.",
77 + },
78 cometapi: {
79 logo: "/plugins/_onboarding/webui/assets/provider-logos/cometapi.ico",
80 setup_url: "https://www.cometapi.com/",
tests/test_model_config_api_keys.py
+27
@@ -308,6 +308,33 @@ def test_ollama_cloud_provider_config_requires_key_and_base_url():
308 assert "api_key_mode" not in ollama_cloud
309
310
311 +def test_cerebras_provider_uses_chat_completions_and_live_model_catalog(monkeypatch):
312 + import yaml
313 +
314 + from plugins._model_config.helpers import model_config
315 +
316 + monkeypatch.setattr(models, "get_api_key", lambda provider: "test-key")
317 +
318 + provider_path = PROJECT_ROOT / "conf/model_providers.yaml"
319 + provider_config = yaml.safe_load(provider_path.read_text(encoding="utf-8"))
320 + cerebras = provider_config["chat"]["cerebras"]
321 +
322 + assert cerebras["name"] == "Cerebras"
323 + assert cerebras["litellm_provider"] == "cerebras"
324 + assert cerebras["models_list"]["endpoint_url"] == "/models"
325 + assert cerebras["kwargs"] == {
326 + "a0_api_mode": "chat",
327 + "api_base": "https://api.cerebras.ai/v1",
328 + }
329 + assert model_config.provider_requires_api_key("cerebras") is True
330 +
331 + model = models.get_chat_model("cerebras", "gpt-oss-120b")
332 + assert model.model_name == "cerebras/gpt-oss-120b"
333 + assert model.kwargs["a0_api_mode"] == "chat"
334 + assert model.kwargs["api_base"] == "https://api.cerebras.ai/v1"
335 + assert model.kwargs["api_key"] == "test-key"
336 +
337 +
338 def test_direct_venice_chat_provider_defaults_to_chat_completions(monkeypatch):
339 import yaml
340
tests/test_onboarding_static.py
+6 -1
@@ -105,6 +105,9 @@ def test_onboarding_provider_grid_names_are_present_in_metadata():
105 assert 'default_api_base: "http://host.docker.internal:8000/v1"' in provider_ui
106 assert 'logo: "/plugins/_onboarding/webui/assets/provider-logos/vllm.svg"' in provider_ui
107 assert 'docs_url: "https://docs.vllm.ai/en/stable/serving/online_serving/"' in provider_ui
108 + assert 'logo: "/plugins/_onboarding/webui/assets/provider-logos/cerebras.svg"' in provider_ui
109 + assert 'docs_url: "https://inference-docs.cerebras.ai/quickstart"' in provider_ui
110 + assert 'default_chat_model: "gpt-oss-120b"' in provider_ui
111 assert 'docs_url: ""' in provider_ui
112 assert "api_key_mode: none" in model_metadata
113 assert "api_key_mode: optional" in model_metadata
@@ -138,7 +141,7 @@ def test_onboarding_provider_grid_names_are_present_in_metadata():
141 ]:
142 assert name in provider_yaml + provider_ui
143
141 - for name in ["Ollama Cloud", "AWS Bedrock", "Groq"]:
144 + for name in ["Ollama Cloud", "AWS Bedrock", "Groq", "Cerebras"]:
145 assert name in provider_yaml + provider_ui
146
147 for forbidden in [
@@ -163,6 +166,7 @@ def test_onboarding_provider_grid_names_are_present_in_metadata():
166 "groq.svg",
167 "sambanova.png",
168 "cometapi.ico",
169 + "cerebras.svg",
170 "github-copilot.svg",
171 "llama-cpp.svg",
172 "zai-logo.svg",
@@ -172,6 +176,7 @@ def test_onboarding_provider_grid_names_are_present_in_metadata():
176 assert logo in provider_ui
177
178 assert (PROJECT_ROOT / "plugins/_onboarding/webui/assets/provider-logos/llama-cpp.svg").exists()
179 + assert (PROJECT_ROOT / "plugins/_onboarding/webui/assets/provider-logos/cerebras.svg").exists()
180 assert (PROJECT_ROOT / "plugins/_onboarding/webui/assets/provider-logos/omlx.svg").exists()
181 assert (PROJECT_ROOT / "plugins/_onboarding/webui/assets/provider-logos/vllm.svg").exists()
182