diff --git a/backend/apps/agents/providers/registry.py b/backend/apps/agents/providers/registry.py
index 4e16c80c..947794b9 100644
--- a/backend/apps/agents/providers/registry.py
+++ b/backend/apps/agents/providers/registry.py
@@ -23,45 +23,11 @@ logger = logging.getLogger(__name__)
# ---------------------------------------------------------------------------
BUILTIN_MODELS: dict[str, list[dict[str, Any]]] = {
- # ── Native API providers (use direct SDK) ──
"Anthropic": [
{"value": "sonnet", "label": "Claude Sonnet 4.6", "context_window": 1_000_000, "model_id": "claude-sonnet-4-6", "api": "anthropic"},
{"value": "opus", "label": "Claude Opus 4.6", "context_window": 1_000_000, "model_id": "claude-opus-4-6", "api": "anthropic"},
{"value": "haiku", "label": "Claude Haiku 4.5", "context_window": 200_000, "model_id": "claude-haiku-4-5", "api": "anthropic"},
],
- "OpenAI": [
- {"value": "gpt-5.4", "label": "GPT-5.4", "context_window": 1_000_000, "api": "openai"},
- {"value": "gpt-5.4-mini", "label": "GPT-5.4 Mini", "context_window": 400_000, "api": "openai"},
- {"value": "o3", "label": "o3", "context_window": 200_000, "api": "openai"},
- {"value": "o4-mini", "label": "o4-mini", "context_window": 200_000, "api": "openai"},
- ],
- "Google": [
- {"value": "gemini-2.5-pro", "label": "Gemini 2.5 Pro", "context_window": 1_048_576, "api": "gemini"},
- {"value": "gemini-2.5-flash", "label": "Gemini 2.5 Flash", "context_window": 1_048_576, "api": "gemini"},
- ],
- # ── Via OpenRouter (need OpenRouter API key) ──
- "xAI": [
- {"value": "x-ai/grok-4-0214", "label": "Grok 4", "context_window": 2_000_000, "api": "openrouter"},
- ],
- "Meta": [
- {"value": "meta-llama/llama-4-maverick", "label": "Llama 4 Maverick", "context_window": 1_000_000, "api": "openrouter"},
- {"value": "meta-llama/llama-4-scout", "label": "Llama 4 Scout", "context_window": 10_000_000, "api": "openrouter"},
- ],
- "DeepSeek": [
- {"value": "deepseek/deepseek-chat-v3-0324", "label": "DeepSeek V3", "context_window": 163_840, "api": "openrouter"},
- {"value": "deepseek/deepseek-r1", "label": "DeepSeek R1", "context_window": 163_840, "api": "openrouter"},
- ],
- "Mistral": [
- {"value": "mistralai/mistral-large-2501", "label": "Mistral Large", "context_window": 256_000, "api": "openrouter"},
- {"value": "mistralai/mistral-small-3.1-24b-instruct", "label": "Mistral Small 3.1", "context_window": 128_000, "api": "openrouter"},
- ],
- "Qwen": [
- {"value": "qwen/qwen3-coder", "label": "Qwen3 Coder 480B", "context_window": 262_144, "api": "openrouter"},
- {"value": "qwen/qwen3-235b-a22b", "label": "Qwen3 235B", "context_window": 131_072, "api": "openrouter"},
- ],
- "Cohere": [
- {"value": "cohere/command-a-03-2025", "label": "Command A", "context_window": 256_000, "api": "openrouter"},
- ],
}
# ---------------------------------------------------------------------------
diff --git a/electron/package-lock.json b/electron/package-lock.json
index b3422f6d..dfecee44 100644
--- a/electron/package-lock.json
+++ b/electron/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "openswarm",
- "version": "1.0.11",
+ "version": "1.0.12",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openswarm",
- "version": "1.0.11",
+ "version": "1.0.12",
"hasInstallScript": true,
"dependencies": {
"electron-updater": "^6.3.0",
diff --git a/frontend/src/app/pages/Settings/Settings.tsx b/frontend/src/app/pages/Settings/Settings.tsx
index 2abc91ad..fd133534 100644
--- a/frontend/src/app/pages/Settings/Settings.tsx
+++ b/frontend/src/app/pages/Settings/Settings.tsx
@@ -1265,39 +1265,6 @@ const Settings: React.FC = () => {
Pay per use. Each key is stored locally on your device.
- {/* OpenRouter — recommended */}
-
-
- OpenRouter
-
- RECOMMENDED
-
-
-
- One key for 300+ models — Llama, DeepSeek, Mistral, Qwen, Grok, and more. Easiest way to get started.
-
-
- setForm({ ...form, openrouter_api_key: e.target.value || null } as any)}
- size="small"
- fullWidth
- placeholder="sk-or-..."
- sx={{ ...fieldSx, '& .MuiOutlinedInput-root': { ...fieldSx['& .MuiOutlinedInput-root'], fontFamily: c.font.mono } }}
- />
-
- Get key
-
-
-
-
{/* Anthropic */}
@@ -1338,67 +1305,6 @@ const Settings: React.FC = () => {
- {/* OpenAI */}
-
-
- OpenAI
- {(form as any).openai_api_key ? (
- CONNECTED
- ) : null}
-
- GPT-5.4, o3, o4-mini.
-
- setForm({ ...form, openai_api_key: e.target.value || null } as any)}
- size="small"
- fullWidth
- placeholder="sk-..."
- sx={{ ...fieldSx, '& .MuiOutlinedInput-root': { ...fieldSx['& .MuiOutlinedInput-root'], fontFamily: c.font.mono } }}
- />
-
- Get key
-
-
-
-
- {/* Google */}
-
-
- Google
- {(form as any).google_api_key ? (
- CONNECTED
- ) : null}
-
- Gemini 2.5 Pro and Flash.
-
- setForm({ ...form, google_api_key: e.target.value || null } as any)}
- size="small"
- fullWidth
- placeholder="AIza..."
- sx={{ ...fieldSx, '& .MuiOutlinedInput-root': { ...fieldSx['& .MuiOutlinedInput-root'], fontFamily: c.font.mono } }}
- />
-
- Get key
-
-
-
) : activeTab === 'usage' ? (
@@ -1431,7 +1337,7 @@ const Settings: React.FC = () => {
)}
- {activeTab === 'general' && (
+ {(activeTab === 'general' || activeTab === 'models') && (