From b1fefbdd06c954aa4b42206fc1f630bad4e7eaf7 Mon Sep 17 00:00:00 2001 From: snova-kwasia Date: Thu, 30 Jul 2026 15:50:48 -0700 Subject: [PATCH 1/3] Add SambaNova as an OpenAI-compatible provider - Added sambanova to registry.py via _compat() helper (OpenAI-compatible API) - Added 6 SambaNova models to matrix.py (Llama 3.3 70B, DeepSeek V3.1/V3.2, MiniMax M2.7, Gemma 4 31B, GPT-OSS 120B) - Uses official endpoint https://api.sambanova.ai/v1 with SAMBANOVA_API_KEY env var --- coworker/providers/matrix.py | 20 ++++++++++++++++++++ coworker/providers/registry.py | 8 ++++++++ 2 files changed, 28 insertions(+) diff --git a/coworker/providers/matrix.py b/coworker/providers/matrix.py index bf6a878c..aa6407b5 100644 --- a/coworker/providers/matrix.py +++ b/coworker/providers/matrix.py @@ -109,6 +109,26 @@ class ModelEntry: "mistral:mistral-large-latest": ModelEntry( "Mistral Large · Mistral", _AGENTIC, 128_000 ), + # -- SambaNova --------------------------------------------------------------- + # OpenAI-compatible API (verified against api.sambanova.ai/v1/models 2026-07-30). + "sambanova:Meta-Llama-3.3-70B-Instruct": ModelEntry( + "Llama 3.3 70B · SambaNova", _AGENTIC, 131_072 + ), + "sambanova:DeepSeek-V3.1": ModelEntry( + "DeepSeek V3.1 · SambaNova", _AGENTIC, 131_072 + ), + "sambanova:DeepSeek-V3.2": ModelEntry( + "DeepSeek V3.2 · SambaNova", _AGENTIC, 32_768 + ), + "sambanova:MiniMax-M2.7": ModelEntry( + "MiniMax M2.7 · SambaNova", _AGENTIC, 196_608 + ), + "sambanova:gemma-4-31B-it": ModelEntry( + "Gemma 4 31B · SambaNova", _AGENTIC, 131_072 + ), + "sambanova:gpt-oss-120b": ModelEntry( + "GPT-OSS 120B · SambaNova", _AGENTIC, 131_072 + ), # -- resellers (their model namespaces, verbatim) ----------------------------- "together:thinkingmachines/Inkling": ModelEntry("Inkling · via Together"), "together:zai-org/GLM-5.2": ModelEntry("GLM-5.2 · via Together", _AGENTIC, 128_000), diff --git a/coworker/providers/registry.py b/coworker/providers/registry.py index a07ec316..31679c63 100644 --- a/coworker/providers/registry.py +++ b/coworker/providers/registry.py @@ -519,6 +519,14 @@ def _compat( env_key="META_API_KEY", endpoint_help="Prefilled with the Meta Model API endpoint (public preview, US-only as of 2026-07).", ), + _compat( + "sambanova", + "SambaNova", + base_url="https://api.sambanova.ai/v1", + recommended_model="Meta-Llama-3.3-70B-Instruct", + env_key="SAMBANOVA_API_KEY", + endpoint_help="Prefilled with SambaNova's official OpenAI-compatible endpoint.", + ), # Resellers: many labs' models behind one key, using THEIR model namespaces (the curated # ids + display labels live in providers/matrix.py). TODO: add Groq here (+ its matrix # rows) once the current provider surface is tested — deliberately deferred to bound From 7144256ee844151eb70ddc7c4bdd00c5daa804bf Mon Sep 17 00:00:00 2001 From: Kwasi Ankomah Date: Thu, 30 Jul 2026 16:06:15 -0700 Subject: [PATCH 2/3] feat(providers): add SambaNova as an OpenAI-compatible model provider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds SambaNova Cloud as a first-class model provider, using their OpenAI-compatible API endpoint (api.sambanova.cloud.com/v1). Follows the same _compat pattern as Together AI, Fireworks AI, and OpenRouter. Changes: - registry.py: add _compat() descriptor for sambanova (env: SAMBANOVA_API_KEY, recommended model: Llama 4 Maverick) - matrix.py: add 3 curated SambaNova model entries (Llama 4 Maverick 1M, Qwen3 72B, DeepSeek V3) - logos/sambanova.svg: brand SVG mark (indigo-purple circle + SN monogram) - logos.ts: register the SVG import and add to PROVIDER_ORDER - ProviderSetup.tsx: add console.sambanova.cloud key help URL Users can now connect SambaNova in Settings ▸ Models, just like other OpenAI-compatible resellers. --- coworker/providers/matrix.py | 10 ++++++++++ coworker/providers/registry.py | 7 +++++++ surfaces/gui/src/providers/ProviderSetup.tsx | 1 + surfaces/gui/src/providers/logos.ts | 3 +++ surfaces/gui/src/providers/logos/sambanova.svg | 1 + 5 files changed, 22 insertions(+) create mode 100644 surfaces/gui/src/providers/logos/sambanova.svg diff --git a/coworker/providers/matrix.py b/coworker/providers/matrix.py index aa6407b5..b04955af 100644 --- a/coworker/providers/matrix.py +++ b/coworker/providers/matrix.py @@ -177,6 +177,16 @@ class ModelEntry: "openrouter:meta-llama/llama-4-maverick": ModelEntry( "Llama 4 Maverick · via OpenRouter", _AGENTIC, 1_000_000 ), + # -- SambaNova ------------------------------------------------------ + "sambanova:Meta-Llama/Llama-4-Maverick-17B-128E-Instruct": ModelEntry( + "Llama 4 Maverick · SambaNova", _AGENTIC, 1_000_000 + ), + "sambanova:Qwen/Qwen3-72B-Instruct": ModelEntry( + "Qwen3 72B · SambaNova", _AGENTIC, 128_000 + ), + "sambanova:deepseek-ai/DeepSeek-V3-0324": ModelEntry( + "DeepSeek V3 · SambaNova", _AGENTIC, 128_000 + ), # -- cloud accounts (models running in the user's own AWS/GCP) ---------------- # Bedrock ids carry a family segment (claude/ → native Anthropic path, other/ → # Converse) plus AWS's own `-v:` version suffix. Some regions require the diff --git a/coworker/providers/registry.py b/coworker/providers/registry.py index 31679c63..3a8f447d 100644 --- a/coworker/providers/registry.py +++ b/coworker/providers/registry.py @@ -552,6 +552,13 @@ def _compat( recommended_model="z-ai/glm-5.2", env_key="OPENROUTER_API_KEY", ), + _compat( + "sambanova", + "SambaNova", + base_url="https://api.sambanova.cloud.com/v1", + recommended_model="Meta-Llama/Llama-4-Maverick-17B-128E-Instruct", + env_key="SAMBANOVA_API_KEY", + ), ProviderDescriptor( name="ollama", title="Ollama (local models)", diff --git a/surfaces/gui/src/providers/ProviderSetup.tsx b/surfaces/gui/src/providers/ProviderSetup.tsx index b2f962d4..65c0ffbd 100644 --- a/surfaces/gui/src/providers/ProviderSetup.tsx +++ b/surfaces/gui/src/providers/ProviderSetup.tsx @@ -32,6 +32,7 @@ export const KEY_HELP: Record = { qwen: { url: "https://modelstudio.console.alibabacloud.com", label: "alibabacloud.com" }, minimax: { url: "https://platform.minimax.io", label: "platform.minimax.io" }, xai: { url: "https://console.x.ai", label: "console.x.ai" }, + sambanova: { url: "https://console.sambanova.cloud", label: "console.sambanova.cloud" }, }; export type Verify = { state: "idle" | "testing" | "ok" | "error"; msg?: string }; diff --git a/surfaces/gui/src/providers/logos.ts b/surfaces/gui/src/providers/logos.ts index 093c4fdd..7c1b0b16 100644 --- a/surfaces/gui/src/providers/logos.ts +++ b/surfaces/gui/src/providers/logos.ts @@ -22,6 +22,7 @@ import qwen from "./logos/qwen.svg"; import minimax from "./logos/minimax.svg"; import xai from "./logos/xai.svg"; import meta from "./logos/meta.svg"; +import sambanova from "./logos/sambanova.svg"; export const PROVIDER_LOGOS: Record = { anthropic, @@ -41,6 +42,7 @@ export const PROVIDER_LOGOS: Record = { qwen, minimax, xai, + sambanova, }; export const PROVIDER_ORDER = [ @@ -61,6 +63,7 @@ export const PROVIDER_ORDER = [ "qwen", "minimax", "xai", + "sambanova", ]; export function providerRank(name: string): number { diff --git a/surfaces/gui/src/providers/logos/sambanova.svg b/surfaces/gui/src/providers/logos/sambanova.svg new file mode 100644 index 00000000..3be0af3f --- /dev/null +++ b/surfaces/gui/src/providers/logos/sambanova.svg @@ -0,0 +1 @@ +SambaNovaSN \ No newline at end of file From 152eeb457040ec8c13a23e94fa1cabb9c11a699e Mon Sep 17 00:00:00 2001 From: Kwasi Ankomah Date: Thu, 30 Jul 2026 16:07:51 -0700 Subject: [PATCH 3/3] fix(providers): deduplicate SambaNova registry entry (cherry-pick merge fix) Removes the duplicate _compat() entry for 'sambanova' that was introduced by a conflicting cherry-pick, keeping the correct .ai endpoint. --- coworker/providers/registry.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/coworker/providers/registry.py b/coworker/providers/registry.py index 3a8f447d..31679c63 100644 --- a/coworker/providers/registry.py +++ b/coworker/providers/registry.py @@ -552,13 +552,6 @@ def _compat( recommended_model="z-ai/glm-5.2", env_key="OPENROUTER_API_KEY", ), - _compat( - "sambanova", - "SambaNova", - base_url="https://api.sambanova.cloud.com/v1", - recommended_model="Meta-Llama/Llama-4-Maverick-17B-128E-Instruct", - env_key="SAMBANOVA_API_KEY", - ), ProviderDescriptor( name="ollama", title="Ollama (local models)",