free-coding-models 0.5.81 → 0.5.83

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
@@ -182,15 +182,16 @@ A large catalog of coding models from 20+ active providers, ranked by practical
182
182
  | 11 | [ZAI](https://z.ai) | 7 | S | Free Flash models only | `ZAI_API_KEY` |
183
183
  | 12 | [Scaleway](https://console.scaleway.com/iam/api-keys) | 15 | S+ → B | 1M free tokens | `SCALEWAY_API_KEY` |
184
184
  | 13 | [Alibaba DashScope](https://modelstudio.console.alibabacloud.com) | 23 | S+ → A+ | 1M free tokens/model, Singapore, 90 days | `DASHSCOPE_API_KEY` |
185
- | 14 | [OpenCode Zen](https://opencode.ai/zen) | 5 | S+ → A | Free with OpenCode account | Zen models ✨ |
185
+ | 14 | [OpenCode Zen](https://opencode.ai/zen) | 7 | S+ → B+ | Free with OpenCode account | Zen models ✨ |
186
186
  | 15 | [Kilo](https://kilo.ai) | 2 | A+ | Free auto-router works without a key | optional `KILO_API_KEY` |
187
- | 16 | [LLM7](https://llm7.io) | 5 | S+ → B+ | Shared free tier, optional free token | optional `LLM7_API_KEY` |
187
+ | 16 | [LLM7](https://llm7.io) | 4 | S+ → A- | Shared free tier, optional free token | optional `LLM7_API_KEY` |
188
188
  | 17 | [Routeway](https://routeway.ai) | 10 | S+ → C | Explicit `:free` zero-price models | `ROUTEWAY_API_KEY` |
189
189
  | 18 | [Novita AI](https://novita.ai) | 0 | - | No zero-price models currently | `NOVITA_API_KEY` |
190
190
  | 19 | [Ollama Cloud](https://ollama.com/pricing) | 17 | S+ → A | Free cloud usage with session/weekly limits | `OLLAMA_API_KEY` |
191
191
  | 20 | [Pollinations AI](https://enter.pollinations.ai) ⚠️ experimental | 10 | S+ → B+ | Daily Pollen grants, free tier via Pollen (see note below) | `POLLINATIONS_API_KEY` |
192
192
  | 21 | [SiliconFlow](https://cloud.siliconflow.cn/account/ak) | 3 | A → B+ | 3 models @ $0, 1000 RPM (phone SMS required) | `SILICONFLOW_API_KEY` |
193
193
  | 22 | [Requesty](https://app.requesty.ai/api-keys) | 12 | S+ → C | 200 req/day free, no card (4x OpenRouter) | `REQUESTY_API_KEY` |
194
+ | 23 | [OrcaRouter](https://www.orcarouter.ai) | 3 | S+ → A+ | Free Hacker tier · 3 $-0 models, zero token markup | `ORCAROUTER_API_KEY` |
194
195
 
195
196
  > **Pollinations Pollen, c'est quoi ?** Pollinations ne facture pas en $ mais en **Pollen** (≈ $1). Pas besoin d'acheter : tu recois du Pollen **gratuit chaque jour** selon ton tier seed/flower/nectar via quests (star le repo `pollinations/pollinations` sur GitHub, aider sur un issue). Si ton solde affiche `0.0000` sur `enter.pollinations.ai`, tout `MISS` (prompt non cache) retourne `402 PAYMENT_REQUIRED` ("Insufficient balance ~0.0001 pollen") et le ping affichera `402`. Un `HIT` Cloudflare cache peut encore passer en `200` meme avec 0 Pollen mais ce n'est pas fiable. Verifie ton solde sur `enter.pollinations.ai` -> API Keys, complete une quest et attends le grant quotidien a minuit UTC. **Note : integration Pollinations encore experimentale et non confirmee comme stable, le systeme Pollen peut changer.**
196
197
  > **SiliconFlow & Requesty** : integrations verifiees le 2026-08-24 via `/v1/models` live et docs officielles, free tiers recurrents confirmes sans Pollen.
@@ -294,6 +295,9 @@ Press **`G`** to cycle **Auto → Dark → Light**. Recolors the full interface
294
295
  | **`;`** | Open the **Playground** chat overlay (chat with the FCM router) |
295
296
  | **`Ctrl+A`** | Run an AI Speed Test for the selected model |
296
297
  | **`Ctrl+U`** | Run the Global AI Speed Test (real provider requests) |
298
+ | **`Shift+P`** | Re-probe failed rows only (auth fail / 429 / 404 / timeout) - no whole-list rescan |
299
+ | **`Ctrl+Shift+P`** | Probe all configured models (404/410 check, auto-hides broken ones) |
300
+ | **`Space`** | Expand the selected row: 2-line detail with provider, endpoint URL and the full model ID (press again or move the cursor to collapse) |
297
301
  | `R/S/C/M/O/L/A/H/V/B/U` | Sort by Rank / SWE / ContexT / Model / Origin / Last ping / Avg ping / Health / Verdict / staBility / Uptime |
298
302
  | `W` | Sort by real-world score (`Real` column — see [Runtime telemetry](#-runtime-telemetry-real-world-scores)) |
299
303
  | `Shift+W` | Open the Runtime Report overlay (per-model breakdown + recent calls) |
@@ -413,6 +417,7 @@ services:
413
417
  FREE_CODING_MODELS_TELEMETRY: "0"
414
418
  FCM_HOST: "0.0.0.0"
415
419
  OPENROUTER_API_KEY: ${OPENROUTER_API_KEY:-}
420
+ ORCAROUTER_API_KEY: ${ORCAROUTER_API_KEY:-}
416
421
  volumes:
417
422
  - fcm-data:/home/fcm
418
423
  volumes:
@@ -679,6 +684,7 @@ Flags combine freely in any order. Run `free-coding-models --help` to print the
679
684
  | `--check-drift` | Diff `sources.js` against `models.dev`; exit 1 on mismatch |
680
685
  | `--no-telemetry` | Disable anonymous telemetry for this run |
681
686
  | `--config-dir <dir>` | Store `config.json` + `backups/` in `<dir>` (e.g. `--config-dir ~/.config/free-coding-models`) |
687
+ | `--fix-permissions` / `--yes` / `-y` | Auto-fix insecure config file permissions (chmod 600) without prompting; never asked on piped stdin, daemon, web, or `--json` runs |
682
688
 
683
689
  **Tool launchers** — start the TUI pre-configured for a tool, then `Enter` writes the model into that tool's config and launches it:
684
690
 
@@ -902,6 +908,8 @@ A: Yes — see [`sources.js`](./sources.js) for the model catalog format.
902
908
  <td align="center" width="120"><a href="https://github.com/Muhammad95959"><img src="https://avatars.githubusercontent.com/u/75130655?v=4&s=80" width="80" height="80" style="border-radius:50%" alt="Muhammad95959"></a></td>
903
909
  <td align="center" width="120"><a href="https://github.com/FaintFlower"><img src="https://avatars.githubusercontent.com/u/310248465?v=4&s=80" width="80" height="80" style="border-radius:50%" alt="FaintFlower"></a></td>
904
910
  <td align="center" width="120"><a href="https://github.com/lehneres"><img src="https://avatars.githubusercontent.com/u/7437288?v=4&s=80" width="80" height="80" style="border-radius:50%" alt="lehneres"></a></td>
911
+ <td align="center" width="120"><a href="https://github.com/ia-S-on"><img src="https://avatars.githubusercontent.com/u/200600946?v=4&s=80" width="80" height="80" style="border-radius:50%" alt="ia-S-on"></a></td>
912
+ <td align="center" width="120"><a href="https://github.com/bangla24bdrang-lab"><img src="https://avatars.githubusercontent.com/u/321290409?v=4&s=80" width="80" height="80" style="border-radius:50%" alt="bangla24bdrang-lab"></a></td>
905
913
  </tr>
906
914
  <tr>
907
915
  <td align="center"><a href="https://github.com/vava-nessa"><sub><b>vava-nessa</b></sub></a></td>
@@ -917,18 +925,26 @@ A: Yes — see [`sources.js`](./sources.js) for the model catalog format.
917
925
  <td align="center"><a href="https://github.com/Muhammad95959"><sub><b>Muhammad95959</b></sub></a></td>
918
926
  <td align="center"><a href="https://github.com/FaintFlower"><sub><b>FaintFlower</b></sub></a></td>
919
927
  <td align="center"><a href="https://github.com/lehneres"><sub><b>lehneres</b></sub></a></td>
928
+ <td align="center"><a href="https://github.com/ia-S-on"><sub><b>ia-S-on</b></sub></a></td>
929
+ <td align="center"><a href="https://github.com/bangla24bdrang-lab"><sub><b>bangla24bdrang-lab</b></sub></a></td>
920
930
  </tr>
921
931
  <tr>
922
- <td align="center" colspan="13"><sub>🛡️ <b>fan92rus</b> — Windows path traversal fix (<code>path.sep</code>)</sub></td>
932
+ <td align="center" colspan="15"><sub>🛡️ <b>fan92rus</b> — Windows path traversal fix (<code>path.sep</code>)</sub></td>
923
933
  </tr>
924
934
  <tr>
925
- <td align="center" colspan="13"><sub>📁 <b>Muhammad95959</b> — <code>--config-dir</code> flag & XDG support</sub></td>
935
+ <td align="center" colspan="15"><sub>📁 <b>Muhammad95959</b> — <code>--config-dir</code> flag & XDG support</sub></td>
926
936
  </tr>
927
937
  <tr>
928
- <td align="center" colspan="13"><sub>⭐ <b>FaintFlower</b> — Star History chart mirror fix</sub></td>
938
+ <td align="center" colspan="15"><sub>⭐ <b>FaintFlower</b> — Star History chart mirror fix</sub></td>
929
939
  </tr>
930
940
  <tr>
931
- <td align="center" colspan="13"><sub>🚀 <b>lehneres</b> — Proxmox VE installation scripts</sub></td>
941
+ <td align="center" colspan="15"><sub>🚀 <b>lehneres</b> — Proxmox VE installation scripts</sub></td>
942
+ </tr>
943
+ <tr>
944
+ <td align="center" colspan="15"><sub>🌩️ <b>ia-S-on</b> — Cloudflare <code>{account_id}</code> env resolution in launch paths</sub></td>
945
+ </tr>
946
+ <tr>
947
+ <td align="center" colspan="15"><sub>🐬 <b>bangla24bdrang-lab</b> — OrcaRouter provider integration</sub></td>
932
948
  </tr>
933
949
  </table>
934
950
 
@@ -969,8 +985,9 @@ Curated resources kept **outside** the active CLI catalog — IDE extensions, co
969
985
 
970
986
  | Provider | Free limits | Notable models |
971
987
  |----------|-------------|----------------|
988
+ | [OrcaRouter](https://www.orcarouter.ai) | Free Hacker tier, zero token markup, 3 API keys | DeepSeek V4 Flash (Free), Tencent Hy3 (Free), Qwen3.8 27B (Free) |
972
989
  | [OpenRouter](https://openrouter.ai/keys) | 50 req/day, 1K/day with $10 purchase | Qwen3-Coder, Tencent HY3, Laguna, Gemma 4 |
973
- | [Google AI Studio](https://aistudio.google.com/apikey) | Varies by Gemini model and region | Gemini 3.1 Pro Preview, Gemini 2.5 Flash |
990
+ | [Google AI Studio](https://aistudio.google.com/apikey) | Varies by Gemini model and region | Gemini 3.8 Flash, Gemini 2.5 Pro |
974
991
  | [NVIDIA NIM](https://build.nvidia.com) | ~40 RPM | MiniMax M2.7, GLM 5.1, Kimi K2.6 |
975
992
  | [GitHub Models](https://models.github.ai) | Depends on GitHub/Copilot tier | GPT-4.1, DeepSeek V3, Llama 4 |
976
993
  | [Groq](https://console.groq.com/keys) | 1K–14.4K req/day (model-dependent) | Llama 3.3 70B, Llama 4 Scout, GPT-OSS |
@@ -37,6 +37,7 @@ import { ensureFavoritesConfig } from '../src/core/favorites.js';
37
37
  import { buildCliHelpText } from '../src/tui/cli-help.js';
38
38
  import { ALT_LEAVE } from '../src/core/constants.js';
39
39
  import { enforceMandatoryStartupUpdate, isPackageDevMode } from '../src/core/updater.js';
40
+ import { checkConfigSecurity } from '../src/core/security.js';
40
41
  import { runApp } from '../src/tui/app.js';
41
42
 
42
43
  // Global error handlers to ensure terminal is restored if something crashes catastrophically
@@ -155,6 +156,25 @@ async function main() {
155
156
  } catch {}
156
157
  }
157
158
 
159
+ // 📖 Config security check (issue #173): the insecure-permission warning and its
160
+ // 📖 "Fix permissions automatically?" prompt must fully resolve BEFORE any surface
161
+ // 📖 takes over the terminal. It used to run un-awaited inside runApp, so the TUI
162
+ // 📖 covered the prompt (invisible on Windows) and the app looked frozen.
163
+ // 📖 Daemon / web dashboard / JSON surfaces pass promptAllowed=false so at most a
164
+ // 📖 warning + manual hint goes to stderr, and the daemon can never hang on a prompt.
165
+ // 📖 --fix-permissions / --yes / -y auto-applies chmod 600 (best-effort on Windows).
166
+ const promptAllowed = !cliArgs.webMode
167
+ && !cliArgs.jsonMode
168
+ && !cliArgs.daemonMode
169
+ && !cliArgs.daemonBackgroundMode
170
+ && !cliArgs.daemonStopMode
171
+ && !cliArgs.daemonStatusMode;
172
+ try {
173
+ await checkConfigSecurity({ autoFix: cliArgs.fixPermissionsMode, promptAllowed });
174
+ } catch {
175
+ // 📖 A security-check failure must never block the app from starting.
176
+ }
177
+
158
178
  // 📖 Standalone web dashboard: same full-catalog ping UI as the TUI, served
159
179
  // 📖 locally with Socket.IO/SSE/REST realtime updates.
160
180
  if (cliArgs.webMode) {
@@ -0,0 +1,23 @@
1
+ # Changelog v0.5.82 - 2026-09-05
2
+
3
+ ### Added
4
+ - 🐬 **New provider: OrcaRouter** (PR #176 by @bangla24bdrang-lab) — zero-markup AI gateway, Free Hacker tier, 3 $-0 models (DeepSeek V4 Flash Free S+, Tencent Hy3 Free S, Qwen3.8 27B Free A+), all verified live on `api.orcarouter.ai/v1/models`. Wired across every surface: TUI, router daemon, benchmark, sync-set, Kilo/OpenCode launchers, key tester, docs and docker-compose (`ORCAROUTER_API_KEY`).
5
+ - 📚 **OpenRouter catalog refresh** (PR #178 by @Muhammad95959): 9 new free models verified live at $0 — MiniMax M2.7, MiniMax M3, GLM-5.2, Nemotron 3 Super ctx fix, Ling 3.0 Flash Fin, Inkling, Inkling Small, Dots 3 Note Preview.
6
+ - 🏗️ **NVIDIA NIM**: Muse Glimmer 30B + Kimi K3 added; Nemotron Nano 30B id fixed to `nvidia/nemotron-nano-3-30b-a3b` (old id confirmed 410 Gone live).
7
+ - 🇨🇳 **SambaNova**: MiniMax M3 added (verified live via `/v1/models`).
8
+ - ✨ **OpenCode Zen**: Laguna S 2.1 Free restored and Ling 3.0 Flash Fin Free added — both present on the live `/v1/models` (66 models checked).
9
+ - 🌐 **Google AI Studio**: Gemini 3.8 Flash added (free tier confirmed on the official pricing page).
10
+
11
+ ### Fixed
12
+ - ☁️ **Cloudflare `{account_id}` in launch paths** (PR #170 by @ia-S-on): the placeholder is now resolved from `CLOUDFLARE_ACCOUNT_ID` in ZCode/Goose config writes and pings (both `{account_id}` and `{$CLOUDFLARE_ACCOUNT_ID}` forms supported, URL-encoded). Fixes 404/400 when launching Cloudflare models in external tools.
13
+ - 🚀 **Release workflow** (PR #177 by @Muhammad95959): publishing steps are skipped cleanly when the `NPM_TOKEN` secret is missing (fork-friendly).
14
+ - 🔍 **LLM7 catalog corrected against the live API**: reverted 9 entries from PR #178 that are paid (`tier=pro`, `usage_based_only`) or nonexistent — glm-5.3, glm-5.3-flash, gemini-3.5-flash-low, gpt-5.4, gpt-5.4-mini, gpt-5.5, gpt-5.6-sol, grok-4.5, grok-4.6. Fixed `gpt-oss:20b` → `gpt-oss` (live ctx 131k). Removed gemini-3.1-flash-lite (now paid). The free turbo tier is exactly: minimax-m2.7, gpt-oss, mistral-Nemo-Instruct-2407, codestral-latest.
15
+ - 🇫🇷 **Scaleway catalog**: reverted 3 unverified removals — Devstral 2 123B, Pixtral 12B and Qwen3 235B are all still Serverless per the official docs (checked 2026-09-05); dropped the false gemma-3-27b-it EOL claim (still served, 40k ctx).
16
+ - 🌐 **Google AI catalog**: restored gemini-2.5-pro and gemini-3-flash-preview (free tier confirmed on the official pricing page); kept the gemini-3.1-pro-preview removal (free tier really is "Not available"); removed gemini-2.0-flash (not on the pricing page).
17
+ - ⚙️ **Cerebras**: removed MiniMax M3 (HTTP 404 "Model does not exist" on live ping). **OpenCode Zen**: removed hy3-free (absent from live `/v1/models`).
18
+ - 🖥️ **Website catalog mirror synced**: `website/src/_fcm-sources/sources.js` had drifted behind main (missing the NIM cleanup, the Cloudflare URL fix and OrcaRouter) — it is now an exact mirror of `sources.js`.
19
+ - 🤖 dependabot: `dependabot/fetch-metadata` v2 → v3 (PR #163).
20
+
21
+ ### Changed
22
+ - 📖 README + website docs: provider counts updated (OpenCode Zen 7, LLM7 4), Google AI notable models refreshed.
23
+ - 🙏 Two new contributors: @ia-S-on and @bangla24bdrang-lab. Welcome!
@@ -0,0 +1,22 @@
1
+ # Changelog v0.5.83 - 2026-09-05
2
+
3
+ Three community issues fixed in one pass, all focused on day-to-day TUI reliability: a hidden Windows prompt, probe ergonomics, and the command palette on small server consoles.
4
+
5
+ ### Added
6
+
7
+ - 🔧 `--fix-permissions` (also `--yes` / `-y`): fix insecure config file permissions (chmod 600) without any prompt, ideal for scripts and CI (#173)
8
+ - ⌨️ Shift+P: re-probe ONLY the models currently failing (404 / 410 / 429 / 401...) instead of re-testing the whole list, for quick rescans after an auth blip (#168)
9
+ - ⌨️ Space: expand the selected row into a 2-line detail card showing provider, key status, endpoint URL, full model id, tier, SWE score, context window, last ping and HTTP code. Space again or moving the cursor collapses it (#168)
10
+ - 🖥️ Command palette degrades gracefully: compact layout on small screens, plain-text rendering when the terminal has no color support (NO_COLOR, TERM=dumb, basic KVM consoles) (#169)
11
+
12
+ ### Fixed
13
+
14
+ - 🪟 Windows: the config permission security warning and its "Fix permissions automatically? (Y/n)" prompt were rendered behind the TUI, making the app look frozen; the check now runs and resolves BEFORE the interactive UI starts (#173)
15
+ - 💥 TUI crash during the 404 probe: a progress-bar accounting bug (RangeError on a negative repeat) could kill the whole process mid-probe (#168)
16
+ - 🎛️ Ctrl+Shift+P was unreachable: the palette intercepted it first; the binding now works and palette commands can never take the TUI down via an unhandled rejection (#168)
17
+ - 📐 Command palette rows overflowed up to 47 columns past the terminal edge on 80-column consoles (truncated mid-word, garbled right border); rows are now composed under a strict ANSI-aware width budget, the panel clamps to any terminal size down to 40x12, and margins are actively cleared (#169)
18
+
19
+ ### Changed
20
+
21
+ - 📖 Help overlay, README and AGENTS.md key reference updated to document Shift+P, Ctrl+Shift+P and Space
22
+ - 🧹 website: strict-null fixes in the changelog loader (first batch of pre-existing typecheck errors)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "free-coding-models",
3
- "version": "0.5.81",
3
+ "version": "0.5.83",
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",
package/sources.js CHANGED
@@ -29,7 +29,7 @@
29
29
  * 📖 Secondary: https://swe-rebench.com (independent evals, scores are lower)
30
30
  * 📖 Leaderboard tracker: https://www.marc0.dev/en/leaderboard
31
31
  *
32
- * @exports nvidiaNim, groq, cerebras, sambanova, openrouter, githubModels, mistral, codestral, scaleway, googleai, zai, qwen, cloudflare, ovhcloud, opencodeZen, kilo, llm7, routeway, novita, ollamaCloud, pollinations, siliconflow, requesty — model arrays per active provider
32
+ * @exports nvidiaNim, groq, cerebras, sambanova, openrouter, githubModels, mistral, codestral, scaleway, googleai, zai, qwen, cloudflare, ovhcloud, opencodeZen, kilo, llm7, routeway, novita, ollamaCloud, pollinations, siliconflow, requesty, orcarouter — model arrays per active provider
33
33
  * @exports sources — map of active free/free-limited providers, each with { name, url, models }
34
34
 
35
35
  * @exports MODELS — flat array of [modelId, label, tier, sweScore, ctx, providerKey]
@@ -43,17 +43,19 @@ 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
45
  ['moonshotai/kimi-k2.6', 'Kimi K2.6', 'S+', '80.2%', '262k'],
46
- ['deepseek-ai/deepseek-v4-pro', 'DeepSeek V4 Pro', 'S+', '80.6%', '1M'], // ⚠️ Page-only / partner-routed (2026-08-13): listed on build.nvidia.com but NOT in integrate.api.nvidia.com/v1/models; served via Fireworks/DeepInfra/Together/OpenRouter
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
- ['stepfun-ai/step-3.7-flash', 'Step 3.7 Flash', 'S+', '74.4%', '256k'],
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
+ ['meta/muse-glimmer-30b', 'Muse Glimmer 30B', 'B+', '-', '128k'], // Added (2026-09-02) — new in NIM catalog
51
52
  // ── S tier — SWE-bench Verified 60–70% ──
52
53
  ['openai/gpt-oss-120b', 'GPT OSS 120B', 'S', '62.4%', '128k'],
53
54
  // Removed (2026-07-27): meta/llama-4-maverick-17b-128e-instruct (Llama 4 Maverick) — EOL 2026-07-27 (HTTP 410 Gone)
54
55
  // 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)
55
56
  // Removed (2026-07-27): mistralai/mistral-small-4-119b-2603 (Mistral Small 4) — EOL 2026-07-27 (HTTP 410 Gone)
56
57
  ['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
57
59
  ['mistralai/mistral-nemotron', 'Mistral Nemotron', 'S', '-', '128k'], // Fixed ID (2026-07-27): nvidia/mistral-nemotron → mistralai/mistral-nemotron
58
60
  // Removed (2026-07-27): deepseek-ai/deepseek-v3.2 (DeepSeek V3.2) — HTTP 404
59
61
  // ── A+ tier — SWE-bench Verified 50–60% ──
@@ -61,30 +63,30 @@ export const nvidiaNim = [
61
63
  ['nvidia/nemotron-3-super-120b-a12b', 'Nemotron 3 Super', 'S', '60.5%', '128k'],
62
64
  ['nvidia/nemotron-3-nano-omni-30b-a3b-reasoning', 'Nemotron 3 Omni', 'A+', '52.0%', '256k'],
63
65
  // Removed (2026-07-27): meta-llama/llama-4-scout-17b-16e-instruct (Llama 4 Scout) — HTTP 404
64
- ['nvidia/llama-3.3-nemotron-super-49b-v1.5', 'Llama 3.3 Nemotron Super 49B v1.5', 'A+', '-', '128k'],
66
+ // 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
65
67
  // ── A tier — SWE-bench Verified 40–50% ──
66
- ['nvidia/nemotron-3-nano-30b-a3b', 'Nemotron Nano 30B', 'A-', '38.8%', '1M'],
68
+ ['nvidia/nemotron-nano-3-30b-a3b', 'Nemotron Nano 30B', 'A-', '38.8%', '1M'],
67
69
  ['openai/gpt-oss-20b', 'GPT OSS 20B', 'A+', '50.3%', '128k'],
68
70
  ['google/gemma-4-31b-it', 'Gemma 4 31B', 'A+', '52.0%', '256k'],
69
- ['mistralai/mistral-large-2-instruct', 'Mistral Large 2', 'A+', '-', '128k'], // Added (2026-08-13)
71
+ // 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`)
70
72
  // Removed (2026-07-27): qwen/qwen2.5-coder-32b-instruct (Qwen2.5 Coder 32B) — EOL 2026-05-12 (HTTP 410 Gone)
71
73
  // Removed (2026-07-27): deepseek-ai/deepseek-r1 (DeepSeek R1) — HTTP 404
72
74
  // Removed (2026-07-27): nvidia/nemotron-3-nano (Nemotron 3 Nano) — HTTP 404 (replaced by nvidia/nvidia-nemotron-nano-9b-v2)
73
- ['nvidia/nvidia-nemotron-nano-9b-v2', 'Nemotron Nano 9B v2', 'A-', '-', '128k'], // Added (2026-07-27)
74
- ['meta/llama-3.3-70b-instruct', 'Llama 3.3 70B', 'A+', '-', '128k'], // Added (2026-08-13)
75
- ['deepseek-ai/deepseek-coder-6.7b-instruct', 'DeepSeek Coder 6.7B', 'A-', '-', '128k'], // Added (2026-07-27)
76
- ['meta/codellama-70b', 'CodeLlama 70B', 'A', '-', '100k'], // Added (2026-08-13)
77
- ['mistralai/codestral-22b-instruct-v0.1', 'Codestral 22B', 'A', '-', '32k'], // Added (2026-07-27)
78
- ['ibm/granite-34b-code-instruct', 'Granite 34B Code', 'A-', '-', '128k'], // Added (2026-08-13)
75
+ // Removed (2026-08-30): nvidia/nvidia-nemotron-nano-9b-v2 (Nemotron Nano 9B v2) 410 Gone per NVIDIA NIM TUI ping (superseded by nvidia/nemotron-nano-3-30b-a3b)
76
+ // Removed (2026-08-30): meta/llama-3.3-70b-instruct (Llama 3.3 70B) 410 Gone per NVIDIA NIM TUI ping (no longer in NIM catalog)
77
+ // Removed (2026-08-30): deepseek-ai/deepseek-coder-6.7b-instruct (DeepSeek Coder 6.7B) 404 NOT FOUND per NVIDIA NIM TUI ping
78
+ // Removed (2026-08-30): meta/codellama-70b (CodeLlama 70B) 404 NOT FOUND per NVIDIA NIM TUI ping (docs.nvidia.com still lists CodeLlama but not via NIM `integrate.api` free tier)
79
+ // Removed (2026-08-30): mistralai/codestral-22b-instruct-v0.1 (Codestral 22B) 404 NOT FOUND per NVIDIA NIM TUI ping (use Codestral `codestral-2508` via Mistral LP)
80
+ // Removed (2026-08-30): ibm/granite-34b-code-instruct (Granite 34B Code) 404 NOT FOUND per NVIDIA NIM TUI ping
79
81
  // ── A- tier — SWE-bench Verified 35–40% ──
80
82
  // Removed (2026-07-27): bytedance/seed-oss-36b-instruct (Seed OSS 36B) — EOL 2026-07-27 (HTTP 410 Gone)
81
83
  // Removed (2026-07-27): stockmark/stockmark-2-100b-instruct (Stockmark 100B) — EOL 2026-07-15 (HTTP 410 Gone)
82
84
  // ── B+ tier — SWE-bench Verified 30–35% ──
83
85
  // Removed (2026-07-27): mistralai/ministral-14b-instruct-2512 (Ministral 14B) — EOL 2026-07-27 (HTTP 410 Gone)
84
- ['thinkingmachines/inkling', 'Inkling', 'B+', '-', '32k'], // Added (2026-07-27)
86
+ // Removed (2026-08-30): thinkingmachines/inkling (Inkling) 410 Gone per NVIDIA NIM TUI ping (per Model Deprecation Request 378412)
85
87
  // ── B tier — SWE-bench Verified 20–30% ──
86
88
  ['meta/llama-3.2-11b-vision-instruct', 'Llama 3.2 11B Vision', 'B', '28.0%', '128k'],
87
- ['nvidia/nemotron-mini-4b-instruct', 'Nemotron Mini 4B', 'B', '-', '32k'], // Added (2026-07-27)
89
+ // Removed (2026-08-30): nvidia/nemotron-mini-4b-instruct (Nemotron Mini 4B) 410 Gone per NVIDIA NIM TUI ping
88
90
  // ── C tier — lightweight/edge models ──
89
91
  // Removed (2026-07-27): microsoft/phi-4-mini-instruct (Phi 4 Mini) — EOL 2026-07-15 (HTTP 410 Gone)
90
92
  ]
@@ -107,6 +109,7 @@ export const cerebras = [
107
109
  // Removed (2026-08-23): zai-glm-4.7 (GLM 4.7) — shutdown 2026-08-17 per Cerebras official notice
108
110
  // ── S tier — SWE-bench Verified 60–70% ──
109
111
  ['gpt-oss-120b', 'GPT OSS 120B', 'S', '62.4%', '65k'], // Fixed (2026-07-27): ctx '128k' → '65k' (free tier per official docs)
112
+ // Removed (2026-09-05): MiniMax-M3 (MiniMax M3) — HTTP 404 "Model does not exist" per live API ping (PR #178 addition reverted)
110
113
  // ── A tier — SWE-bench Verified 40–50% ──
111
114
  ['gemma-4-31b', 'Gemma 4 31B', 'A+', '52.0%', '65k'], // Fixed (2026-07-27): ctx '128k' → '65k' (free tier per official docs)
112
115
  ]
@@ -117,6 +120,7 @@ export const cerebras = [
117
120
  export const sambanova = [
118
121
  // ── S+ tier ──
119
122
  ['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
120
124
  // ── S tier ──
121
125
  ['DeepSeek-V3.1', 'DeepSeek V3.1', 'S', '66.0%', '131k'], // Fixed (2026-07-27): ctx '128k' → '131k' (API exact 131072)
122
126
  ['DeepSeek-V3.2', 'DeepSeek V3.2', 'S+', '70.0%', '32k'],
@@ -141,39 +145,28 @@ export const sambanova = [
141
145
  export const openrouter = [
142
146
  // ── S+ tier — SWE-bench Verified ≥70% ──
143
147
  ['nvidia/nemotron-3-ultra-550b-a55b:free', 'Nemotron 3 Ultra', 'S+', '71.9%', '1M'],
144
- // Removed (2026-08-13): poolside/laguna-m.1:free (Poolside Laguna M.1) — no longer in OpenRouter catalog (neither :free nor paid)
145
148
  ['poolside/laguna-xs-2.1:free', 'Poolside Laguna XS 2.1', 'S+', '70.9%', '262k'],
146
- // Removed (2026-07-27): poolside/laguna-xs.2:free (Poolside Laguna XS.2) superseded by poolside/laguna-xs-2.1:free
149
+ ['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)
151
+ ['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)
147
153
  // ── S tier — SWE-bench Verified 60–70% ──
148
154
  ['cohere/north-mini-code:free', 'North Mini Code', 'S', '-', '256k'],
149
- // Removed (2026-07-27): tencent/hy3:free (Tencent Hy3) no longer on OpenRouter free tier
150
- // Removed (2026-07-27): qwen/qwen3-coder:free (Qwen3 Coder) — no longer on OpenRouter free tier
151
- ['poolside/laguna-s-2.1:free', 'Poolside Laguna S 2.1', 'S+', '-', '262k'], // Added (2026-07-27)
155
+ ['nvidia/nemotron-3-super-120b-a12b:free', 'Nemotron 3 Super', 'S', '60.5%', '262k'],
152
156
  // ── A+ tier — SWE-bench Verified 50–60% ──
153
- ['nvidia/nemotron-3-super-120b-a12b:free', 'Nemotron 3 Super', 'S', '60.5%', '262k'], // Fixed (2026-08-13): ctx '1M' → '262k' (real API ctx)
154
157
  ['nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free', 'Nemotron 3 Omni', 'A+', '52.0%', '256k'],
155
- // Removed (2026-08-13): inclusionai/ling-3.0-flash:free (Ling-3.0 Flash) — :free variant removed, now paid-only
156
- ['liquid/lfm-2.5-2.6b:free', 'LiquidAI LFM2.5-2.6B', 'C', '-', '128k'], // Added (2026-08-13)
157
- ['nvidia/nemotron-3.5-lightning:free', 'NVIDIA Nemotron 3.5 Lightning', 'B+', '-', '1M'], // Added (2026-08-13)
158
- // ── A tier — SWE-bench Verified 40–50% ──
159
- ['nvidia/nemotron-3-nano-30b-a3b:free', 'Nemotron Nano 30B', 'A-', '38.8%', '256k'],
160
- ['nvidia/nemotron-nano-12b-v2-vl:free', 'Nemotron Nano 12B VL', 'A', '20.0%', '128k'],
161
158
  ['google/gemma-4-31b-it:free', 'Gemma 4 31B', 'A+', '52.0%', '262k'],
162
159
  ['google/gemma-4-26b-a4b-it:free', 'Gemma 4 26B MoE', 'A', '38.0%', '262k'],
163
- // Removed (2026-07-27): meta-llama/llama-3.3-70b-instruct:free (Llama 3.3 70B Instruct) — no longer on free tier
164
- // Removed (2026-07-27): nousresearch/hermes-3-llama-3.1-405b:free (Hermes 3 Llama 3.1 405B) — no longer on free tier
165
- // Removed (2026-07-27): qwen/qwen3-next-80b-a3b-instruct:free (Qwen3 Next 80B A3B) — no longer on free tier
166
160
  // ── B+ tier — SWE-bench Verified 30–35% ──
167
- ['nvidia/nemotron-nano-9b-v2:free', 'Nemotron Nano 9B', 'B+', '18.0%', '128k'],
168
- // Removed (2026-08-23): openai/gpt-oss-20b:free (GPT OSS 20B) :free variant removed from OpenRouter catalog; only paid variant remains ($0.03/$0.13)
161
+ ['liquid/lfm-2.5-2.6b:free', 'LiquidAI LFM2.5-2.6B', 'C', '-', '128k'],
162
+ ['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
165
  // ── B tier — SWE-bench Verified 20–30% ──
170
- // Removed (2026-07-27): openrouter/free (OpenRouter Free) no longer on free tier
171
- // Removed (2026-07-27): meta-llama/llama-3.2-3b-instruct:free (Llama 3.2 3B Instruct) no longer on free tier
172
- // Removed (2026-07-27): cognitivecomputations/dolphin-mistral-24b-venice-edition:free (Dolphin Mistral 24B Venice) — no longer on free tier
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
168
  // ── C tier — lightweight/edge models ──
174
169
  ['nvidia/nemotron-3.5-content-safety:free', 'Nemotron 3.5 Content Safety', 'C', '-', '128k'],
175
- // Removed (2026-07-27): liquid/lfm-2.5-1.2b-instruct:free (LFM 2.5 1.2B Instruct) — no longer on free tier
176
- // Removed (2026-07-27): liquid/lfm-2.5-1.2b-thinking:free (LFM 2.5 1.2B Thinking) — no longer on free tier
177
170
  ]
178
171
 
179
172
  // 📖 GitHub Models source - https://models.github.ai
@@ -218,26 +211,25 @@ export const codestral = [
218
211
  // 📖 1M free tokens — API keys at https://console.scaleway.com/iam/api-keys
219
212
  export const scaleway = [
220
213
  // ── S+ tier — SWE-bench Verified ≥70% ──
221
- ['devstral-2-123b-instruct-2512', 'Devstral 2 123B', 'S+', '72.2%', '200k'], // Fixed (2026-08-13): ctx '260k' → '200k' (Serverless tier per official Scaleway catalog)
222
- ['qwen3-235b-a22b-instruct-2507', 'Qwen3 235B', 'A', '45.2%', '250k'],
223
214
  ['glm-5.2', 'GLM 5.2', 'S+', '82.8%', '256k'], // Fixed (2026-08-13): ctx '1M' → '256k' (Serverless tier per official catalog)
224
215
  ['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
225
217
  // ── S tier — SWE-bench Verified 60–70% ──
226
218
  ['qwen3.5-397b-a17b', 'Qwen3.5 400B VLM', 'S+', '76.2%', '250k'],
227
219
  ['gpt-oss-120b', 'GPT OSS 120B', 'S', '62.4%', '128k'],
228
220
  ['mistral-medium-3.5-128b', 'Mistral Medium 3.5 128B', 'S+', '77.6%', '180k'], // Fixed (2026-07-27): ctx '256k' → '180k' (Serverless tier)
229
221
  // ── A+ tier — SWE-bench Verified 50–60% ──
230
- // Removed (2026-08-13): mistral-large-3-675b-instruct-2512 (Mistral Large 675B) — Dedicated tier only, not available on Serverless
231
222
  ['qwen3-coder-30b-a3b-instruct', 'Qwen3 Coder 30B', 'A+', '51.6%', '128k'],
232
223
  ['qwen3.6-35b-a3b', 'Qwen3.6 35B MoE', 'S+', '73.4%', '256k'],
233
- ['holo2-30b-a3b', 'Holo2 30B', 'A+', '52.0%', '22k'],
224
+ ['holo2-30b-a3b', 'Holo2 30B', 'A+', '52.0%', '22k'], // Added (2026-08-13)
234
225
  ['gemma-4-26b-a4b-it', 'Gemma 4 26B MoE', 'A+', '-', '256k'],
235
- // Removed (2026-08-13): gemma-4-31b-it (Gemma 4 31B IT) — Dedicated tier only, not available on Serverless
226
+ // Removed (2026-09-02): gemma-4-31b-it (Gemma 4 31B IT) — Dedicated tier only, not available on Serverless
227
+ ['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)
236
228
  // ── A- tier — SWE-bench Verified 35–40% ──
237
229
  ['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)
238
230
  // ── B+ tier — SWE-bench Verified 30–35% ──
239
231
  ['mistral-small-3.2-24b-instruct-2506', 'Mistral Small 3.2', 'B', '20.0%', '128k'],
240
- ['pixtral-12b-2409', 'Pixtral 12B', 'B+', '-', '128k'],
232
+ ['pixtral-12b-2409', 'Pixtral 12B', 'B+', '-', '128k'], // Restored (2026-09-05) — still Serverless per official docs; PR #178 EOL claim not confirmed
241
233
  // ── B tier — SWE-bench Verified 20–30% ──
242
234
  ['gemma-3-27b-it', 'Gemma 3 27B', 'B', '22.0%', '40k'],
243
235
  ]
@@ -245,16 +237,18 @@ export const scaleway = [
245
237
  // 📖 Google AI Studio source - https://aistudio.google.com
246
238
  // 📖 OpenAI-compatible endpoint exposes Gemini models; free quotas vary by model and region.
247
239
  export const googleai = [
240
+ ['gemini-3.8-flash', 'Gemini 3.8 Flash', 'S+', '-', '1M'], // Added (2026-09-02) — free tier per official pricing page
248
241
  ['gemini-3.7-flash', 'Gemini 3.7 Flash', 'S+', '-', '1M'], // Added (2026-08-13)
249
242
  ['gemini-3.6-flash', 'Gemini 3.6 Flash', 'S+', '-', '1M'], // Added (2026-07-27)
250
- ['gemini-3.5-flash', 'Gemini 3.5 Flash', 'S+', '78.0%', '1M'],
251
- ['gemini-3.1-pro-preview', 'Gemini 3.1 Pro Preview', 'S+', '80.6%', '1M'],
252
- ['gemini-3-flash-preview', 'Gemini 3 Flash Preview', 'S+', '78.0%', '1M'],
243
+ ['gemini-3.5-flash', 'Gemini 3.5 Flash', 'S+', '78.0%', '1M'], // Added (2026-09-02)
253
244
  ['gemini-3.5-flash-lite', 'Gemini 3.5 Flash Lite', 'S', '-', '1M'], // Added (2026-07-27)
254
245
  ['gemini-3.1-flash-lite', 'Gemini 3.1 Flash Lite', 'S', '62.8%', '1M'],
255
- ['gemini-2.5-pro', 'Gemini 2.5 Pro', 'S', '63.8%', '1M'],
256
246
  ['gemini-2.5-flash', 'Gemini 2.5 Flash', 'A+', '54.0%', '1M'],
257
247
  ['gemini-2.5-flash-lite', 'Gemini 2.5 Flash Lite', 'A', '42.6%', '1M'],
248
+ ['gemini-3-flash-preview', 'Gemini 3 Flash Preview', 'S+', '78.0%', '1M'], // Restored (2026-09-05) — free tier confirmed per official pricing page
249
+ ['gemini-2.5-pro', 'Gemini 2.5 Pro', 'S', '63.8%', '1M'], // Restored (2026-09-05) — free tier confirmed per official pricing page
250
+ // Removed (2026-09-02): gemini-3.1-pro-preview (Gemini 3.1 Pro Preview) — free tier "Not available" per official pricing page (rechecked 2026-09-05)
251
+ // Removed (2026-09-05): gemini-2.0-flash — not listed on the official pricing page (PR #178 addition reverted)
258
252
  ]
259
253
 
260
254
  // 📖 ZAI source - https://open.z.ai
@@ -263,6 +257,7 @@ export const googleai = [
263
257
  // 📖 glm-4.7-flash is free but was returning "overloaded" 429s; API /models lists only 9 text models.
264
258
  export const zai = [
265
259
  // ── S+ tier — SWE-bench Verified ≥70% ──
260
+ ['zai/glm-5.3-flash', 'GLM-5.3-Flash', 'S+', '-', '1M'], // Added (2026-09-02)
266
261
  ['zai/glm-5.2', 'GLM-5.2', 'S+', '-', '1M'], // Added (2026-08-13)
267
262
  // ── S tier — SWE-bench Verified 60–70% ──
268
263
  ['zai/glm-4.7-flash', 'GLM-4.7-Flash', 'A+', '59.2%', '200k'], // Fixed (2026-07-27): ctx '203k' → '200k' per official docs
@@ -340,8 +335,8 @@ export const cloudflare = [
340
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'
341
336
  // ── B tier — SWE-bench Verified 20–30% ──
342
337
  ['@cf/meta/llama-3.1-8b-instruct-fast', 'Llama 3.1 8B Instruct (Fast)', 'C', '18.0%', '128k'],
343
- ['@cf/google/gemma-3-12b-it', 'Gemma 3 12B IT', 'A', '-', '128k'], // Added (2026-08-13)
344
- ['@cf/moonshotai/kimi-k2.5', 'Kimi K2.5', 'S+', '-', '256k'], // Added (2026-08-13)
338
+ // 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)
339
+ // Removed (2026-08-30): @cf/moonshotai/kimi-k2.5 (Kimi K2.5) Deprecated 2026-05-30 per Cloudflare changelog; replaced by @cf/moonshotai/kimi-k2.6 (developers.cloudflare.com/changelog/post/2026-05-08-planned-model-deprecations)
345
340
  ]
346
341
 
347
342
  // 📖 OVHcloud AI Endpoints - https://endpoints.ai.cloud.ovh.net
@@ -377,15 +372,13 @@ export const ovhcloud = [
377
372
  // 📖 Config: set provider to opencode/<model-id> in OpenCode config
378
373
  export const opencodeZen = [
379
374
  ['big-pickle', 'Big Pickle', 'S+', '72.0%', '200k'],
380
- // Removed (2026-08-23): deepseek-v4-flash-free (DeepSeek V4 Flash Free) dropped from Zen free-tier docs/pricing; only paid DeepSeek V4 Flash remains
375
+ ['deepseek-v4-flash-free', 'DeepSeek V4 Flash Free', 'S+', '79.0%', '200k'], // Restored (2026-09-02) still in /v1/models live
381
376
  ['mimo-v2.5-free', 'MiMo-V2.5 Free', 'S+', '-', '200k'],
382
377
  ['nemotron-3-ultra-free', 'Nemotron 3 Ultra Free', 'S+', '71.9%', '200k'],
383
- // Removed (2026-08-13): north-mini-code-free (North Mini Code Free) — no longer in OpenCode Zen free-tier API
384
- // Removed (2026-08-23): laguna-s-2.1-free (Laguna S 2.1 Free) — dropped from Zen free-tier docs/pricing (still on /models but no longer free)
385
- // Removed (2026-08-13): ling-3.0-flash-free (Ling-3.0-flash Free) — no longer in OpenCode Zen free-tier API
386
- ['hy3-free', 'Tencent Hy3 Free', 'S', '-', '200k'], // Added (2026-08-13) — brought back after July removal
378
+ // Removed (2026-09-05): hy3-free (Tencent Hy3 Free) — absent from live /v1/models (66 models checked)
387
379
  ['nemotron-3.5-lightning-free', 'Nemotron 3.5 Lightning Free','S+','-', '200k'], // Added (2026-08-13)
388
- // Removed (2026-07-27): hy3-free (Tencent Hy3 Free) — no longer on OpenCode Zen
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)
389
382
  ]
390
383
 
391
384
  // 📖 Kilo source - https://api.kilo.ai/api/gateway
@@ -401,11 +394,13 @@ export const kilo = [
401
394
  // 📖 Pro-tagged models from /v1/models are intentionally excluded.
402
395
  export const llm7 = [
403
396
  // 📖 LLM7 live /v1/models: only `turbo` tier is free (noKeyNeeded). All `pro` models are usage-based paid.
397
+ // 📖 Verified live 2026-09-05: turbo tier = minimax-m2.7, gpt-oss, mistral-Nemo-Instruct-2407, codestral-latest.
398
+ // Removed (2026-09-05): glm-5.3, glm-5.3-flash, gemini-3.5-flash-low, gpt-5.4, gpt-5.4-mini, gpt-5.5, gpt-5.6-sol, grok-4.5, grok-4.6 — tier=pro usage_based_only (paid) or nonexistent on /v1/models (PR #178 additions reverted)
404
399
  // ── S+ tier — SWE-bench Verified ≥70% ──
405
400
  ['minimax-m2.7', 'MiniMax M2.7', 'S+', '78.0%', '180k'],
406
401
  // ── A+ tier — SWE-bench Verified 50–60% ──
407
- ['gemini-3.1-flash-lite', 'Gemini 3.1 Flash Lite', 'A+', '-', '256k'], // Fixed (2026-08-13): ctx '1M' → '256k' (real LLM7 ctx limit)
408
- ['gpt-oss:20b', 'GPT OSS 20B', 'A+', '50.3%', '128k'],
402
+ // Removed (2026-09-05): gemini-3.1-flash-lite (Gemini 3.1 Flash Lite) now tier=pro usage_based_only (paid) per live /v1/models
403
+ ['gpt-oss', 'GPT OSS 20B', 'A+', '50.3%', '131k'], // Fixed (2026-09-05): id 'gpt-oss:20b' → 'gpt-oss', ctx '128k' → '131k' (live 131072)
409
404
  ['mistral-Nemo-Instruct-2407', 'Mistral Nemo 12B Instruct', 'A-', '-', '128k'], // Added (2026-08-13)
410
405
  // ── A tier — SWE-bench Verified 40–50% ──
411
406
  ['codestral-latest', 'Codestral Latest', 'A', '40.0%', '32k'],
@@ -416,14 +411,12 @@ export const llm7 = [
416
411
  // 📖 Live catalog checked 2026-06-11; only chat-completions models with free pricing are listed.
417
412
  export const routeway = [
418
413
  // ── S+ tier — SWE-bench Verified ≥70% ──
419
- // Removed (2026-08-13): deepseek-v4-flash:free (DeepSeek V4 Flash) — no longer in zero-price catalog (only paid DeepSeek V4 Pro 0813 remains)
420
- // Removed (2026-08-13): step-3.5-flash:free (Step 3.5 Flash) — superseded by step-3.7-flash:free
421
- // Removed (2026-07-27): laguna-m.1:free (Poolside Laguna M.1) — unavailable on Routeway
422
- ['laguna-xs.2:free', 'Poolside Laguna XS.2', 'S', '68.2%', '131k'],
414
+ ['deepseek-v4-flash:free', 'DeepSeek V4 Flash', 'S+', '79.0%', '256k'], // Restored (2026-09-02) — back in zero-price catalog
423
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)
424
418
  // ── S tier — SWE-bench Verified 60–70% ──
425
- // Removed (2026-08-13): ling-3.0-flash:free (Ling 3.0 Flash) no longer in zero-price catalog
426
- // Removed (2026-08-13): ling-2.6-flash:free (Ling 2.6 Flash) — no longer in zero-price catalog
419
+ ['laguna-xs.2:free', 'Poolside Laguna XS.2', 'S', '68.2%', '131k'],
427
420
  ['gpt-oss-120b:free', 'GPT OSS 120B', 'S', '60.0%', '131k'],
428
421
  // ── A tier — SWE-bench Verified 40–50% ──
429
422
  ['gemma-4-31b-it:free', 'Gemma 4 31B', 'A+', '52.0%', '262k'],
@@ -501,7 +494,7 @@ export const requesty = [
501
494
  ['google/gemma-4-31b-it', 'Gemma 4 31B', 'A+', '52.0%', '262k'],
502
495
  ['nvidia/nemotron-3-nano-omni-30b-a3b-reasoning', 'Nemotron 3 Omni', 'A+', '52.0%', '131k'],
503
496
  // ── A tier — SWE-bench Verified 40–50% ──
504
- ['nvidia/nemotron-3-nano-30b-a3b', 'Nemotron Nano 30B', 'A-', '38.8%', '262k'],
497
+ ['nvidia/nemotron-nano-3-30b-a3b', 'Nemotron Nano 30B', 'A-', '38.8%', '262k'],
505
498
  // ── B+ tier — SWE-bench Verified 30–35% ──
506
499
  ['nvidia/nemotron-3.5-lightning-30b-a3b', 'Nemotron 3.5 Lightning', 'B+', '-', '1M'],
507
500
  // ── B tier — SWE-bench Verified 20–30% ──
@@ -512,6 +505,22 @@ export const requesty = [
512
505
  ['nvidia/muse-glimmer-30b', 'Muse Glimmer 30B', 'C', '-', '131k'],
513
506
  ]
514
507
 
508
+ // 📖 OrcaRouter source - https://api.orcarouter.ai/v1
509
+ // 📖 OpenAI-compatible gateway: https://api.orcarouter.ai/v1/chat/completions
510
+ // 📖 Zero-markup AI gateway: token prices are passed through at provider rates, so only
511
+ // 📖 the explicitly $-0 models are listed here. Verified live 2026-08-30 via GET /v1/models
512
+ // 📖 (204 models, 3 with pricing.request=0). The orcarouter/fusion + orcarouter/free
513
+ // 📖 adaptive-routing models are reachable through the same endpoint for users who opt
514
+ // 📖 into pay-as-you-go billing, but are not free so they stay out of this catalog.
515
+ export const orcarouter = [
516
+ // ── S+ tier — SWE-bench Verified ≥70% ──
517
+ ['deepseek/deepseek-v4-flash-free', 'DeepSeek V4 Flash (Free)', 'S+', '79.0%', '1M'],
518
+ // ── S tier — SWE-bench Verified 60–70% ──
519
+ ['tencent/hy3-free', 'Tencent Hy3 (Free)', 'S', '-', '256k'],
520
+ // ── A+ tier — SWE-bench Verified 50–60% ──
521
+ ['qwen/qwen3.8-27b-free', 'Qwen3.8 27B (Free)', 'A+', '-', '64k'],
522
+ ]
523
+
515
524
  // 📖 Ollama Cloud source - https://ollama.com/pricing and https://ollama.com/search?c=cloud
516
525
  // 📖 Free plan includes cloud model access with session/weekly limits. This list keeps coding-relevant cloud models only.
517
526
  // 📖 Catalog verified 2026-07-18 against official Ollama cloud model search page.
@@ -598,7 +607,7 @@ export const sources = {
598
607
  },
599
608
  cloudflare: {
600
609
  name: 'Cloudflare AI',
601
- url: 'https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1/chat/completions',
610
+ url: 'https://api.cloudflare.com/client/v4/accounts/{$CLOUDFLARE_ACCOUNT_ID}/ai/v1/chat/completions',
602
611
  quota: 'Free · 10k neurons/day',
603
612
  quotaCode: 'limited',
604
613
  models: cloudflare,
@@ -654,7 +663,7 @@ export const sources = {
654
663
  },
655
664
 
656
665
  'opencode-zen': {
657
- name: 'OpenCode Zen',
666
+ name: 'OpencodeZen',
658
667
  url: 'https://opencode.ai/zen/v1/chat/completions',
659
668
  quota: 'Free · Zen key required',
660
669
  quotaCode: 'free',
@@ -712,6 +721,13 @@ export const sources = {
712
721
  quotaCode: 'free',
713
722
  models: requesty,
714
723
  },
724
+ orcarouter: {
725
+ name: 'OrcaRouter',
726
+ url: 'https://api.orcarouter.ai/v1/chat/completions',
727
+ quota: 'Free · 3 $-0 models · zero markup',
728
+ quotaCode: 'free',
729
+ models: orcarouter,
730
+ },
715
731
  'ollama-cloud': {
716
732
  name: 'Ollama Cloud',
717
733
  url: 'https://ollama.com/v1/chat/completions',
@@ -141,7 +141,7 @@ export function buildBenchmarkRequest(apiKey, modelId, providerKey, url) {
141
141
 
142
142
  const headers = { 'Content-Type': 'application/json' }
143
143
  if (apiKey) headers.Authorization = `Bearer ${apiKey}`
144
- if (providerKey === 'openrouter') {
144
+ if (providerKey === 'openrouter' || providerKey === 'orcarouter') {
145
145
  headers['HTTP-Referer'] = 'https://github.com/vava-nessa/free-coding-models'
146
146
  headers['X-Title'] = 'free-coding-models'
147
147
  }
@@ -186,6 +186,7 @@ const ENV_VARS = {
186
186
  pollinations: ['POLLINATIONS_API_KEY', 'POLLINATIONS_TOKEN'],
187
187
  siliconflow: 'SILICONFLOW_API_KEY',
188
188
  requesty: 'REQUESTY_API_KEY',
189
+ orcarouter: 'ORCAROUTER_API_KEY',
189
190
  }
190
191
 
191
192
  // 📖 Smart Router defaults are intentionally conservative: balanced probing,
@@ -171,7 +171,10 @@ function resolveProviderBaseUrl(providerKey) {
171
171
  if (providerKey === 'cloudflare') {
172
172
  const accountId = (process.env.CLOUDFLARE_ACCOUNT_ID || '').trim()
173
173
  if (!accountId) return null
174
- return providerUrl.replace('{account_id}', accountId).replace(/\/chat\/completions$/i, '')
174
+ return providerUrl
175
+ .replace(/\{\$CLOUDFLARE_ACCOUNT_ID\}/g, encodeURIComponent(accountId))
176
+ .replace(/\{account_id\}/g, encodeURIComponent(accountId))
177
+ .replace(/\/chat\/completions$/i, '')
175
178
  }
176
179
 
177
180
  return providerUrl
@@ -189,7 +192,9 @@ function resolveGooseBaseUrl(providerKey) {
189
192
  if (providerKey === 'cloudflare') {
190
193
  const accountId = (process.env.CLOUDFLARE_ACCOUNT_ID || '').trim()
191
194
  if (!accountId) return null
192
- return providerUrl.replace('{account_id}', accountId)
195
+ return providerUrl
196
+ .replace(/\{\$CLOUDFLARE_ACCOUNT_ID\}/g, encodeURIComponent(accountId))
197
+ .replace(/\{account_id\}/g, encodeURIComponent(accountId))
193
198
  }
194
199
  return providerUrl
195
200
  }