free-coding-models 0.5.83 → 0.5.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -569,7 +569,7 @@ On first start the daemon auto-creates a `fast-coding` set from your configured
569
569
  | 🟠 **Auth error** | 401/403 — your API key is wrong for this model |
570
570
  | ⚪ **Deprecated** | Removed from the catalog — will be replaced |
571
571
 
572
- **3. Failover order** — models are tried in priority order; a `Recovering` / `Down` / `Auth error` model is skipped and the request goes to the next healthy one. If *all* fail, you get a `503` with a `models_tried` list in the body for debugging.
572
+ **3. Failover order (family preserving)** — models are tried in priority order; a `Recovering` / `Down` / `Auth error` model is skipped and the request goes to the next healthy one. When a model fails, the router first looks for the **same model family on another provider** (e.g. `nvidiaNim/deepseek-v4-pro` down → `sambanova/DeepSeek-V3.1` next), so your coding assistant keeps the same model behaviour mid-conversation instead of silently switching to a different family. If no same-family alternative is healthy, it falls back to the plain priority order. Families covered: Claude, DeepSeek, Gemini, GPT, Nemotron, Llama, MiniMax, Qwen, Kimi, GLM, Mistral, OpenAI o-series. The toggle lives on the Router Dashboard's set panel (**Family failover: on/off**, on by default, stored per set as `familyFailover`), and family hops are tagged `family` in the request log of both the TUI and Web dashboard. If *all* fail, you get a `503` with a `models_tried` list in the body for debugging.
573
573
 
574
574
  **4. Auto-heal (on by default)** — at daemon start, any model in `Auth error` or `Deprecated` is swapped for a working alternative (same provider first, then cross-provider). The first time you manually add/remove/reorder a model, auto-heal switches off and your choices are preserved — so a new user with a half-broken key set lands on a usable default set by the time the dashboard renders.
575
575
 
@@ -0,0 +1,32 @@
1
+ # Changelog v0.5.84 - 2026-09-05
2
+
3
+ ### Changed
4
+
5
+ - Full catalog audit of all 23 providers against official docs and live model APIs (2026-09-05): 28 removals, 42 additions, 37 config fixes, 147 models confirmed unchanged. Catalog goes from 208 to 225 models.
6
+
7
+ Provider by provider:
8
+
9
+ - **Kilo**: the free gateway exploded from 2 to 19 models. Added MiniMax M3 (80.5% SWE-bench Verified, 1M ctx), Thinking Machines Inkling + Inkling Small (1M ctx), StepFun Step 3.7 Flash, Poolside Laguna S 2.1, NVIDIA Nemotron 3 Ultra + 3 Super + 3.5 Lightning, Cohere North Mini Code, Dots3-Note Preview, MiniMax M2.7 and the OpenRouter free router alias. `kilo-auto/small` is now paid and was removed.
10
+ - **NVIDIA NIM**: removed models that are gone or deprecated (gpt-oss-120b API deprecated 2026-09-02, kimi-k2.6 404, nemotron-nano-3, llama-3.2-11b-vision without endpoint). Added DeepSeek V4 Pro (1M ctx) and Nemotron 3.5 Lightning 30B. kimi-k3 and nemotron-3-super now serve 1M contexts. MiniMax M3 is kept with a deprecation notice (NVIDIA shutdown 2026-09-08).
11
+ - **Scaleway**: applied the July 2026 EOL wave. Removed Devstral 2, Gemma 3 27B and Holo2 (EOL already passed). Qwen3 Coder 30B and Pixtral 12B stay listed with an EOL 2026-10-01 warning since they still answer. The service now bills per token with the first 1M tokens free.
12
+ - **Routeway**: the free catalog was gutted from 13 to 4 models. Kept DeepSeek V4 Flash, MiniMax M2.7 and Muse Glimmer 30B (contexts slashed to 42k/42k/131k) and added Kimi K2.6 as the only new free model. 10 free variants are now paid-only.
13
+ - **Cloudflare Workers AI**: kimi-k2.6, kimi-k2.7-code and glm-5.2 moved behind Workers Paid billing and were removed from the free list. Fixed 7 inflated context windows (docs say 24k to 256k, not 128k). Added qwen3.8-27b (262k ctx) as the only new free coder-usable model.
14
+ - **Qwen / Model Studio**: added the new Qwen3.8 family (qwen3.8-max, qwen3.8-flash, qwen3.8-2.4t-a95b, qwen3.8-27b), each with 1M context and a 1M-token international free quota. All 23 existing models verified unchanged.
15
+ - **Z.ai**: added the new coding-plan flagship GLM-5.3 (1M ctx, released 2026-08-18). Filled in official SWE-bench Verified scores for GLM-4.7 (73.8%) and GLM-4.6 (68.0%).
16
+ - **Mistral**: the three Ministral 3 models now serve 256k context (was 128k). Added Z.ai GLM 5.2 (1M ctx, public preview on La Plateforme).
17
+ - **Groq**: added qwen/qwen3.8-27b preview. Fixed gpt-oss-20b SWE-bench score to the official 60.7%. None of the catalog models are on the deprecation list.
18
+ - **Cerebras**: gemma-4-31b was pulled from free public endpoints on 2026-09-03 and is replaced by qwen-3.8-27b (64k free ctx).
19
+ - **Pollinations**: added 3 anonymous-free models: glm-5.3 (1M ctx), Kimi K2.6 (80.2%) and MiniMax M3 (80.5%).
20
+ - **SiliconFlow**: DeepSeek-R1-Distill-Qwen-7B was delisted. Added DeepSeek-R1-0528-Qwen3-8B, Qwen3.5-4B, Qwen2.5-7B-Instruct and GLM-4-9B-0414. Both surviving models actually serve 131k context, not 32k.
21
+ - **OpenRouter**: fixed 7 wrong context windows against the live API (GLM-5.2 is 256k, not 1M; Inkling models are 1M; MiniMax M2.7 is 192k). Added ling-3.0-flash-sante:free.
22
+ - **Ollama Cloud**: added glm-5.3 and glm-5.3-flash. Fixed context windows for glm-5.2 (976k), minimax-m3 (512k) and gemma4:31b (256k).
23
+ - **Novita**: the empty free catalog is restored with 2 time-limited $0/M models: Ling 3.0 Flash Fin and Ling 3.0 Flash Sante (256k ctx, coding + function calling).
24
+ - **SambaNova**: MiniMax-M3 context is now 1M tokens (was 196k).
25
+ - **Codestral**: context fixed to 256k. Still free via Mistral's Experiment tier (~1B tokens/month).
26
+ - **Requesty**: fixed the model id typo `nvidia/nemotron-nano-3-30b-a3b` to the real `nvidia/nemotron-3-nano-30b-a3b`.
27
+ - **OVHcloud**: added 2 free Qwen3Guard moderation models (beta) and fixed Qwen2.5-VL-72B context to 32k. The chat LLMs are now paid per Mtoken but stay listed for now since they still answer.
28
+ - **googleai, llm7, orcarouter**: verified live and unchanged, nothing to update.
29
+
30
+ ### Fixed
31
+
32
+ - Tests: the t8 family-failover tests now use `openai/gpt-oss-20b` as NVIDIA primary because gpt-oss-120b was removed from the NVIDIA catalog (deprecated 2026-09-02). The NVIDIA test-model discovery expectations match the new catalog head.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "free-coding-models",
3
- "version": "0.5.83",
3
+ "version": "0.5.84",
4
4
  "description": "Find the fastest coding LLM models in seconds — ping free models from multiple providers, pick the best one for OpenCode, Cursor, or any AI coding assistant.",
5
5
  "keywords": [
6
6
  "nvidia",
@@ -58,7 +58,7 @@
58
58
  ],
