free-coding-models 0.5.95 โ 0.5.97
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 +15 -11
- package/bin/free-coding-models.js +2 -0
- package/changelog/v0.5.96.md +22 -0
- package/changelog/v0.5.97.md +24 -0
- package/package.json +1 -1
- package/sources.js +197 -91
- package/src/core/config.js +28 -3
- package/src/core/i18n/index.js +49 -0
- package/src/core/i18n/locales/en.js +991 -0
- package/src/core/i18n/locales/zh-CN.js +991 -0
- package/src/core/opencode.js +15 -8
- package/src/core/ping.js +31 -1
- package/src/core/playground.js +20 -19
- package/src/core/provider-key-tester.js +1 -0
- package/src/core/provider-metadata.js +11 -2
- package/src/core/quota-capabilities.js +2 -0
- package/src/core/router-daemon.js +58 -8
- package/src/core/router-dashboard.js +15 -14
- package/src/core/router-v2/tui-dashboard.js +27 -26
- package/src/core/shell-env.js +6 -0
- package/src/core/utils.js +22 -0
- package/src/tui/app.js +2 -0
- package/src/tui/cli-help.js +45 -21
- package/src/tui/command-palette.js +19 -1
- package/src/tui/key-handler.js +21 -1
- package/src/tui/overlays.js +113 -107
- package/src/tui/render-helpers.js +4 -3
- package/src/tui/render-table.js +137 -132
- package/src/tui/theme.js +2 -0
- package/web/dist/assets/index-C2lIYp0O.js +45 -0
- package/web/dist/assets/index-DZFdxy2N.css +1 -0
- package/web/dist/index.html +2 -2
- package/web/server.js +58 -6
- package/web/dist/assets/index-BOpGJzSO.js +0 -45
- package/web/dist/assets/index-CCaxIOti.css +0 -1
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<strong>Find the fastest free coding model in seconds.</strong><br>
|
|
9
|
-
Live latency, stability and verdicts for
|
|
9
|
+
Live latency, stability and verdicts for 271 models from 25 free AI providers, then install the one you pick straight into your favorite coding tool.<br><br>
|
|
10
10
|
<strong>Works with:</strong> OpenCode CLI / Desktop / WebUI, OpenClaw, Crush, Goose, Aider, Kilo CLI, Qwen Code, OpenHands, Amp, Hermes, Continue, Cline, Xcode, Pi, ZCode, ForgeCode, Copilot, jcode, Caveman Code and more.
|
|
11
11
|
</p>
|
|
12
12
|
|
|
@@ -24,7 +24,7 @@ free-coding-models
|
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
<p align="center">
|
|
27
|
-
<sub>Then create a free account on one of the <a href="#-providers">
|
|
27
|
+
<sub>Then create a free account on one of the <a href="#-providers">25 providers</a> to grab an API key.</sub>
|
|
28
28
|
</p>
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
@@ -35,7 +35,7 @@ free-coding-models
|
|
|
35
35
|
|
|
36
36
|
## ๐ก Why this tool?
|
|
37
37
|
|
|
38
|
-
There is a large catalog of free and free-limited coding models (**
|
|
38
|
+
There is a large catalog of free and free-limited coding models (**25 providers / 271 live models**, generated from [`sources.js`](./sources.js)). Which one is fastest *right now*? Which one is actually stable, versus just lucky on the last ping?
|
|
39
39
|
|
|
40
40
|
`free-coding-models` (FCM) answers that by pinging every model in parallel, showing live latency, and computing a **live Stability Score (0-100)** combining p95 latency, jitter, spike rate and uptime. Average latency alone is misleading: a model that randomly spikes to 6 seconds is not reliable.
|
|
41
41
|
|
|
@@ -87,18 +87,18 @@ free-coding-models --fiable # print the single most reliable model
|
|
|
87
87
|
|
|
88
88
|
## ๐ข Providers
|
|
89
89
|
|
|
90
|
-
**
|
|
90
|
+
**25 active providers / 271 live models**, sorted by live model count. Top 8:
|
|
91
91
|
|
|
92
92
|
| Provider | Models | Best tier | Env var |
|
|
93
93
|
|----------|--------|-----------|---------|
|
|
94
|
+
| [onomeo](https://onomeo.com/dashboard) | 33 | S+ | `ONOMEO_API_KEY` |
|
|
94
95
|
| [Alibaba DashScope](https://modelstudio.console.alibabacloud.com) | 29 | S+ | `DASHSCOPE_API_KEY` |
|
|
95
|
-
| [Pollinations AI](https://enter.pollinations.ai) |
|
|
96
|
-
| [OpenRouter](https://openrouter.ai/keys) |
|
|
97
|
-
| [Kilo](https://kilo.ai) |
|
|
98
|
-
| [Ollama Cloud](https://ollama.com/settings/keys) |
|
|
99
|
-
| [
|
|
100
|
-
| [
|
|
101
|
-
| [NVIDIA NIM](https://build.nvidia.com) | 12 | S+ | `NVIDIA_API_KEY` |
|
|
96
|
+
| [Pollinations AI](https://enter.pollinations.ai) | 21 | S+ | `POLLINATIONS_API_KEY` |
|
|
97
|
+
| [OpenRouter](https://openrouter.ai/keys) | 18 | S+ | `OPENROUTER_API_KEY` |
|
|
98
|
+
| [Kilo](https://kilo.ai) | 17 | S+ | `KILO_API_KEY` |
|
|
99
|
+
| [Ollama Cloud](https://ollama.com/settings/keys) | 17 | S+ | `OLLAMA_API_KEY` |
|
|
100
|
+
| [NVIDIA NIM](https://build.nvidia.com) | 16 | S+ | `NVIDIA_API_KEY` |
|
|
101
|
+
| [OVHcloud AI](https://endpoints.ai.cloud.ovh.net) | 15 | S+ | `OVH_AI_ENDPOINTS_ACCESS_TOKEN` |
|
|
102
102
|
|
|
103
103
|
> ๐งพ **What "free" means here:** free is a property of the *(provider, model)* pair, never of the provider as a whole. A row is listed only when that exact model id costs $0 to call through that provider (permanent free tier, `:free` variant, or free plan), verified live at audit time. The same open-weights model can be free on one host and paid on another - paid siblings are deliberately excluded. Full breakdown and badge legend: [`docs/providers.md`](./docs/providers.md).
|
|
104
104
|
|
|
@@ -129,6 +129,10 @@ The TUI is the heart of FCM: a live, sortable table of every model with real lat
|
|
|
129
129
|
|
|
130
130
|
Mouse support: click headers to sort, double-click a row to launch, right-click to favorite, scroll to navigate.
|
|
131
131
|
|
|
132
|
+
### Languages
|
|
133
|
+
|
|
134
|
+
The TUI and Web Dashboard support English (default) and Simplified Chinese (`zh-CN`). Change **Language** in Settings; the preference is shared and saved in your local config.
|
|
135
|
+
|
|
132
136
|
> ๐ **Full key table, mouse reference and workflows:** [`docs/tui.md`](./docs/tui.md) ยท Stability score and columns: [`docs/stability.md`](./docs/stability.md)
|
|
133
137
|
|
|
134
138
|
---
|
|
@@ -32,6 +32,7 @@ if (_configDirIdx !== -1 && process.argv[_configDirIdx + 1] && !process.argv[_co
|
|
|
32
32
|
import chalk from 'chalk';
|
|
33
33
|
import { parseArgs, TIER_LETTER_MAP } from '../src/core/utils.js';
|
|
34
34
|
import { loadConfig, saveConfig } from '../src/core/config.js';
|
|
35
|
+
import { setLocale } from '../src/core/i18n/index.js';
|
|
35
36
|
import { ensureTelemetryConfig } from '../src/core/telemetry.js';
|
|
36
37
|
import { ensureFavoritesConfig } from '../src/core/favorites.js';
|
|
37
38
|
import { buildCliHelpText } from '../src/tui/cli-help.js';
|
|
@@ -69,6 +70,7 @@ async function main() {
|
|
|
69
70
|
const cliArgs = parseArgs(process.argv);
|
|
70
71
|
|
|
71
72
|
if (cliArgs.helpMode) {
|
|
73
|
+
setLocale(loadConfig().settings?.language || 'en');
|
|
72
74
|
console.log();
|
|
73
75
|
console.log(buildCliHelpText({ chalk, title: 'free-coding-models' }));
|
|
74
76
|
console.log();
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Changelog v0.5.96 - 2026-09-26
|
|
2
|
+
|
|
3
|
+
Community release: 3 issues fixed, 5 pull requests merged (4 new contributors), 1 declined with reason. The catalog moves to **25 providers / 259 models** with the addition of onomeo and 2 Mistral coding models, minus 6 Pollinations models that silently left the free tier.
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **๐จ๐ณ Simplified Chinese localization** (PR #193 by @Mavlan): the TUI and the Web Dashboard now share one i18n layer, English stays the default and `zh-CN` is one setting away. The language preference is persisted in the shared config and exposed through the web Settings API. CLI help, settings, router, install, search and command-palette text are all localized, and CJK display-width handling is reused for TUI columns and overlay clipping.
|
|
8
|
+
- **onomeo provider** (PR #187 by @Owaid0723666, who also disclosed operating the service): 9 free coding models behind a daily check-in credit system (50k credits on day 1, up to 200k/day with a streak, no card). Wired end to end: env var `ONOMEO_API_KEY`, key test against `GET /v1/models`, quota badge `limited`, theme colors, Docker env passthrough and provider card on the website. Model ids verified live against the public catalog; premium models deliberately not listed.
|
|
9
|
+
- **Mistral coding model aliases** (PR #192 by @MrTodone): `mistral-code-latest` and `mistral-code-fim-latest` join the Mistral provider (both live-verified aliases of codestral-2508, 256k context), handy for clients that address the `mistral-code-*` family directly.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **Daemon dashboard "[object Object]" toast on every open** (issue #189): the daemon's embedded dashboard only stubbed `GET /api/tool-mode`, so the frontend's POST (URL write-back of `?toolMode=`) fell through to the OpenAI-style 404 catch-all. The daemon now handles GET and POST like `web/server.js`: GET returns the persisted `settings.preferredToolMode` instead of a hardcoded `opencode`, POST validates and persists the mode, and the frontend hook extracts nested `error.message` so any future failure reads as a sentence, not `[object Object]`. Covered by 4 new integration tests.
|
|
14
|
+
- **"Unrecognized flag: --model" when launching OpenCode v2** (issue #194): OpenCode v2 rejects flags its entry points don't know, and `opencode web` never accepted `--model` at all. FCM already wrote your pick into `opencode.json` (`config.model`) before every launch, so the flag was redundant: all launch paths (CLI, Web, Desktop, snap/flatpak) now spawn bare and let the config default apply. Works identically on OpenCode v1 and v2.
|
|
15
|
+
- **6 Pollinations models that quietly became paid** (issue #190, reported by @holakoyad): `minimax-m2.7`, `qwen/qwen3.8-max`, `google/gemini-3.1-pro-preview`, `nvidia/nemotron-3-ultra`, `qwen/qwen3-coder-next` and `gemma-4-31b` answer HTTP 200 with the error text embedded in the completion content on free keys, so status-code probes saw them as healthy. All 6 are removed (free alternatives remain on their original providers), and probes now sniff pollinations completions for the paid-Pollen message and report `402` instead of a fake `200`. Covered by 4 new unit tests.
|
|
16
|
+
- **Router v2 failover settings wiped on restart** (PR #191 by @MrTodone): `lastResortModel`, `bodyReadTimeoutMs`, `totalBudgetMs` and `contentValidation` were silently stripped by the config normalizer on every `load() โ save()` round-trip. Unknown failover keys now survive normalization (the daemon still sanitizes them at read time), with round-trip regression tests.
|
|
17
|
+
- **Web Settings API key deletion could resurrect itself** (PR #195 by @ming076): `/api/settings` saved keys with a plain `saveConfig()` whose on-disk merge could restore a just-deleted key. Key add/update/delete now goes through the provider-scoped `persistApiKeysForProvider()` helper, and persistence failures return a real error instead of a fake success.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Provider counts: **24 โ 25 providers, 254 โ 259 models** (minus 6 paid Pollinations, plus 9 onomeo, plus 2 Mistral aliases). `docs/providers.md` regenerated from `sources.js`, README counts and Top-8 table refreshed, website catalog mirror synced.
|
|
22
|
+
- Declined the chalk 5 โ 6 dependabot bump (PR #183): chalk 6 requires Node 22 while FCM supports Node 18+ and CI tests Node 20. It will be revisited when the minimum Node version moves to 22.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
### Added
|
|
2
|
+
|
|
3
|
+
- ๐ก **Full 25-provider audit, 2 researchers at a time: 265 โ 271 live models.** Every provider verified against its live API or official docs on 2026-09-29.
|
|
4
|
+
- **onomeo free pool exploded to 33 models**: Gemini 3.8/3.7/3.5 Flash, GLM 4.5/4.6V/4.7 Flash and Ministral 3 14B all joined the free pool this week (maintainer-confirmed catalog).
|
|
5
|
+
- **Novita free tier is back**: Qwen3.6 Plus and Qwen3.5 Plus (1M ctx, S+), Ling 3.1 Flash and dev/glm46 are zero-price again after the August dry spell.
|
|
6
|
+
- NVIDIA NIM: DeepSeek V4.1 Flash (1M ctx, 552B MoE agentic coder), Kimi K2.6 (256k), Nemotron Nano 3 30B and Codestral 22B re-verified live.
|
|
7
|
+
- LLM7: DeepSeek V4 Flash 0731 (400k ctx, reasoning + tools) verified answering with no key at all.
|
|
8
|
+
- OpenRouter: Space Bunny Alpha (anonymous stealth, 1M ctx) and the openrouter/free meta-router.
|
|
9
|
+
- OVHcloud: Qwen3-Coder-30B-A3B and Mistral Small 3.2 live on the router even though the marketing page hides them.
|
|
10
|
+
- โ๏ธ **Env variable placeholders in the config file (issue #196)**: any `apiKeys` value can now be `"${MY_VAR}"` and is resolved from the environment at read time. The file on disk keeps the placeholder so secrets never land on disk - perfect for Docker `env_file` setups. The shell env-file generator skips placeholder entries instead of exporting a literal that would clobber your real variable.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- ๐ชฆ **6 DashScope models flagged deprecated, shutdown 2026-10-10** per official Alibaba notices: qwen3-coder-plus, qwen3-coder-next, qwen3-coder-480b, qwen3-coder-30b, qwen3.6-max-preview and qwen3-vl-flash. They still serve until then; qwen3.7-plus/3.7-max are the replacements.
|
|
15
|
+
- OrcaRouter quota strings now reflect reality: 5 $0 models + the router, 10 req/min, 50 req/day.
|
|
16
|
+
- Docs provider table regenerated against the shipped catalog.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- ๐ **CORS in Docker finally tamed (issue #198)**: `FCM_ALLOWED_ORIGINS="*"` now works. The list used to be exact-match only, so the `*` entry was silently ignored and cross-machine browser tabs failed CORS checks. Host-header DNS-rebinding protection stays on.
|
|
21
|
+
- Removed 13 dead or quietly-paid models: mistral-nemotron (EOL 09-28), kimi-k2-thinking (EOL 05-12), Mistral Large 3 (403 paid-tier-only on a free key), Z.ai GLM-5.3 + FlashX (paid-only), Zen DeepSeek-V4-Flash-Free (upstream dead) and Muse Spark 1.2 (de-promoted), the ling-3.0-flash-fin `:free` variants on OpenRouter/Kilo, 2 paid Ling models on Novita, and the OrcaRouter fusion trio, which bills the sum of its paid frontier panel legs despite reporting $0.
|
|
22
|
+
- Context windows corrected against live data: GLM-5.3 on NVIDIA 200k โ 1M, muse-glimmer and gpt-oss-20b 128k โ 131k, Zen space-bunny and longcat 200k โ 1M, Pollinations nova-2-lite โ nova-2-lite-v1 rename, Nex N2.5 pair ctx filled at 256k.
|
|
23
|
+
- Kimi K3 on Ollama Cloud now shows its 76.8% SWE-bench Verified score.
|
|
24
|
+
- onomeo provider text synced with the site's current model (PR #201, thanks @Owaid0723666).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "free-coding-models",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.97",
|
|
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",
|