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