59
59
  "scripts": {
60
60
  "start": "node bin/free-coding-models.js",
61
- "test": "node --test test/test.js test/fcm-agent-core.test.js test/patch-openclaw.test.js test/provider-metadata.test.js test/config-permission-hint.test.js test/probe-cache.test.js test/passive-quota.test.js test/runtime-telemetry.test.js test/extended-benchmarks.test.js test/models-dev.test.js test/model-merger.test.js test/config-dir.test.js test/cache-dir.test.js",
61
+ "test": "node --test test/test.js test/fcm-agent-core.test.js test/patch-openclaw.test.js test/provider-metadata.test.js test/config-permission-hint.test.js test/probe-cache.test.js test/passive-quota.test.js test/runtime-telemetry.test.js test/extended-benchmarks.test.js test/models-dev.test.js test/model-merger.test.js test/config-dir.test.js test/cache-dir.test.js test/model-family.test.js",
62
62
  "test:extended-benchmarks": "node --test test/extended-benchmarks.test.js",
63
63
  "test:models-dev": "node --test test/models-dev.test.js",
64
64
  "update:benchmarks": "node scripts/update-benchmarks.mjs",
package/sources.js CHANGED
@@ -42,30 +42,33 @@
42
42
  export const nvidiaNim = [
43
43
  // ── S+ tier — SWE-bench Verified ≥70% ──
44
44
  // Removed (2026-08-23): z-ai/glm-5.2 (GLM 5.1) — no longer in integrate.api.nvidia.com/v1/models (102 models live)
45
- ['moonshotai/kimi-k2.6', 'Kimi K2.6', 'S+', '80.2%', '262k'],
45
+ // Removed (2026-09-05): moonshotai/kimi-k2.6 (Kimi K2.6) - Model page returns 404 and model is absent from the NVIDIA model catalog; could not verify existence
46
46
  // Removed (2026-08-30): deepseek-ai/deepseek-v4-pro (DeepSeek V4 Pro) — 410 Gone per NVIDIA NIM forum; replaced by deepseek-v4-flash:0731 (forums.developer.nvidia.com/t/deepseek-v4-pro-flash-removed/379558)
47
47
  ['deepseek-ai/deepseek-v4-flash-0731', 'DeepSeek V4 Flash', 'S+', '79.0%', '1M'], // Fixed (2026-08-13): id 'deepseek-ai/deepseek-v4-flash' → 'deepseek-ai/deepseek-v4-flash-0731' (NIM /v1/models only exposes the -0731 suffix)
48
48
  // Removed (2026-08-30): stepfun-ai/step-3.7-flash (Step 3.7 Flash) — 410 Gone per NVIDIA NIM TUI ping (no replacement listed; superseded by step-3.7-flash via Routeway `step-3.7-flash:free`)
49
49
  ['nvidia/nemotron-3-ultra-550b-a55b', 'Nemotron 3 Ultra', 'S+', '71.9%', '1M'],
50
50
  ['poolside/laguna-xs-2.1', 'Laguna XS 2.1', 'S+', '70.9%', '262k'], // Added (2026-08-13)
51
51
  ['meta/muse-glimmer-30b', 'Muse Glimmer 30B', 'B+', '-', '128k'], // Added (2026-09-02) — new in NIM catalog
52
+ ['deepseek-ai/deepseek-v4-pro-0813', 'DeepSeek V4 Pro', 'S+', '-', '1M'],
52
53
  // ── S tier — SWE-bench Verified 60–70% ──
53
- ['openai/gpt-oss-120b', 'GPT OSS 120B', 'S', '62.4%', '128k'],
54
+ // Removed (2026-09-05): openai/gpt-oss-120b (GPT OSS 120B) - NVIDIA deprecation notice on model page: API deprecated on 09/02/2026 and no longer supported
54
55
  // Removed (2026-07-27): meta/llama-4-maverick-17b-128e-instruct (Llama 4 Maverick) — EOL 2026-07-27 (HTTP 410 Gone)
55
56
  // Removed (2026-08-23): mistralai/mistral-medium-3.5-128b (Mistral Medium 3.5) — no longer in integrate.api.nvidia.com/v1/models (still on Mistral LP directly)
56
57
  // Removed (2026-07-27): mistralai/mistral-small-4-119b-2603 (Mistral Small 4) — EOL 2026-07-27 (HTTP 410 Gone)
58
+ // ⚠️ DEPRECATED - NVIDIA shutdown 2026-09-08
57
59
  ['minimaxai/minimax-m3', 'MiniMax M3', 'S+', '78.4%', '1M'],
58
- ['moonshotai/kimi-k3', 'Kimi K3', 'S', '-', '262k'], // Added (2026-09-02) — new in NIM catalog
60
+ ['moonshotai/kimi-k3', 'Kimi K3', 'S', '-', '1M'], // Added (2026-09-02) — new in NIM catalog
59
61
  ['mistralai/mistral-nemotron', 'Mistral Nemotron', 'S', '-', '128k'], // Fixed ID (2026-07-27): nvidia/mistral-nemotron → mistralai/mistral-nemotron
60
62
  // Removed (2026-07-27): deepseek-ai/deepseek-v3.2 (DeepSeek V3.2) — HTTP 404
61
63
  // ── A+ tier — SWE-bench Verified 50–60% ──
62
64
  // Removed (2026-07-27): mistralai/mistral-large-3-675b-instruct-2512 (Mistral Large 675B) — EOL 2026-07-23 (HTTP 410 Gone)
63
- ['nvidia/nemotron-3-super-120b-a12b', 'Nemotron 3 Super', 'S', '60.5%', '128k'],
65
+ ['nvidia/nemotron-3-super-120b-a12b', 'Nemotron 3 Super', 'S', '60.5%', '1M'],
64
66
  ['nvidia/nemotron-3-nano-omni-30b-a3b-reasoning', 'Nemotron 3 Omni', 'A+', '52.0%', '256k'],
65
67
  // Removed (2026-07-27): meta-llama/llama-4-scout-17b-16e-instruct (Llama 4 Scout) — HTTP 404
66
68
  // Removed (2026-08-30): nvidia/llama-3.3-nemotron-super-49b-v1.5 (Llama 3.3 Nemotron Super 49B) — 410 Gone per NVIDIA NIM TUI ping
69
+ ['nvidia/nemotron-3.5-lightning-30b-a3b', 'Nemotron 3.5 Lightning 30B', 'A+', '52.8%', '1M'],
67
70
  // ── A tier — SWE-bench Verified 40–50% ──
68
- ['nvidia/nemotron-nano-3-30b-a3b', 'Nemotron Nano 30B', 'A-', '38.8%', '1M'],
71
+ // Removed (2026-09-05): nvidia/nemotron-nano-3-30b-a3b (Nemotron Nano 30B) - Model page returns 404 and model is absent from the NVIDIA model catalog; superseded by Nemotron 3.5 Lightning
69
72
  ['openai/gpt-oss-20b', 'GPT OSS 20B', 'A+', '50.3%', '128k'],
70
73
  ['google/gemma-4-31b-it', 'Gemma 4 31B', 'A+', '52.0%', '256k'],
71
74
  // Removed (2026-08-30): mistralai/mistral-large-2-instruct (Mistral Large 2) — 404 NOT FOUND per NVIDIA NIM TUI ping (model not in NIM catalog; use Mistral LP `mistral-large-2512`)
@@ -84,8 +87,9 @@ export const nvidiaNim = [
84
87
  // ── B+ tier — SWE-bench Verified 30–35% ──
85
88
  // Removed (2026-07-27): mistralai/ministral-14b-instruct-2512 (Ministral 14B) — EOL 2026-07-27 (HTTP 410 Gone)
86
89
  // Removed (2026-08-30): thinkingmachines/inkling (Inkling) — 410 Gone per NVIDIA NIM TUI ping (per Model Deprecation Request 378412)
90
+ ['google/diffusiongemma-26b-a4b-it', 'DiffusionGemma 26B', 'B+', '-', '256k'],
87
91
  // ── B tier — SWE-bench Verified 20–30% ──
88
- ['meta/llama-3.2-11b-vision-instruct', 'Llama 3.2 11B Vision', 'B', '28.0%', '128k'],
92
+ // Removed (2026-09-05): meta/llama-3.2-11b-vision-instruct (Llama 3.2 11B Vision) - Model page on build.nvidia.com has no hosted endpoint at all (no Free Endpoint, no Partner Endpoint, no endpointData payload); docs page remains but the free API endpoint is gone
89
93
  // Removed (2026-08-30): nvidia/nemotron-mini-4b-instruct (Nemotron Mini 4B) — 410 Gone per NVIDIA NIM TUI ping
90
94
  // ── C tier — lightweight/edge models ──
91
95
  // Removed (2026-07-27): microsoft/phi-4-mini-instruct (Phi 4 Mini) — EOL 2026-07-15 (HTTP 410 Gone)
@@ -97,10 +101,11 @@ export const groq = [
97
101
  // Removed (2026-08-13): llama-3.3-70b-versatile (Llama 3.3 70B) — Groq deprecation, shutdown 2026-08-16
98
102
  // Removed (2026-08-13): llama-3.1-8b-instant (Llama 3.1 8B) — Groq deprecation, shutdown 2026-08-16
99
103
  ['openai/gpt-oss-120b', 'GPT OSS 120B', 'S', '62.4%', '131k'],
100
- ['openai/gpt-oss-20b', 'GPT OSS 20B', 'A+', '50.3%', '131k'],
104
+ ['openai/gpt-oss-20b', 'GPT OSS 20B', 'A+', '60.7%', '131k'],
101
105
  ['qwen/qwen3.6-27b', 'Qwen3.6 27B', 'S+', '77.2%', '131k'],
102
106
  ['groq/compound', 'Groq Compound', 'A', '45.0%', '131k'],
103
107
  ['groq/compound-mini', 'Groq Compound Mini', 'B+', '32.0%', '131k'],
108
+ ['qwen/qwen3.8-27b', 'Qwen3.8 27B', 'A+', '-', '131k'],
104
109
  ]
105
110
 
106
111
  // 📖 Cerebras source - https://cloud.cerebras.ai
@@ -111,7 +116,8 @@ export const cerebras = [
111
116
  ['gpt-oss-120b', 'GPT OSS 120B', 'S', '62.4%', '65k'], // Fixed (2026-07-27): ctx '128k' → '65k' (free tier per official docs)
112
117
  // Removed (2026-09-05): MiniMax-M3 (MiniMax M3) — HTTP 404 "Model does not exist" per live API ping (PR #178 addition reverted)
113
118
  // ── A tier — SWE-bench Verified 40–50% ──
114
- ['gemma-4-31b', 'Gemma 4 31B', 'A+', '52.0%', '65k'], // Fixed (2026-07-27): ctx '128k' '65k' (free tier per official docs)
119
+ // Removed (2026-09-05): gemma-4-31b (Gemma 4 31B) - Official deprecation notice dated 2026-09-03: gemma-4-31b is no longer available on Cerebras public endpoints; it remains only on paid Dedicated Endpoints, so it no longer has a free access tier
120
+ ['qwen-3.8-27b', 'Qwen 3.8 27B', 'A+', '-', '64k'],
115
121
  ]
116
122
 
117
123
  // 📖 SambaNova source - https://cloud.sambanova.ai
@@ -120,7 +126,7 @@ export const cerebras = [
120
126
  export const sambanova = [
121
127
  // ── S+ tier ──
122
128
  ['MiniMax-M2.7', 'MiniMax M2.7', 'S+', '78.0%', '196k'], // Fixed (2026-07-27): ctx '192k' → '196k' (API exact 196608)
123
- ['MiniMax-M3', 'MiniMax M3', 'S+', '78.4%', '196k'], // Added (2026-09-02) — verified live 2026-09-05 via /v1/models
129
+ ['MiniMax-M3', 'MiniMax M3', 'S+', '78.4%', '1M'], // Added (2026-09-02) — verified live 2026-09-05 via /v1/models
124
130
  // ── S tier ──
125
131
  ['DeepSeek-V3.1', 'DeepSeek V3.1', 'S', '66.0%', '131k'], // Fixed (2026-07-27): ctx '128k' → '131k' (API exact 131072)
126
132
  ['DeepSeek-V3.2', 'DeepSeek V3.2', 'S+', '70.0%', '32k'],
@@ -147,9 +153,9 @@ export const openrouter = [
147
153
  ['nvidia/nemotron-3-ultra-550b-a55b:free', 'Nemotron 3 Ultra', 'S+', '71.9%', '1M'],
148
154
  ['poolside/laguna-xs-2.1:free', 'Poolside Laguna XS 2.1', 'S+', '70.9%', '262k'],
149
155
  ['poolside/laguna-s-2.1:free', 'Poolside Laguna S 2.1', 'S+', '-', '262k'],
150
- ['minimax/minimax-m2.7:free', 'MiniMax M2.7', 'S+', '56.2%', '262k'], // Added (2026-09-02)
156
+ ['minimax/minimax-m2.7:free', 'MiniMax M2.7', 'S+', '56.2%', '192k'], // Added (2026-09-02)
151
157
  ['minimax/minimax-m3:free', 'MiniMax M3', 'S+', '78.4%', '1M'], // Added (2026-09-02)
152
- ['z-ai/glm-5.2:free', 'GLM-5.2', 'S+', '-', '1M'], // Added (2026-09-02)
158
+ ['z-ai/glm-5.2:free', 'GLM-5.2', 'S+', '-', '256k'], // Added (2026-09-02)
153
159
  // ── S tier — SWE-bench Verified 60–70% ──
154
160
  ['cohere/north-mini-code:free', 'North Mini Code', 'S', '-', '256k'],
155
161
  ['nvidia/nemotron-3-super-120b-a12b:free', 'Nemotron 3 Super', 'S', '60.5%', '262k'],
@@ -158,13 +164,14 @@ export const openrouter = [
158
164
  ['google/gemma-4-31b-it:free', 'Gemma 4 31B', 'A+', '52.0%', '262k'],
159
165
  ['google/gemma-4-26b-a4b-it:free', 'Gemma 4 26B MoE', 'A', '38.0%', '262k'],
160
166
  // ── B+ tier — SWE-bench Verified 30–35% ──
161
- ['liquid/lfm-2.5-2.6b:free', 'LiquidAI LFM2.5-2.6B', 'C', '-', '128k'],
167
+ ['liquid/lfm-2.5-2.6b:free', 'LiquidAI LFM2.5-2.6B', 'C', '-', '64k'],
162
168
  ['nvidia/nemotron-3.5-lightning:free', 'NVIDIA Nemotron 3.5 Lightning', 'B+', '-', '1M'],
163
- ['inclusionai/ling-3.0-flash-fin:free', 'Ling 3.0 Flash Fin', 'B+', '-', '128k'], // Added (2026-09-02)
164
- ['thinkingmachines/inkling:free', 'Inkling', 'B+', '-', '262k'], // Added (2026-09-02)
169
+ ['inclusionai/ling-3.0-flash-fin:free', 'Ling 3.0 Flash Fin', 'B+', '-', '262k'], // Added (2026-09-02)
170
+ ['thinkingmachines/inkling:free', 'Inkling', 'B+', '-', '1M'], // Added (2026-09-02)
171
+ ['inclusionai/ling-3.0-flash-sante:free', 'Ling 3.0 Flash Sante', 'B+', '-', '262k'],
165
172
  // ── B tier — SWE-bench Verified 20–30% ──
166
- ['thinkingmachines/inkling-small:free', 'Inkling Small', 'B', '-', '128k'], // Added (2026-09-02)
167
- ['dots-studio/dots-3-note-preview:free', 'Dots 3 Note Preview', 'B', '-', '128k'], // Added (2026-09-02)
173
+ ['thinkingmachines/inkling-small:free', 'Inkling Small', 'B', '-', '1M'], // Added (2026-09-02)
174
+ ['dots-studio/dots-3-note-preview:free', 'Dots 3 Note Preview', 'B', '-', '512k'], // Added (2026-09-02)
168
175
  // ── C tier — lightweight/edge models ──
169
176
  ['nvidia/nemotron-3.5-content-safety:free', 'Nemotron 3.5 Content Safety', 'C', '-', '128k'],
170
177
  ]
@@ -188,13 +195,14 @@ export const mistral = [
188
195
  ['mistral-large-2512', 'Mistral Large 3', 'S+', '70.0%', '256k'],
189
196
  ['mistral-medium-3-5', 'Mistral Medium 3.5', 'S+', '77.6%', '256k'],
190
197
  // Removed (2026-08-13): devstral-2512 (Devstral 2) — Mistral deprecation, full retirement 2026-07-31
198
+ ['zai-glm-5-2', 'Z.ai GLM 5.2', 'S+', '82.8%', '1M'],
191
199
  // ── A tier — SWE-bench Verified 40–50% ──
192
200
  ['mistral-small-2603', 'Mistral Small 4', 'A', '48.0%', '256k'],
193
201
  // ── B+ tier — SWE-bench Verified 30–35% ──
194
- ['ministral-14b-2512', 'Ministral 3 14B', 'B+', '-', '128k'], // Fixed (2026-08-13): id 'ministral-3-14b-25-12' → 'ministral-14b-2512' (API model ID per Mistral docs JSON)
202
+ ['ministral-14b-2512', 'Ministral 3 14B', 'B+', '-', '256k'], // Fixed (2026-08-13): id 'ministral-3-14b-25-12' → 'ministral-14b-2512' (API model ID per Mistral docs JSON)
195
203
  // ── B tier — SWE-bench Verified 20–30% ──
196
- ['ministral-8b-2512', 'Ministral 3 8B', 'B', '-', '128k'], // Fixed (2026-08-13): id 'ministral-3-8b-25-12' → 'ministral-8b-2512'
197
- ['ministral-3b-2512', 'Ministral 3 3B', 'B', '-', '128k'], // Fixed (2026-08-13): id 'ministral-3-3b-25-12' → 'ministral-3b-2512'
204
+ ['ministral-8b-2512', 'Ministral 3 8B', 'B', '-', '256k'], // Fixed (2026-08-13): id 'ministral-3-8b-25-12' → 'ministral-8b-2512'
205
+ ['ministral-3b-2512', 'Ministral 3 3B', 'B', '-', '256k'], // Fixed (2026-08-13): id 'ministral-3-3b-25-12' → 'ministral-3b-2512'
198
206
  ]
199
207
 
200
208
  // 📖 Mistral Codestral source - https://codestral.mistral.ai
@@ -202,7 +210,7 @@ export const mistral = [
202
210
  // 📖 API keys now use the Mistral platform key format; CODESTRAL_API_KEY remains supported as an alias.
203
211
  export const codestral = [
204
212
  // ── A tier — SWE-bench Verified 40–50% ──
205
- ['codestral-2508', 'Codestral', 'A', '40.0%', '128k'], // Fixed (2026-07-27): ctx '256k' → '128k' per official Mistral model card
213
+ ['codestral-2508', 'Codestral', 'A', '40.0%', '256k'], // Fixed (2026-07-27): ctx '256k' → '128k' per official Mistral model card
206
214
  // Removed (2026-08-23): codestral-2501 (Codestral 2501), codestral-2405 (Codestral 2405) — retired from Mistral API; only codestral-2508 / codestral-latest remain
207
215
  // Removed (2026-08-13): codestral-2 (Codestral 2) — fabricated ID, never existed in Mistral catalog (Mistral uses date-stamped versioning)
208
216
  ]
@@ -213,15 +221,16 @@ export const scaleway = [
213
221
  // ── S+ tier — SWE-bench Verified ≥70% ──
214
222
  ['glm-5.2', 'GLM 5.2', 'S+', '82.8%', '256k'], // Fixed (2026-08-13): ctx '1M' → '256k' (Serverless tier per official catalog)
215
223
  ['deepseek-v4-flash-0731', 'DeepSeek V4 Flash', 'S+', '-', '256k'], // Added (2026-08-13)
216
- ['devstral-2-123b-instruct-2512', 'Devstral 2 123B', 'S+', '72.2%', '200k'], // Restored (2026-09-05) still Serverless per official docs; PR #178 EOL claim not confirmed
224
+ // Removed (2026-09-05): devstral-2-123b-instruct-2512 (Devstral 2 123B) - Deprecated 2026-07-01, End of Life 2026-08-01; after EOL the model is no longer accessible on Generative APIs Serverless
217
225
  // ── S tier — SWE-bench Verified 60–70% ──
218
226
  ['qwen3.5-397b-a17b', 'Qwen3.5 400B VLM', 'S+', '76.2%', '250k'],
219
227
  ['gpt-oss-120b', 'GPT OSS 120B', 'S', '62.4%', '128k'],
220
228
  ['mistral-medium-3.5-128b', 'Mistral Medium 3.5 128B', 'S+', '77.6%', '180k'], // Fixed (2026-07-27): ctx '256k' → '180k' (Serverless tier)
221
229
  // ── A+ tier — SWE-bench Verified 50–60% ──
230
+ // ⚠️ DEPRECATED - Scaleway EOL 2026-10-01
222
231
  ['qwen3-coder-30b-a3b-instruct', 'Qwen3 Coder 30B', 'A+', '51.6%', '128k'],
223
232
  ['qwen3.6-35b-a3b', 'Qwen3.6 35B MoE', 'S+', '73.4%', '256k'],
224
- ['holo2-30b-a3b', 'Holo2 30B', 'A+', '52.0%', '22k'], // Added (2026-08-13)
233
+ // Removed (2026-09-05): holo2-30b-a3b (Holo2 30B) - Deprecated 2026-07-09, End of Life 2026-08-09; after EOL the model is no longer accessible on Generative APIs Serverless
225
234
  ['gemma-4-26b-a4b-it', 'Gemma 4 26B MoE', 'A+', '-', '256k'],
226
235
  // Removed (2026-09-02): gemma-4-31b-it (Gemma 4 31B IT) — Dedicated tier only, not available on Serverless
227
236
  ['qwen3-235b-a22b-instruct-2507', 'Qwen3 235B', 'A', '45.2%', '250k'], // Restored (2026-09-05) — still Serverless per official docs (silently dropped by PR #178)
@@ -229,9 +238,10 @@ export const scaleway = [
229
238
  ['llama-3.3-70b-instruct', 'Llama 3.3 70B', 'B', '22.0%', '100k'], // Fixed (2026-08-13): ctx '128k' → '100k' (Serverless tier per official catalog)
230
239
  // ── B+ tier — SWE-bench Verified 30–35% ──
231
240
  ['mistral-small-3.2-24b-instruct-2506', 'Mistral Small 3.2', 'B', '20.0%', '128k'],
241
+ // ⚠️ DEPRECATED - Scaleway EOL 2026-10-01
232
242
  ['pixtral-12b-2409', 'Pixtral 12B', 'B+', '-', '128k'], // Restored (2026-09-05) — still Serverless per official docs; PR #178 EOL claim not confirmed
233
243
  // ── B tier — SWE-bench Verified 20–30% ──
234
- ['gemma-3-27b-it', 'Gemma 3 27B', 'B', '22.0%', '40k'],
244
+ // Removed (2026-09-05): gemma-3-27b-it (Gemma 3 27B) - Deprecated 2026-07-01, End of Life 2026-08-01; after EOL the model is no longer accessible on Generative APIs Serverless
235
245
  ]
236
246
 
237
247
  // 📖 Google AI Studio source - https://aistudio.google.com
@@ -259,12 +269,13 @@ export const zai = [
259
269
  // ── S+ tier — SWE-bench Verified ≥70% ──
260
270
  ['zai/glm-5.3-flash', 'GLM-5.3-Flash', 'S+', '-', '1M'], // Added (2026-09-02)
261
271
  ['zai/glm-5.2', 'GLM-5.2', 'S+', '-', '1M'], // Added (2026-08-13)
272
+ ['zai/glm-5.3', 'GLM-5.3', 'S+', '-', '1M'],
262
273
  // ── S tier — SWE-bench Verified 60–70% ──
263
274
  ['zai/glm-4.7-flash', 'GLM-4.7-Flash', 'A+', '59.2%', '200k'], // Fixed (2026-07-27): ctx '203k' → '200k' per official docs
264
275
  ['zai/glm-4.5-flash', 'GLM-4.5-Flash', 'S', '59.2%', '128k'],
265
276
  ['zai/glm-5-turbo', 'GLM-5-Turbo', 'S', '-', '200k'], // Added (2026-08-13)
266
- ['zai/glm-4.7', 'GLM-4.7', 'S', '-', '200k'], // Added (2026-08-13)
267
- ['zai/glm-4.6', 'GLM-4.6', 'S', '-', '200k'], // Added (2026-08-13)
277
+ ['zai/glm-4.7', 'GLM-4.7', 'S', '73.8%', '200k'], // Added (2026-08-13)
278
+ ['zai/glm-4.6', 'GLM-4.6', 'S', '68.0%', '200k'], // Added (2026-08-13)
268
279
  // Removed (2026-08-23): zai/glm-4.7-flashx, zai/glm-5v-turbo, zai/glm-4.6v — now paid-only ("Insufficient balance or no resource package" per ping test)
269
280
  // ── A tier — SWE-bench Verified 40–50% ──
270
281
  ['zai/glm-4.6v-flash', 'GLM-4.6V-Flash', 'A', '-', '128k'],
@@ -284,11 +295,14 @@ export const qwen = [
284
295
  ['qwen3-235b-a22b', 'Qwen3 235B', 'S+', '70.0%', '128k'],
285
296
  ['qwen3.7-plus', 'Qwen3.7 Plus', 'S+', '-', '1M'],
286
297
  ['qwen3.6-max-preview', 'Qwen3.6 Max Preview', 'S+', '80.9%', '256k'],
298
+ ['qwen3.8-max', 'Qwen3.8 Max', 'S+', '-', '1M'],
299
+ ['qwen3.8-2.4t-a95b', 'Qwen3.8 2.4T A95B', 'S+', '-', '1M'],
287
300
  // ── S tier — SWE-bench Verified 60–70% ──
288
301
  ['qwen3.5-plus', 'Qwen3.5 Plus', 'S+', '80.0%', '1M'],
289
302
  ['qwen3-coder-plus', 'Qwen3 Coder Plus', 'S', '69.6%', '1M'],
290
303
  ['qwen3-coder-next', 'Qwen3 Coder Next', 'S+', '70.6%', '256k'],
291
304
  ['qwen3-coder-480b-a35b-instruct', 'Qwen3 Coder 480B', 'S', '69.6%', '256k'],
305
+ ['qwen3.8-27b', 'Qwen3.8 27B', 'S', '-', '1M'],
292
306
  // ── A+ tier — SWE-bench Verified 50–60% ──
293
307
  ['qwen3.7-flash', 'Qwen3.7 Flash', 'A+', '-', '1M'], // Added (2026-07-27)
294
308
  ['qwen3.6-flash', 'Qwen3.6 Flash', 'A+', '60.0%', '1M'],
@@ -301,6 +315,7 @@ export const qwen = [
301
315
  ['qwen3.5-35b-a3b', 'Qwen3.5 35B A3B', 'S', '69.2%', '256k'],
302
316
  ['qwen3-next-80b-a3b-thinking', 'Qwen3 Next 80B Thinking', 'S+', '70.6%', '128k'],
303
317
  ['qwen3-next-80b-a3b-instruct', 'Qwen3 Next 80B Instruct', 'S+', '70.6%', '128k'],
318
+ ['qwen3.8-flash', 'Qwen3.8 Flash', 'A+', '-', '1M'],
304
319
  // ── A tier — SWE-bench Verified 40–50% ──
305
320
  ['qwen3.5-27b', 'Qwen3.5 27B', 'S+', '72.4%', '256k'],
306
321
  ['qwen3-30b-a3b', 'Qwen3 30B A3B', 'B', '25.2%', '128k'],
@@ -312,27 +327,28 @@ export const qwen = [
312
327
  // 📖 Free plan includes daily neuron quota and provider-level request limits.
313
328
  export const cloudflare = [
314
329
  // ── S+ tier — SWE-bench Verified ≥70% ──
315
- ['@cf/moonshotai/kimi-k2.6', 'Kimi K2.6', 'S+', '80.2%', '262k'],
316
- ['@cf/moonshotai/kimi-k2.7-code', 'Kimi K2.7 Code', 'S', '60.4%', '262k'],
317
- ['@cf/zai-org/glm-5.2', 'GLM-5.2', 'S+', '82.8%', '262k'],
330
+ // Removed (2026-09-05): @cf/moonshotai/kimi-k2.6 (Kimi K2.6) - model still exists but docs state it is not available through standard Workers Free billing; requires Workers Paid plan or prepaid AI Gateway credits, so unusable within the free 10k neurons/day tier
331
+ // Removed (2026-09-05): @cf/moonshotai/kimi-k2.7-code (Kimi K2.7 Code) - model still exists but docs state it is not available through standard Workers Free billing; requires Workers Paid plan or prepaid AI Gateway credits
332
+ // Removed (2026-09-05): @cf/zai-org/glm-5.2 (GLM-5.2) - model still exists but docs state it is not available through standard Workers Free billing; requires Workers Paid plan or prepaid AI Gateway credits
318
333
  // ── S tier — SWE-bench Verified 60–70% ──
319
334
  ['@cf/zai-org/glm-4.7-flash', 'GLM-4.7-Flash', 'A+', '59.2%', '131k'],
320
335
  ['@cf/openai/gpt-oss-120b', 'GPT OSS 120B', 'S', '62.4%', '128k'],
321
336
  // ── A+ tier — SWE-bench Verified 50–60% ──
322
- ['@cf/nvidia/nemotron-3-120b-a12b', 'Nemotron 3 Super', 'S', '60.5%', '128k'],
337
+ ['@cf/nvidia/nemotron-3-120b-a12b', 'Nemotron 3 Super', 'S', '60.5%', '256k'],
323
338
  // ── A tier — SWE-bench Verified 40–50% ──
324
339
  ['@cf/meta/llama-4-scout-17b-16e-instruct', 'Llama 4 Scout', 'B', '28.0%', '131k'],
325
- ['@cf/qwen/qwen3-30b-a3b-fp8', 'Qwen3 30B MoE', 'B', '25.2%', '128k'],
326
- ['@cf/qwen/qwen2.5-coder-32b-instruct', 'Qwen2.5 Coder 32B', 'A', '47.0%', '128k'],
340
+ ['@cf/qwen/qwen3-30b-a3b-fp8', 'Qwen3 30B MoE', 'B', '25.2%', '32k'],
341
+ ['@cf/qwen/qwen2.5-coder-32b-instruct', 'Qwen2.5 Coder 32B', 'A', '47.0%', '32k'],
327
342
  ['@cf/openai/gpt-oss-20b', 'GPT OSS 20B', 'A+', '50.3%', '128k'],
328
- ['@cf/qwen/qwq-32b', 'QwQ 32B', 'A', '-', '128k'],
329
- ['@cf/deepseek-ai/deepseek-r1-distill-qwen-32b', 'DeepSeek R1 Distill Qwen 32B', 'A', '-', '128k'], // Fixed (2026-07-27): namespace 'deepseek' → 'deepseek-ai'
343
+ ['@cf/qwen/qwq-32b', 'QwQ 32B', 'A', '-', '24k'],
344
+ ['@cf/deepseek-ai/deepseek-r1-distill-qwen-32b', 'DeepSeek R1 Distill Qwen 32B', 'A', '-', '80k'], // Fixed (2026-07-27): namespace 'deepseek' → 'deepseek-ai'
330
345
  // ── A- tier — SWE-bench Verified 35–40% ──
331
- ['@cf/meta/llama-3.3-70b-instruct-fp8-fast', 'Llama 3.3 70B', 'B', '22.0%', '128k'],
346
+ ['@cf/meta/llama-3.3-70b-instruct-fp8-fast', 'Llama 3.3 70B', 'B', '22.0%', '24k'],
332
347
  ['@cf/google/gemma-4-26b-a4b-it', 'Gemma 4 26B MoE', 'A-', '38.0%', '256k'], // Fixed (2026-07-27): ctx '128k' → '256k' (April 2026 changelog)
348
+ ['@cf/qwen/qwen3.8-27b', 'Qwen3.8 27B', 'A-', '-', '262k'],
333
349
  // ── B+ tier — SWE-bench Verified 30–35% ──
334
350
  ['@cf/mistralai/mistral-small-3.1-24b-instruct', 'Mistral Small 3.1', 'B+', '30.0%', '128k'],
335
- ['@cf/ibm-granite/granite-4.0-h-micro', 'Granite 4.0 Micro', 'B+', '30.0%', '128k'], // Fixed (2026-07-27): namespace 'ibm' → 'ibm-granite'
351
+ ['@cf/ibm-granite/granite-4.0-h-micro', 'Granite 4.0 Micro', 'B+', '30.0%', '131k'], // Fixed (2026-07-27): namespace 'ibm' → 'ibm-granite'
336
352
  // ── B tier — SWE-bench Verified 20–30% ──
337
353
  ['@cf/meta/llama-3.1-8b-instruct-fast', 'Llama 3.1 8B Instruct (Fast)', 'C', '18.0%', '128k'],
338
354
  // Removed (2026-08-30): @cf/google/gemma-3-12b-it (Gemma 3 12B IT) — Deprecated 2026-05-30 per Cloudflare Workers AI docs (developers.cloudflare.com/workers-ai/models/gemma-3-12b-it)
@@ -355,12 +371,14 @@ export const ovhcloud = [
355
371
  // Removed (2026-07-27): Mistral-7B-Instruct-v0.3 (Mistral 7B Instruct) — no longer in catalog
356
372
  // Removed (2026-08-13): Mistral-Nemo-Instruct-2407 (Mistral Nemo) — no longer in OVHcloud public catalog
357
373
  ['Qwen3.5-9B', 'Qwen3.5 9B', 'B+', '30.0%', '262k'],
358
- ['Qwen2.5-VL-72B-Instruct', 'Qwen2.5-VL 72B', 'S', '-', '131k'], // Added (2026-08-13)
374
+ ['Qwen2.5-VL-72B-Instruct', 'Qwen2.5-VL 72B', 'S', '-', '32k'], // Added (2026-08-13)
359
375
  // ── Embeddings ──
360
376
  ['Qwen3-Embedding-8B', 'Qwen3 Embedding 8B', 'B', '-', '32k'], // Fixed (2026-07-27): ctx '-' → '32k'
361
377
  ['bge-m3', 'BGE M3', 'B', '-', '-'],
362
378
  ['bge-multilingual-gemma2', 'BGE Multilingual Gemma2','B','-', '-'],
363
379
  // Fix (2026-05-26): Qwen3.5-9B ctx 128k→262k, Mistral-Small ctx 131k→128k, Mistral-Nemo ctx 128k→118k, Mistral-7B ctx 32k→127k
380
+ ['Qwen3Guard-Gen-8B', 'Qwen3Guard Gen 8B (moderation, beta)', 'C', '-', '32k'],
381
+ ['Qwen3Guard-Gen-0.6B', 'Qwen3Guard Gen 0.6B (moderation, beta)', 'C', '-', '32k'],
364
382
  ]
365
383
 
366
384
 
@@ -372,13 +390,15 @@ export const ovhcloud = [
372
390
  // 📖 Config: set provider to opencode/<model-id> in OpenCode config
373
391
  export const opencodeZen = [
374
392
  ['big-pickle', 'Big Pickle', 'S+', '72.0%', '200k'],
375
- ['deepseek-v4-flash-free', 'DeepSeek V4 Flash Free', 'S+', '79.0%', '200k'], // Restored (2026-09-02) still in /v1/models live
393
+ // Removed (2026-09-05): deepseek-v4-flash-free (DeepSeek V4 Flash Free) - deprecated: marked status=deprecated in the models.dev registry (2026-09-05) and dropped from the docs free-models pricing table; free promo ended
376
394
  ['mimo-v2.5-free', 'MiMo-V2.5 Free', 'S+', '-', '200k'],
377
- ['nemotron-3-ultra-free', 'Nemotron 3 Ultra Free', 'S+', '71.9%', '200k'],
395
+ ['nemotron-3-ultra-free', 'Nemotron 3 Ultra Free', 'S+', '71.9%', '1M'],
378
396
  // Removed (2026-09-05): hy3-free (Tencent Hy3 Free) — absent from live /v1/models (66 models checked)
379
- ['nemotron-3.5-lightning-free', 'Nemotron 3.5 Lightning Free','S+','-', '200k'], // Added (2026-08-13)
380
- ['laguna-s-2.1-free', 'Laguna S 2.1 Free', 'S+', '-', '200k'], // Restored (2026-09-05) back in live /v1/models
381
- ['ling-3.0-flash-fin-free', 'Ling 3.0 Flash Fin Free', 'B+', '-', '200k'], // Added (2026-09-05) — new id in live /v1/models (was ling-3.0-flash-free)
397
+ ['nemotron-3.5-lightning-free', 'Nemotron 3.5 Lightning Free', 'S+', '-', '262k'], // Added (2026-08-13)
398
+ // Removed (2026-09-05): laguna-s-2.1-free (Laguna S 2.1 Free) - deprecated: marked status=deprecated in the models.dev registry (2026-09-05) and absent from both the Zen /v1/models endpoint and the docs free-models list; the limited-time promo ended
399
+ ['ling-3.0-flash-fin-free', 'Ling 3.0 Flash Fin Free', 'B+', '-', '262k'], // Added (2026-09-05) — new id in live /v1/models (was ling-3.0-flash-free)
400
+ ['muse-spark-1.2-contributor-free', 'Muse Spark 1.2 Contributor Free', 'A+', '-', '1M'],
401
+ ['muse-spark-1.3-contributor-free', 'Muse Spark 1.3 Contributor Free', 'S+', '-', '1M'],
382
402
  ]
383
403
 
384
404
  // 📖 Kilo source - https://api.kilo.ai/api/gateway
@@ -386,7 +406,20 @@ export const opencodeZen = [
386
406
  // 📖 Keep only the stable router model here; individual promo `:free` models churn too quickly.
387
407
  export const kilo = [
388
408
  ['kilo-auto/free', 'Kilo Auto Free', 'A+', '-', '256k'],
389
- ['kilo-auto/small', 'Kilo Auto Small', 'B+', '-', '262k'], // Added (2026-08-13) routes to gemma-4-26b-a4b-it:free for free accounts
409
+ // Removed (2026-09-05): kilo-auto/small (Kilo Auto Small) - no longer free: gateway now lists it with isFree=false and paid pricing ($0.05/M prompt, $0.40/M completion); it routes to paid small models
410
+ ['thinkingmachines/inkling-small:free', 'Thinking Machines Inkling Small (free)', 'A+', '80.2%', '1M'],
411
+ ['stepfun/step-3.7-flash:free', 'StepFun Step 3.7 Flash (free)', 'A+', '-', '262k'],
412
+ ['poolside/laguna-s-2.1:free', 'Poolside Laguna S 2.1 (free)', 'A+', '-', '262k'],
413
+ ['nvidia/nemotron-3-ultra-550b-a55b:free', 'NVIDIA Nemotron 3 Ultra (free)', 'A+', '-', '1M'],
414
+ ['minimax/minimax-m2.7:free', 'MiniMax M2.7 (free)', 'A-', '-', '192k'],
415
+ ['cohere/north-mini-code:free', 'Cohere North Mini Code (free)', 'A-', '-', '256k'],
416
+ ['nvidia/nemotron-3-super-120b-a12b:free', 'NVIDIA Nemotron 3 Super (free)', 'A-', '-', '262k'],
417
+ ['poolside/laguna-xs-2.1:free', 'Poolside Laguna XS 2.1 (free)', 'B+', '-', '262k'],
418
+ ['nvidia/nemotron-3.5-lightning:free', 'NVIDIA Nemotron 3.5 Lightning (free)', 'B+', '-', '1M'],
419
+ ['dots-studio/dots-3-note-preview:free', 'Dots Studio Dots3-Note Preview (free)', 'B+', '-', '512k'],
420
+ ['openrouter/free', 'OpenRouter Free Models Router', 'B', '-', '200k'],
421
+ ['minimax/minimax-m3:free', 'MiniMax M3 (free)', 'S', '80.5%', '1M'],
422
+ ['thinkingmachines/inkling:free', 'Thinking Machines Inkling (free)', 'S', '80.2%', '1M'],
390
423
  ]
391
424
 
392
425
  // 📖 LLM7 source - https://api.llm7.io/v1
@@ -411,25 +444,26 @@ export const llm7 = [
411
444
  // 📖 Live catalog checked 2026-06-11; only chat-completions models with free pricing are listed.
412
445
  export const routeway = [
413
446
  // ── S+ tier — SWE-bench Verified ≥70% ──
414
- ['deepseek-v4-flash:free', 'DeepSeek V4 Flash', 'S+', '79.0%', '256k'], // Restored (2026-09-02) — back in zero-price catalog
415
- ['step-3.7-flash:free', 'Step 3.7 Flash', 'S+', '74.4%', '256k'], // Added (2026-07-27)
416
- ['minimax-m2.7:free', 'MiniMax M2.7', 'S+', '78.0%', '256k'], // Added (2026-09-02)
417
- ['muse-glimmer-30b:free', 'Muse Glimmer 30B', 'B+', '-', '256k'], // Added (2026-09-02)
447
+ ['deepseek-v4-flash:free', 'DeepSeek V4 Flash', 'S+', '79.0%', '42k'], // Restored (2026-09-02) — back in zero-price catalog
448
+ // Removed (2026-09-05): step-3.7-flash:free (Step 3.7 Flash) - free variant discontinued, only paid step-3.7-flash remains ($0.20/$1.15 per M)
449
+ ['minimax-m2.7:free', 'MiniMax M2.7', 'S+', '78.0%', '42k'], // Added (2026-09-02)
450
+ ['muse-glimmer-30b:free', 'Muse Glimmer 30B', 'B+', '-', '131k'], // Added (2026-09-02)
451
+ ['kimi-k2.6:free', 'Kimi K2.6', 'S+', '-', '42k'],
418
452
  // ── S tier — SWE-bench Verified 60–70% ──
419
- ['laguna-xs.2:free', 'Poolside Laguna XS.2', 'S', '68.2%', '131k'],
420
- ['gpt-oss-120b:free', 'GPT OSS 120B', 'S', '60.0%', '131k'],
453
+ // Removed (2026-09-05): laguna-xs.2:free (Poolside Laguna XS.2) - laguna-xs.2 no longer offered in any form, superseded by paid laguna-s-2.1
454
+ // Removed (2026-09-05): gpt-oss-120b:free (GPT OSS 120B) - free variant discontinued, only paid gpt-oss-120b remains ($0.04/$0.30 per M)
421
455
  // ── A tier — SWE-bench Verified 40–50% ──
422
- ['gemma-4-31b-it:free', 'Gemma 4 31B', 'A+', '52.0%', '262k'],
423
- ['nemotron-3-nano-30b-a3b:free', 'Nemotron Nano 30B', 'A-', '38.8%', '256k'],
456
+ // Removed (2026-09-05): gemma-4-31b-it:free (Gemma 4 31B) - free variant discontinued, only paid gemma-4-31b-it remains ($0.11/$0.33 per M)
457
+ // Removed (2026-09-05): nemotron-3-nano-30b-a3b:free (Nemotron Nano 30B) - free variant discontinued, only paid nemotron-3-nano-30b-a3b remains ($0.10/$0.15 per M)
424
458
  // ── A- tier — SWE-bench Verified 35–40% ──
425
- ['llama-3.3-70b-instruct:free', 'Llama 3.3 70B', 'B', '22.0%', '131k'],
459
+ // Removed (2026-09-05): llama-3.3-70b-instruct:free (Llama 3.3 70B) - free variant discontinued, only paid llama-3.3-70b-instruct remains ($0.13/$0.39 per M)
426
460
  // ── B+ tier — SWE-bench Verified 30–35% ──
427
- ['nemotron-nano-9b-v2:free', 'Nemotron Nano 9B', 'B+', '18.0%', '128k'],
461
+ // Removed (2026-09-05): nemotron-nano-9b-v2:free (Nemotron Nano 9B) - free variant discontinued, only paid nemotron-nano-9b-v2 remains ($0.02/$0.04 per M)
428
462
  // ── B tier — SWE-bench Verified 20–30% ──
429
- ['llama-3.1-8b-instruct:free', 'Llama 3.1 8B', 'C', '18.0%', '16k'],
430
- ['llama-3.2-3b-instruct:free', 'Llama 3.2 3B', 'B', '20.0%', '16k'],
463
+ // Removed (2026-09-05): llama-3.1-8b-instruct:free (Llama 3.1 8B) - free variant discontinued, only paid llama-3.1-8b-instruct remains ($0.09/$0.09 per M)
464
+ // Removed (2026-09-05): llama-3.2-3b-instruct:free (Llama 3.2 3B) - free variant discontinued, only paid llama-3.2-3b-instruct remains ($0.02/$0.05 per M)
431
465
  // ── C tier — lightweight/edge models ──
432
- ['llama-3.2-1b-instruct:free', 'Llama 3.2 1B', 'C', '-', '16k'],
466
+ // Removed (2026-09-05): llama-3.2-1b-instruct:free (Llama 3.2 1B) - free variant discontinued, only paid llama-3.2-1b-instruct remains ($0.15/$0.07 per M)
433
467
  ]
434
468
 
435
469
  // 📖 Novita AI source - https://api.novita.ai/openai/v1/models
@@ -441,6 +475,8 @@ export const novita = [
441
475
  // ── S tier — SWE-bench Verified 60–70% ──
442
476
  // Removed (2026-08-13): tencent/hy3 (Tencent Hy3) — isFree:false per Novita pricing page
443
477
  // Removed (2026-07-27): qwen/qwen3.5-plus (Qwen3.5 Plus) — no longer in novita catalog
478
+ ['inclusionai/ling-3.0-flash-fin', 'Ling 3.0 Flash Fin', 'B+', '-', '256k'],
479
+ ['inclusionai/ling-3.0-flash-sante', 'Ling 3.0 Flash Sante', 'B+', '-', '256k'],
444
480
  ]
445
481
 
446
482
  // 📖 Pollinations AI source - https://gen.pollinations.ai
@@ -452,6 +488,9 @@ export const pollinations = [
452
488
  // ── S+ tier — SWE-bench Verified ≥70% ──
453
489
  ['laguna', 'Laguna XS.2', 'S+', '70.9%', '1M'],
454
490
  ['minimax-m2.7', 'MiniMax M2.7', 'S+', '78.0%', '200k'],
491
+ ['glm-5.3', 'Z.ai GLM-5.3', 'S+', '-', '1M'],
492
+ ['kimi', 'Moonshot Kimi K2.6', 'S+', '80.2%', '262k'],
493
+ ['minimax', 'MiniMax M3', 'S+', '80.5%', '524k'],
455
494
  // ── S tier — SWE-bench Verified 60–70% ──
456
495
  ['qwen-coder', 'Qwen3 Coder', 'S', '69.6%', '262k'],
457
496
  ['deepseek', 'DeepSeek V3', 'S', '66.0%', '1M'],
@@ -473,10 +512,14 @@ export const pollinations = [
473
512
  // 📖 and still reachable with free-tier rate limits (1000 RPM). Keep only the chat text models here.
474
513
  export const siliconflow = [
475
514
  // ── A tier — SWE-bench Verified 40–50% ──
476
- ['THUDM/GLM-Z1-9B-0414', 'GLM-Z1 9B', 'A', '-', '32k'],
515
+ ['THUDM/GLM-Z1-9B-0414', 'GLM-Z1 9B', 'A', '-', '131k'],
516
+ ['deepseek-ai/DeepSeek-R1-0528-Qwen3-8B', 'DeepSeek R1 0528 Qwen3 8B', 'A', '-', '131k'],
477
517
  // ── B+ tier ──
478
- ['Qwen/Qwen3-8B', 'Qwen3 8B', 'B+', '30.0%', '32k'],
479
- ['deepseek-ai/DeepSeek-R1-Distill-Qwen-7B', 'DeepSeek R1 Distill Qwen 7B', 'A', '-', '32k'],
518
+ ['Qwen/Qwen3-8B', 'Qwen3 8B', 'B+', '30.0%', '131k'],
519
+ // Removed (2026-09-05): deepseek-ai/DeepSeek-R1-Distill-Qwen-7B (DeepSeek R1 Distill Qwen 7B) - No longer listed on SiliconFlow pricing/catalog page (0 of 184 model records); superseded by the newer R1-0528 Qwen3 distill
520
+ ['Qwen/Qwen3.5-4B', 'Qwen3.5 4B', 'A-', '-', '262k'],
521
+ ['THUDM/GLM-4-9B-0414', 'GLM-4 9B', 'B+', '-', '32k'],
522
+ ['Qwen/Qwen2.5-7B-Instruct', 'Qwen2.5 7B Instruct', 'B', '-', '32k'],
480
523
  ]
481
524
 
482
525
  // 📖 Requesty source - https://router.requesty.ai/v1
@@ -494,7 +537,7 @@ export const requesty = [
494
537
  ['google/gemma-4-31b-it', 'Gemma 4 31B', 'A+', '52.0%', '262k'],
495
538
  ['nvidia/nemotron-3-nano-omni-30b-a3b-reasoning', 'Nemotron 3 Omni', 'A+', '52.0%', '131k'],
496
539
  // ── A tier — SWE-bench Verified 40–50% ──
497
- ['nvidia/nemotron-nano-3-30b-a3b', 'Nemotron Nano 30B', 'A-', '38.8%', '262k'],
540
+ ['nvidia/nemotron-3-nano-30b-a3b', 'Nemotron Nano 30B', 'A-', '38.8%', '262k'],
498
541
  // ── B+ tier — SWE-bench Verified 30–35% ──
499
542
  ['nvidia/nemotron-3.5-lightning-30b-a3b', 'Nemotron 3.5 Lightning', 'B+', '-', '1M'],
500
543
  // ── B tier — SWE-bench Verified 20–30% ──
@@ -528,22 +571,24 @@ export const ollamaCloud = [
528
571
  // ── S+ tier — SWE-bench Verified ≥70% ──
529
572
  ['nemotron-3-ultra', 'Nemotron 3 Ultra', 'S+', '71.9%', '256k'],
530
573
  ['glm-5.1', 'GLM 5.1', 'S+', '82.8%', '198k'], // Fixed (2026-07-27): ctx '128k' → '198k'
531
- ['glm-5.2', 'GLM 5.2', 'S+', '82.8%', '1M'], // Fixed (2026-07-27): ctx '128k' → '1M'
574
+ ['glm-5.2', 'GLM 5.2', 'S+', '82.8%', '976k'], // Fixed (2026-07-27): ctx '128k' → '1M'
532
575
  ['minimax-m2.7', 'MiniMax M2.7', 'S+', '78.0%', '200k'],
533
- ['minimax-m3', 'MiniMax M3', 'S+', '78.4%', '1M'], // Fixed (2026-07-27): ctx '512k' → '1M'
576
+ ['minimax-m3', 'MiniMax M3', 'S+', '78.4%', '512k'], // Fixed (2026-07-27): ctx '512k' → '1M'
534
577
  // Removed (2026-08-23): minimax-m2.5 (MiniMax M2.5) — no longer in ollama.com/v1/models (19 models live)
535
578
  ['kimi-k2.6', 'Kimi K2.6', 'S+', '80.2%', '256k'], // Fixed (2026-07-27): ctx '262k' → '256k'
536
579
  ['deepseek-v4-flash:0731', 'DeepSeek V4 Flash', 'S+', '79.0%', '1M'], // Fixed (2026-08-23): ID 'deepseek-v4-flash' → 'deepseek-v4-flash:0731' (renamed upstream)
537
580
  ['deepseek-v4-pro:0813', 'DeepSeek V4 Pro', 'S+', '80.6%', '1M'], // Fixed (2026-08-23): ID 'deepseek-v4-pro' → 'deepseek-v4-pro:0813' (renamed upstream)
581
+ ['glm-5.3', 'GLM 5.3', 'S+', '-', '1M'],
538
582
  // ── S tier — SWE-bench Verified 60–70% ──
539
583
  ['kimi-k2.7-code', 'Kimi K2.7 Code', 'S', '60.4%', '256k'], // Fixed (2026-07-27): ctx '262k' → '256k'
540
584
  ['gpt-oss:120b', 'GPT OSS 120B', 'S', '62.4%', '128k'],
541
585
  ['nemotron-3-super', 'Nemotron 3 Super', 'S', '60.5%', '256k'],
542
586
  ['kimi-k3', 'Kimi K3', 'S+', '-', '1M'], // Added (2026-07-27)
543
587
  // Removed (2026-08-23): gemini-3-flash-preview (Gemini 3 Flash Preview) — no gemini models left in Ollama Cloud API
588
+ ['glm-5.3-flash', 'GLM 5.3 Flash', 'S', '-', '1M'],
544
589
  // ── A+ tier — SWE-bench Verified 50–60% ──
545
590
  // Removed (2026-08-23): kimi-k2.5 (Kimi K2.5) — no longer in ollama.com/v1/models
546
- ['gemma4:31b', 'Gemma 4 31B', 'A+', '52.0%', '128k'], // Fixed (2026-07-27): ctx '256k' → '128k'
591
+ ['gemma4:31b', 'Gemma 4 31B', 'A+', '52.0%', '256k'], // Fixed (2026-07-27): ctx '256k' → '128k'
547
592
  ['gpt-oss:20b', 'GPT OSS 20B', 'A+', '50.3%', '128k'],
548
593
  ['mistral-large-3:675b', 'Mistral Large 3 675B Cloud', 'A+', '-', '256k'], // Fixed (2026-08-23): ID 'mistral-large-3:675b-cloud' → 'mistral-large-3:675b' (tag renamed upstream)
549
594
  ['qwen3.5:397b', 'Qwen 3.5 Cloud', 'A+', '-', '256k'], // Fixed (2026-08-23): ID 'qwen3.5' → 'qwen3.5:397b' (tag renamed upstream)
@@ -411,6 +411,10 @@ function normalizeRouterSets(sets) {
411
411
  created: typeof rawSet.created === 'string' && rawSet.created.trim()
412
412
  ? rawSet.created
413
413
  : new Date().toISOString(),
414
+ // 📖 familyFailover (t8): when true (default), a failed request first
415
+ // retries the SAME model family on another provider before falling back
416
+ // to plain set order. See src/core/model-family.js.
417
+ familyFailover: rawSet.familyFailover !== false,
414
418
  }
415
419
  }
416
420
  return normalized