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 +24 -7
- package/bin/free-coding-models.js +20 -0
- package/changelog/v0.5.82.md +23 -0
- package/changelog/v0.5.83.md +22 -0
- package/package.json +1 -1
- package/sources.js +81 -65
- package/src/core/benchmark.js +1 -1
- package/src/core/config.js +1 -0
- package/src/core/endpoint-installer.js +7 -2
- package/src/core/kilo.js +7 -0
- package/src/core/models-dev-index.js +1 -0
- package/src/core/opencode.js +14 -0
- package/src/core/ping.js +14 -4
- package/src/core/provider-key-tester.js +2 -1
- package/src/core/provider-metadata.js +11 -2
- package/src/core/quota-capabilities.js +1 -0
- package/src/core/router-daemon.js +2 -2
- package/src/core/security.js +132 -65
- package/src/core/sync-set.js +1 -1
- package/src/core/tool-launchers.js +15 -5
- package/src/core/utils.js +88 -1
- package/src/tui/app.js +7 -5
- package/src/tui/cli-help.js +1 -0
- package/src/tui/command-palette.js +3 -2
- package/src/tui/key-handler.js +172 -61
- package/src/tui/overlays.js +135 -94
- package/src/tui/render-helpers.js +42 -3
- package/src/tui/render-table.js +74 -4
- package/src/tui/theme.js +2 -0
- package/src/tui/tui-state.js +15 -1
- package/web/dist/assets/{index-Bb5I0K1-.js → index-CSoKc1qF.js} +3 -3
- package/web/dist/index.html +1 -1
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) |
|
|
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) |
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
+
['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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
['
|
|
168
|
-
|
|
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
|
-
|
|
171
|
-
|
|
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-
|
|
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
|
-
|
|
344
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
408
|
-
['gpt-oss
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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/{
|
|
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: '
|
|
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',
|
package/src/core/benchmark.js
CHANGED
|
@@ -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
|
}
|
package/src/core/config.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
}
|