free-coding-models 0.5.80 → 0.5.81
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 +34 -29
- package/changelog/v0.5.81.md +25 -0
- package/package.json +2 -2
- package/sources.js +84 -1
- package/src/core/config.js +3 -0
- package/src/core/kilo.js +1 -1
- package/src/core/opencode.js +2 -2
- package/src/core/provider-key-tester.js +3 -1
- package/src/core/provider-metadata.js +25 -7
- package/src/core/quota-capabilities.js +3 -0
- package/src/tui/theme.js +4 -0
- package/web/dist/assets/{index-B5mIBUi5.js → index-Bb5I0K1-.js} +4 -4
- package/web/dist/index.html +1 -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
|
-
Track
|
|
9
|
+
Track a large catalog of free coding models from 20+ trusted AI providers in real time, 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 and more.<br><br>
|
|
11
11
|
<strong>Use Kimi K2, DeepSeek V3/V4, GPT-OSS, Qwen3, MiniMax M3, GLM, Llama 4, Gemma 4, Devstral and more — for free</strong>
|
|
12
12
|
</p>
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
<img src="https://img.shields.io/npm/v/free-coding-models?color=3d6b00&label=npm&logo=npm" alt="npm version" width="200"><br>
|
|
16
16
|
<img src="https://img.shields.io/node/v/free-coding-models?color=3d6b00&logo=node.js" alt="node version" width="200"><br>
|
|
17
17
|
<img src="https://img.shields.io/npm/l/free-coding-models?color=3d6b00" alt="license" width="200"><br>
|
|
18
|
-
<img src="https://img.shields.io/badge/models-
|
|
19
|
-
<img src="https://img.shields.io/badge/providers-20-1a56db" alt="providers count" width="200">
|
|
18
|
+
<img src="https://img.shields.io/badge/models-large%20catalog-3d6b00?logo=nvidia" alt="models count" width="200"><br>
|
|
19
|
+
<img src="https://img.shields.io/badge/providers-20%2B-1a56db" alt="providers count" width="200">
|
|
20
20
|
</p>
|
|
21
21
|
|
|
22
22
|
```bash
|
|
@@ -25,7 +25,7 @@ free-coding-models
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
<p align="center">
|
|
28
|
-
<sub>Then create a free account on one of the <a href="#-free-ai-providers">
|
|
28
|
+
<sub>Then create a free account on one of the <a href="#-free-ai-providers">many providers</a> to grab an API key.</sub>
|
|
29
29
|
</p>
|
|
30
30
|
|
|
31
31
|
<p align="center">
|
|
@@ -60,7 +60,7 @@ free-coding-models
|
|
|
60
60
|
|
|
61
61
|
## 💡 Why this tool?
|
|
62
62
|
|
|
63
|
-
There
|
|
63
|
+
There is a large catalog of free and free-limited coding models from 20+ vetted providers. Which one is fastest *right now*? Which one is actually stable, versus just lucky on the last ping?
|
|
64
64
|
|
|
65
65
|
`free-coding-models` (FCM) answers that by pinging every model in parallel, showing live latency, and computing a **live Stability Score (0–100)**. Average latency alone is misleading — a model that randomly spikes to 6 seconds isn't reliable. The stability score combines **p95 latency** (30%), **jitter/variance** (30%), **spike rate** (20%), and **uptime** (20%) to measure true reliability.
|
|
66
66
|
|
|
@@ -94,7 +94,7 @@ Requires **Node.js 18+**. That's the only prerequisite — FCM has a single runt
|
|
|
94
94
|
|
|
95
95
|
### ② Grab one free API key
|
|
96
96
|
|
|
97
|
-
FCM tracks
|
|
97
|
+
FCM tracks a large catalog of models from 20+ providers, but you only need **one key** to start. The fastest sign-ups (no credit card, instant key):
|
|
98
98
|
|
|
99
99
|
- **Groq** → [console.groq.com/keys](https://console.groq.com/keys) — Llama 4, GPT-OSS, blazing fast
|
|
100
100
|
- **Cerebras** → [cloud.cerebras.ai](https://cloud.cerebras.ai) — the lowest latency in the whole catalog
|
|
@@ -165,30 +165,35 @@ Once the TUI feels familiar, FCM has three more surfaces — pick the one that m
|
|
|
165
165
|
|
|
166
166
|
## 🟢 Free AI Providers
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
A large catalog of coding models from 20+ active providers, ranked by practical free-tier usefulness. Sign up on any one of them to get a key — you only need one to start.
|
|
169
169
|
|
|
170
170
|
| # | Provider | Models | Tier range | Free tier | Env var |
|
|
171
171
|
|---|----------|--------|-----------|-----------|--------|
|
|
172
|
-
| 1 | [NVIDIA NIM](https://build.nvidia.com) |
|
|
173
|
-
| 2 | [Groq](https://console.groq.com/keys) |
|
|
172
|
+
| 1 | [NVIDIA NIM](https://build.nvidia.com) | 25 | S+ → C | ~40 RPM (no credit card) | `NVIDIA_API_KEY` |
|
|
173
|
+
| 2 | [Groq](https://console.groq.com/keys) | 5 | S → B | 30 RPM, 1K‑14.4K req/day (no credit card) | `GROQ_API_KEY` |
|
|
174
174
|
| 3 | [Cerebras](https://cloud.cerebras.ai) | 2 | S+ → S | 30 RPM, 1M tokens/day (no credit card) | `CEREBRAS_API_KEY` |
|
|
175
|
-
| 4 | [Google AI Studio](https://aistudio.google.com/apikey) |
|
|
176
|
-
| 5 | [
|
|
177
|
-
| 6 | [
|
|
178
|
-
| 7 | [
|
|
179
|
-
| 8 | [
|
|
180
|
-
| 9 | [
|
|
181
|
-
| 10 | [
|
|
182
|
-
| 11 | [
|
|
183
|
-
| 12 | [
|
|
184
|
-
| 13 | [
|
|
185
|
-
| 14 | [
|
|
186
|
-
| 15 | [
|
|
187
|
-
| 16 | [
|
|
188
|
-
| 17 | [
|
|
189
|
-
| 18 | [
|
|
190
|
-
| 19 | [
|
|
191
|
-
| 20 | [
|
|
175
|
+
| 4 | [Google AI Studio](https://aistudio.google.com/apikey) | 10 | S+ → A | Gemini free quotas vary by model/region | `GOOGLE_API_KEY` |
|
|
176
|
+
| 5 | [Mistral La Plateforme](https://console.mistral.ai/api-keys) | 6 | S+ → A | Experiment plan, free evaluation tier | `MISTRAL_API_KEY` |
|
|
177
|
+
| 6 | [Cloudflare Workers AI](https://dash.cloudflare.com) | 19 | S+ → B | 10K neurons/day, 300 RPM (no credit card) | `CLOUDFLARE_API_TOKEN` + `CLOUDFLARE_ACCOUNT_ID` |
|
|
178
|
+
| 7 | [OpenRouter](https://openrouter.ai/keys) | 14 | S+ → C | 50 req/day free, 1K/day with $10 spend | `OPENROUTER_API_KEY` |
|
|
179
|
+
| 8 | [SambaNova](https://cloud.sambanova.ai/apis) | 6 | S+ → B+ | Small developer quota, useful for light usage | `SAMBANOVA_API_KEY` |
|
|
180
|
+
| 9 | [OVHcloud AI Endpoints](https://endpoints.ai.cloud.ovh.net) | 10 | S → B | 2 req/min/IP free, 400 RPM with key | `OVH_AI_ENDPOINTS_ACCESS_TOKEN` |
|
|
181
|
+
| 10 | [Codestral](https://console.mistral.ai/api-keys) | 1 | B+ | 30 RPM, 2K req/day | `MISTRAL_API_KEY` |
|
|
182
|
+
| 11 | [ZAI](https://z.ai) | 7 | S | Free Flash models only | `ZAI_API_KEY` |
|
|
183
|
+
| 12 | [Scaleway](https://console.scaleway.com/iam/api-keys) | 15 | S+ → B | 1M free tokens | `SCALEWAY_API_KEY` |
|
|
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 ✨ |
|
|
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` |
|
|
188
|
+
| 17 | [Routeway](https://routeway.ai) | 10 | S+ → C | Explicit `:free` zero-price models | `ROUTEWAY_API_KEY` |
|
|
189
|
+
| 18 | [Novita AI](https://novita.ai) | 0 | - | No zero-price models currently | `NOVITA_API_KEY` |
|
|
190
|
+
| 19 | [Ollama Cloud](https://ollama.com/pricing) | 17 | S+ → A | Free cloud usage with session/weekly limits | `OLLAMA_API_KEY` |
|
|
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
|
+
| 21 | [SiliconFlow](https://cloud.siliconflow.cn/account/ak) | 3 | A → B+ | 3 models @ $0, 1000 RPM (phone SMS required) | `SILICONFLOW_API_KEY` |
|
|
193
|
+
| 22 | [Requesty](https://app.requesty.ai/api-keys) | 12 | S+ → C | 200 req/day free, no card (4x OpenRouter) | `REQUESTY_API_KEY` |
|
|
194
|
+
|
|
195
|
+
> **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
|
+
> **SiliconFlow & Requesty** : integrations verifiees le 2026-08-24 via `/v1/models` live et docs officielles, free tiers recurrents confirmes sans Pollen.
|
|
192
197
|
|
|
193
198
|
> 💡 One key is enough to start. Add more at any time by pressing **`P`** inside the TUI (or via the Web Dashboard **Settings** page). A few providers (`Kilo`, `LLM7`, OVHcloud sandbox) can even answer without a key, with tighter shared limits.
|
|
194
199
|
|
|
@@ -231,7 +236,7 @@ To protect you, FCM:
|
|
|
231
236
|
|
|
232
237
|
The TUI is the heart of FCM. Launch it with `free-coding-models` and you get a live, sortable table of every model — real latency, stability, verdict, and a one-key launch into your coding tool.
|
|
233
238
|
|
|
234
|
-
<p align="center"><video src="website/public/videos/tui-first-launch.mp4" alt="First launch —
|
|
239
|
+
<p align="center"><video src="website/public/videos/tui-first-launch.mp4" alt="First launch — many models ping in parallel" autoplay muted loop playsinline width="100%"></video></p>
|
|
235
240
|
|
|
236
241
|
### First-run flow
|
|
237
242
|
|
|
@@ -761,7 +766,7 @@ Every routed request through the daemon feeds a persistent per-model telemetry f
|
|
|
761
766
|
|
|
762
767
|
### Features at a glance
|
|
763
768
|
|
|
764
|
-
- **Parallel pings** — all
|
|
769
|
+
- **Parallel pings** — all models tested simultaneously via native `fetch`
|
|
765
770
|
- **AI benchmark columns** — `Ctrl+A` / `Ctrl+U` split into AI Latency + TPS; optional Startup AI Speed Scan
|
|
766
771
|
- **Adaptive monitoring** — 2s burst for 60s → 10s normal → 30s idle
|
|
767
772
|
- **Stability score** — composite 0–100 (p95, jitter, spike rate, uptime)
|
|
@@ -801,7 +806,7 @@ A: Yes — see [`sources.js`](./sources.js) for the model catalog format.
|
|
|
801
806
|
|
|
802
807
|
## ⚖️ Model Licensing & Commercial Use
|
|
803
808
|
|
|
804
|
-
**Short answer:** the
|
|
809
|
+
**Short answer:** the cataloged models are API/CLI-served where generated-output ownership is generally granted by the provider/model terms. **You own the generated output** — code, text, or otherwise — and can use it commercially. The licenses below govern the *model weights themselves*, not your generated content.
|
|
805
810
|
|
|
806
811
|
| License | Models | Commercial Output |
|
|
807
812
|
|---------|--------|:-----------------:|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Changelog v0.5.81 - 2026-08-24
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **3 new free recurring providers** (total 22 providers, ~207 models)
|
|
5
|
+
- **Pollinations AI** — 10 models `gen.pollinations.ai/v1` : `laguna`, `minimax-m2.7`, `qwen-coder`, `deepseek`, `kimi-code`, `openai`, `gemma-4-31b`, `gpt-oss`, `qwen3.7-flash`, `nemotron-3.5-lightning` — free via daily Pollen grants (Quest 3.25) , ⚠️ experimental integration not yet confirmed stable (Pollen system may change, `MISS` = 402 when balance 0, `HIT` cache may still 200)
|
|
6
|
+
- **SiliconFlow** — 3 models `api.siliconflow.cn/v1` : `THUDM/GLM-Z1-9B-0414`, `Qwen/Qwen3-8B`, `deepseek-ai/DeepSeek-R1-Distill-Qwen-7B` — 3 models @ $0 forever, 1000 RPM, phone SMS required, verified 2026-08-24 via pricing page
|
|
7
|
+
- **Requesty** — 12 models `router.requesty.ai/v1` : `nvidia/nemotron-3-ultra-550b-a55b`, `poolside/laguna-xs.2`, `nvidia/nemotron-3-super`, `poolside/laguna-m.1`, `google/gemma-4-31b-it`, `nvidia/nemotron-3-nano-omni`, `nvidia/nemotron-3-nano`, `nvidia/nemotron-3.5-lightning-30b-a3b`, `mistral/leanstral-1-5`, `novita/ling-3.0-tiny`, `nvidia/content-safety`, `nvidia/muse-glimmer-30b` — 200 req/day free no card, 4x OpenRouter, verified live via `GET /v1/models` 676 models 12 zero-price
|
|
8
|
+
- **Provider metadata** for the 3 new providers: `ENV_VAR_NAMES` (`POLLINATIONS_API_KEY`, `SILICONFLOW_API_KEY`, `REQUESTY_API_KEY`), `PROVIDER_METADATA` labels/couleurs/signupHint/rateLimits with detailed Pollen explanation, `PROVIDER_CAPABILITIES` daily reset, `PROVIDER_AUTH_ENDPOINTS` fixes
|
|
9
|
+
- **Theme colors** for `pollinations` (pink) and `requesty` (blue) in both dark/light palettes
|
|
10
|
+
- **Pollen help** in Settings overlay and README/website: explains Pollen ≈ $1, daily Quest grants via tier/quests, 0 Pollen = 402, HIT vs MISS, wallet `enter.pollinations.ai`, grants at midnight UTC, experimental note
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **README** : removed hard-coded total counts everywhere (super chiant a maintenir) — `~207 models across 22 providers` -> `a large catalog of free coding models from 20+ providers`, badges `models-207` -> `models-large catalog` `providers-22` -> `providers-20+`, `~222` video caption -> `many`, `Parallel pings all ~207` -> `all models`, `~207 cataloged` -> `the cataloged`; provider table updated to 22 rows with real per-provider counts and new Pollinations/SiliconFlow/Requesty rows, added Pollen explainer block after table (with experimental warning) and SiliconFlow/Requesty verified note; removed GitHub Models from active table (retired 2026-07-30)
|
|
14
|
+
- **Website docs** : `website/src/content/docs/introduction.mdx` and `quick-start.mdx` and `core/providers.mdx` and `docs/development.md` and `routes/index.tsx` hero `222+` -> `Many` — same generic wording, no hard totals
|
|
15
|
+
- **Pollinations experimental flag** : README and `website/src/content/docs/core/providers.mdx` mark Pollinations `⚠️ experimental` and note `not yet confirmed stable`
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- **SiliconFlow baseURL** : `api.siliconflow.com` -> `api.siliconflow.cn` in `src/core/opencode.js` (2 sites) and `src/core/kilo.js` and `src/core/provider-key-tester.js` `siliconflow` endpoint now `https://api.siliconflow.cn/v1/models`
|
|
19
|
+
- **Provider key tester** : `pollinations` and `requesty` set to `null` (their `/v1/models` are public without auth, so auth-only probe would always 200 and give false ok, now it falls back to ping which correctly shows 402 when balance 0)
|
|
20
|
+
- **Sync** : `sync-website-sources.sh` run -> `website/src/_fcm-sources/sources.js` updated to 22 providers
|
|
21
|
+
|
|
22
|
+
### Verified
|
|
23
|
+
- `pnpm test` 813 pass 0 fail
|
|
24
|
+
- `node -e import('./sources.js')` 22 providers 207 models 0 dups
|
|
25
|
+
- Live probes 2026-08-24: Pollinations `sk_GCaY...` and `sk_0dSR...` both `402` on MISS with `0.0000` balance (HIT still 200 via fallback), Quest wallet `3.25` not yet linked to keys (Budget ∞ but still 0), Requesty 12 zero-price confirmed, SiliconFlow pricing page verified
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "free-coding-models",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.81",
|
|
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",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"@tabler/icons-react": "^3.44.0",
|
|
77
77
|
"@tanstack/react-table": "^8.21.3",
|
|
78
78
|
"chalk": "^5.6.2",
|
|
79
|
-
"kandown": "^0.
|
|
79
|
+
"kandown": "^0.52.0",
|
|
80
80
|
"socket.io": "^4.8.3",
|
|
81
81
|
"socket.io-client": "^4.8.3",
|
|
82
82
|
"@tanstack/react-virtual": "^3.14.2"
|
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 — 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 — 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]
|
|
@@ -450,6 +450,68 @@ export const novita = [
|
|
|
450
450
|
// Removed (2026-07-27): qwen/qwen3.5-plus (Qwen3.5 Plus) — no longer in novita catalog
|
|
451
451
|
]
|
|
452
452
|
|
|
453
|
+
// 📖 Pollinations AI source - https://gen.pollinations.ai
|
|
454
|
+
// 📖 OpenAI-compatible endpoint: https://gen.pollinations.ai/v1/chat/completions
|
|
455
|
+
// 📖 Free tier: anonymous without key or free API key from https://enter.pollinations.ai
|
|
456
|
+
// 📖 Daily Pollen grants per tier (seed/flower/nectar) — free models cost Pollen but grants renew daily; anonymous tier has rate limits.
|
|
457
|
+
// 📖 Verified live 2026-08-23 via GET /v1/models (319 models); IDs below are live and coding-relevant.
|
|
458
|
+
export const pollinations = [
|
|
459
|
+
// ── S+ tier — SWE-bench Verified ≥70% ──
|
|
460
|
+
['laguna', 'Laguna XS.2', 'S+', '70.9%', '1M'],
|
|
461
|
+
['minimax-m2.7', 'MiniMax M2.7', 'S+', '78.0%', '200k'],
|
|
462
|
+
// ── S tier — SWE-bench Verified 60–70% ──
|
|
463
|
+
['qwen-coder', 'Qwen3 Coder', 'S', '69.6%', '262k'],
|
|
464
|
+
['deepseek', 'DeepSeek V3', 'S', '66.0%', '1M'],
|
|
465
|
+
['kimi-code', 'Kimi K2 Code', 'S', '60.4%', '262k'],
|
|
466
|
+
['openai', 'OpenAI GPT', 'S', '62.4%', '400k'],
|
|
467
|
+
// ── A+ tier — SWE-bench Verified 50–60% ──
|
|
468
|
+
['gemma-4-31b', 'Gemma 4 31B', 'A+', '52.0%', '262k'],
|
|
469
|
+
['gpt-oss', 'GPT OSS 20B', 'A+', '50.3%', '131k'],
|
|
470
|
+
['qwen3.7-flash', 'Qwen3.7 Flash', 'A+', '-', '1M'],
|
|
471
|
+
// ── B+ tier ──
|
|
472
|
+
['nemotron-3.5-lightning', 'Nemotron 3.5 Lightning', 'B+', '-', '262k'],
|
|
473
|
+
]
|
|
474
|
+
|
|
475
|
+
// 📖 SiliconFlow source - https://api.siliconflow.cn/v1/chat/completions
|
|
476
|
+
// 📖 OpenAI-compatible endpoint: https://api.siliconflow.cn/v1
|
|
477
|
+
// 📖 Free tier: permanently free models at $0 (no card needed beyond phone SMS verification).
|
|
478
|
+
// 📖 Verified 2026-08-23 via pricing page + docs: THUDM/GLM-Z1-9B-0414 is 免费; Qwen3-8B and DeepSeek-R1-Distill-Qwen-7B
|
|
479
|
+
// 📖 documented as free in SiliconFlow guide 2026-06-05 ("Three models are completely free: Qwen3-8B, DeepSeek-R1-Distill-Qwen-7B, DeepSeek-OCR")
|
|
480
|
+
// 📖 and still reachable with free-tier rate limits (1000 RPM). Keep only the chat text models here.
|
|
481
|
+
export const siliconflow = [
|
|
482
|
+
// ── A tier — SWE-bench Verified 40–50% ──
|
|
483
|
+
['THUDM/GLM-Z1-9B-0414', 'GLM-Z1 9B', 'A', '-', '32k'],
|
|
484
|
+
// ── B+ tier ──
|
|
485
|
+
['Qwen/Qwen3-8B', 'Qwen3 8B', 'B+', '30.0%', '32k'],
|
|
486
|
+
['deepseek-ai/DeepSeek-R1-Distill-Qwen-7B', 'DeepSeek R1 Distill Qwen 7B', 'A', '-', '32k'],
|
|
487
|
+
]
|
|
488
|
+
|
|
489
|
+
// 📖 Requesty source - https://router.requesty.ai/v1
|
|
490
|
+
// 📖 OpenAI-compatible gateway: https://router.requesty.ai/v1/chat/completions
|
|
491
|
+
// 📖 Free tier: 200 req/day on zero-price free models (4× OpenRouter), no card, EU residency, routing/caching included.
|
|
492
|
+
// 📖 Verified live 2026-08-23 via GET /v1/models (676 models, 12 with input_price=0 & output_price=0).
|
|
493
|
+
export const requesty = [
|
|
494
|
+
// ── S+ tier — SWE-bench Verified ≥70% ──
|
|
495
|
+
['nvidia/nemotron-3-ultra-550b-a55b', 'Nemotron 3 Ultra', 'S+', '71.9%', '1M'],
|
|
496
|
+
['poolside/laguna-xs.2', 'Laguna XS.2', 'S+', '70.9%', '32k'],
|
|
497
|
+
// ── S tier — SWE-bench Verified 60–70% ──
|
|
498
|
+
['nvidia/nemotron-3-super-120b-a12b', 'Nemotron 3 Super', 'S', '60.5%', '1M'],
|
|
499
|
+
['poolside/laguna-m.1', 'Laguna M.1', 'S', '-', '32k'],
|
|
500
|
+
// ── A+ tier — SWE-bench Verified 50–60% ──
|
|
501
|
+
['google/gemma-4-31b-it', 'Gemma 4 31B', 'A+', '52.0%', '262k'],
|
|
502
|
+
['nvidia/nemotron-3-nano-omni-30b-a3b-reasoning', 'Nemotron 3 Omni', 'A+', '52.0%', '131k'],
|
|
503
|
+
// ── A tier — SWE-bench Verified 40–50% ──
|
|
504
|
+
['nvidia/nemotron-3-nano-30b-a3b', 'Nemotron Nano 30B', 'A-', '38.8%', '262k'],
|
|
505
|
+
// ── B+ tier — SWE-bench Verified 30–35% ──
|
|
506
|
+
['nvidia/nemotron-3.5-lightning-30b-a3b', 'Nemotron 3.5 Lightning', 'B+', '-', '1M'],
|
|
507
|
+
// ── B tier — SWE-bench Verified 20–30% ──
|
|
508
|
+
['mistral/leanstral-1-5', 'Leanstral 1.5', 'B', '-', '262k'],
|
|
509
|
+
['novita/inclusionai/ling-3.0-tiny', 'Ling 3.0 Tiny', 'B', '-', '262k'],
|
|
510
|
+
// ── C tier — other zero-price models (kept for breadth) ──
|
|
511
|
+
['nvidia/nemotron-3.5-content-safety', 'Nemotron Content Safety', 'C', '-', '131k'],
|
|
512
|
+
['nvidia/muse-glimmer-30b', 'Muse Glimmer 30B', 'C', '-', '131k'],
|
|
513
|
+
]
|
|
514
|
+
|
|
453
515
|
// 📖 Ollama Cloud source - https://ollama.com/pricing and https://ollama.com/search?c=cloud
|
|
454
516
|
// 📖 Free plan includes cloud model access with session/weekly limits. This list keeps coding-relevant cloud models only.
|
|
455
517
|
// 📖 Catalog verified 2026-07-18 against official Ollama cloud model search page.
|
|
@@ -629,6 +691,27 @@ export const sources = {
|
|
|
629
691
|
quotaCode: 'limited',
|
|
630
692
|
models: novita, // Empty — kept for backward compat in user configs
|
|
631
693
|
},
|
|
694
|
+
pollinations: {
|
|
695
|
+
name: 'Pollinations AI',
|
|
696
|
+
url: 'https://gen.pollinations.ai/v1/chat/completions',
|
|
697
|
+
quota: 'Free · daily Pollen grants · key at enter.pollinations.ai',
|
|
698
|
+
quotaCode: 'free',
|
|
699
|
+
models: pollinations,
|
|
700
|
+
},
|
|
701
|
+
siliconflow: {
|
|
702
|
+
name: 'SiliconFlow',
|
|
703
|
+
url: 'https://api.siliconflow.cn/v1/chat/completions',
|
|
704
|
+
quota: 'Free · 3 models @ $0 · 1000 RPM',
|
|
705
|
+
quotaCode: 'free',
|
|
706
|
+
models: siliconflow,
|
|
707
|
+
},
|
|
708
|
+
requesty: {
|
|
709
|
+
name: 'Requesty',
|
|
710
|
+
url: 'https://router.requesty.ai/v1/chat/completions',
|
|
711
|
+
quota: 'Free · 200 req/day · no card',
|
|
712
|
+
quotaCode: 'free',
|
|
713
|
+
models: requesty,
|
|
714
|
+
},
|
|
632
715
|
'ollama-cloud': {
|
|
633
716
|
name: 'Ollama Cloud',
|
|
634
717
|
url: 'https://ollama.com/v1/chat/completions',
|
package/src/core/config.js
CHANGED
|
@@ -183,6 +183,9 @@ const ENV_VARS = {
|
|
|
183
183
|
routeway: 'ROUTEWAY_API_KEY',
|
|
184
184
|
novita: 'NOVITA_API_KEY',
|
|
185
185
|
'ollama-cloud': 'OLLAMA_API_KEY',
|
|
186
|
+
pollinations: ['POLLINATIONS_API_KEY', 'POLLINATIONS_TOKEN'],
|
|
187
|
+
siliconflow: 'SILICONFLOW_API_KEY',
|
|
188
|
+
requesty: 'REQUESTY_API_KEY',
|
|
186
189
|
}
|
|
187
190
|
|
|
188
191
|
// 📖 Smart Router defaults are intentionally conservative: balanced probing,
|
package/src/core/kilo.js
CHANGED
|
@@ -163,7 +163,7 @@ export async function startKilo(model, fcmConfig) {
|
|
|
163
163
|
config.provider.siliconflow = {
|
|
164
164
|
npm: '@ai-sdk/openai-compatible',
|
|
165
165
|
name: 'SiliconFlow',
|
|
166
|
-
options: { baseURL: 'https://api.siliconflow.
|
|
166
|
+
options: { baseURL: 'https://api.siliconflow.cn/v1', apiKey: '{env:SILICONFLOW_API_KEY}' },
|
|
167
167
|
models: {}
|
|
168
168
|
}
|
|
169
169
|
} else if (providerKey === 'together') {
|
package/src/core/opencode.js
CHANGED
|
@@ -478,7 +478,7 @@ export async function startOpenCode(model, fcmConfig) {
|
|
|
478
478
|
config.provider.siliconflow = {
|
|
479
479
|
npm: '@ai-sdk/openai-compatible',
|
|
480
480
|
name: 'SiliconFlow',
|
|
481
|
-
options: { baseURL: 'https://api.siliconflow.
|
|
481
|
+
options: { baseURL: 'https://api.siliconflow.cn/v1', apiKey: '{env:SILICONFLOW_API_KEY}' },
|
|
482
482
|
models: {}
|
|
483
483
|
}
|
|
484
484
|
} else if (providerKey === 'together') {
|
|
@@ -846,7 +846,7 @@ export async function startOpenCodeDesktop(model, fcmConfig) {
|
|
|
846
846
|
config.provider.siliconflow = {
|
|
847
847
|
npm: '@ai-sdk/openai-compatible',
|
|
848
848
|
name: 'SiliconFlow',
|
|
849
|
-
options: { baseURL: 'https://api.siliconflow.
|
|
849
|
+
options: { baseURL: 'https://api.siliconflow.cn/v1', apiKey: '{env:SILICONFLOW_API_KEY}' },
|
|
850
850
|
models: {}
|
|
851
851
|
}
|
|
852
852
|
} else if (providerKey === 'together') {
|
|
@@ -65,7 +65,9 @@ export const PROVIDER_AUTH_ENDPOINTS = {
|
|
|
65
65
|
fireworks: { url: 'https://api.fireworks.ai/v1/models', method: 'GET' },
|
|
66
66
|
hyperbolic: { url: 'https://api.hyperbolic.xyz/v1/models', method: 'GET' },
|
|
67
67
|
scaleway: { url: 'https://api.scaleway.ai/v1/models', method: 'GET' },
|
|
68
|
-
siliconflow: { url: 'https://api.siliconflow.
|
|
68
|
+
siliconflow: { url: 'https://api.siliconflow.cn/v1/models', method: 'GET' },
|
|
69
|
+
pollinations: null,
|
|
70
|
+
requesty: null,
|
|
69
71
|
together: { url: 'https://api.together.xyz/v1/models', method: 'GET' },
|
|
70
72
|
perplexity: { url: 'https://api.perplexity.ai/v1/models', method: 'GET' },
|
|
71
73
|
chutes: { url: 'https://chutes.ai/v1/models', method: 'GET' },
|
|
@@ -62,6 +62,9 @@ export const ENV_VAR_NAMES = {
|
|
|
62
62
|
routeway: 'ROUTEWAY_API_KEY',
|
|
63
63
|
novita: 'NOVITA_API_KEY',
|
|
64
64
|
'ollama-cloud': 'OLLAMA_API_KEY',
|
|
65
|
+
pollinations: 'POLLINATIONS_API_KEY',
|
|
66
|
+
siliconflow: 'SILICONFLOW_API_KEY',
|
|
67
|
+
requesty: 'REQUESTY_API_KEY',
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
// 📖 OPENCODE_MODEL_MAP: sparse table of model IDs that differ between sources.js and OpenCode's
|
|
@@ -201,13 +204,6 @@ export const PROVIDER_METADATA = {
|
|
|
201
204
|
signupHint: 'Get API key',
|
|
202
205
|
rateLimits: 'Gemini free quotas vary by model and region',
|
|
203
206
|
},
|
|
204
|
-
siliconflow: {
|
|
205
|
-
label: 'SiliconFlow',
|
|
206
|
-
color: chalk.rgb(178, 235, 242),
|
|
207
|
-
signupUrl: 'https://cloud.siliconflow.cn/account/ak',
|
|
208
|
-
signupHint: 'API Keys → Create',
|
|
209
|
-
rateLimits: 'Free models: usually 100 RPM, varies by model',
|
|
210
|
-
},
|
|
211
207
|
together: {
|
|
212
208
|
label: 'Together AI',
|
|
213
209
|
color: chalk.rgb(255, 241, 118),
|
|
@@ -312,6 +308,28 @@ export const PROVIDER_METADATA = {
|
|
|
312
308
|
rateLimits: 'Only zero-price live chat models are listed; other Novita models are paid/trial-credit',
|
|
313
309
|
paidProviderNote: 'paid — 3 free models',
|
|
314
310
|
},
|
|
311
|
+
pollinations: {
|
|
312
|
+
label: 'Pollinations AI ⚠️ experimental',
|
|
313
|
+
color: chalk.rgb(255, 105, 180),
|
|
314
|
+
signupUrl: 'https://enter.pollinations.ai',
|
|
315
|
+
signupHint: 'enter.pollinations.ai → API Keys (free Pollen daily; star github.com/pollinations/pollinations to earn Pollen; 0 Pollen = 402; no purchase needed)',
|
|
316
|
+
rateLimits: 'Free via Pollen (daily grants; ~0.0001-0.003 Pollen/req; 0 Pollen = 402; experimental, system may change)',
|
|
317
|
+
detailedLimits: 'Pollen ≈ $1. Daily free Pollen via tier (seed/flower/nectar) + quests (star repo, help issue). No purchase required. Cost per request 0.0001-0.003 Pollen. If balance is 0.0000, every MISS returns 402 PAYMENT_REQUIRED and the TUI shows 402; HIT (Cloudflare cache) may still return 200 but is not reliable. Check balance at enter.pollinations.ai → API Keys. Grants reset daily at midnight UTC. Integration is experimental and not yet confirmed as stable.',
|
|
318
|
+
},
|
|
319
|
+
siliconflow: {
|
|
320
|
+
label: 'SiliconFlow',
|
|
321
|
+
color: chalk.rgb(178, 235, 242),
|
|
322
|
+
signupUrl: 'https://cloud.siliconflow.cn/account/ak',
|
|
323
|
+
signupHint: 'API Keys → Create (phone SMS verification required)',
|
|
324
|
+
rateLimits: 'Free · 3 models @ $0 · 1000 RPM · 1M tokens/day per model',
|
|
325
|
+
},
|
|
326
|
+
requesty: {
|
|
327
|
+
label: 'Requesty',
|
|
328
|
+
color: chalk.rgb(100, 149, 255),
|
|
329
|
+
signupUrl: 'https://app.requesty.ai/api-keys',
|
|
330
|
+
signupHint: 'API Keys → Create (200 req/day free, no card)',
|
|
331
|
+
rateLimits: 'Free · 200 req/day on free models (20 req/min) · no card',
|
|
332
|
+
},
|
|
315
333
|
'ollama-cloud': {
|
|
316
334
|
label: 'Ollama Cloud',
|
|
317
335
|
color: chalk.rgb(230, 230, 230),
|
|
@@ -61,6 +61,9 @@ export const PROVIDER_CAPABILITIES = {
|
|
|
61
61
|
routeway: { telemetryType: 'unknown', supportsEndpoint: false, usageDisplay: 'ok', resetCadence: 'unknown' },
|
|
62
62
|
novita: { telemetryType: 'unknown', supportsEndpoint: false, usageDisplay: 'ok', resetCadence: 'unknown' },
|
|
63
63
|
'ollama-cloud': { telemetryType: 'unknown', supportsEndpoint: false, usageDisplay: 'ok', resetCadence: 'rolling' },
|
|
64
|
+
pollinations: { telemetryType: 'unknown', supportsEndpoint: false, usageDisplay: 'ok', resetCadence: 'daily' },
|
|
65
|
+
siliconflow: { telemetryType: 'unknown', supportsEndpoint: false, usageDisplay: 'ok', resetCadence: 'daily' },
|
|
66
|
+
requesty: { telemetryType: 'unknown', supportsEndpoint: false, usageDisplay: 'ok', resetCadence: 'daily' },
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
/** Fallback for unrecognized providers */
|
package/src/tui/theme.js
CHANGED
|
@@ -192,6 +192,8 @@ const PROVIDER_PALETTES = {
|
|
|
192
192
|
llm7: [180, 255, 140],
|
|
193
193
|
routeway: [130, 210, 255],
|
|
194
194
|
novita: [255, 185, 120],
|
|
195
|
+
pollinations: [255, 105, 180],
|
|
196
|
+
requesty: [100, 149, 255],
|
|
195
197
|
'ollama-cloud': [230, 230, 230],
|
|
196
198
|
},
|
|
197
199
|
light: {
|
|
@@ -222,6 +224,8 @@ const PROVIDER_PALETTES = {
|
|
|
222
224
|
llm7: [73, 130, 0],
|
|
223
225
|
routeway: [0, 105, 180],
|
|
224
226
|
novita: [173, 84, 0],
|
|
227
|
+
pollinations: [170, 45, 110],
|
|
228
|
+
requesty: [0, 72, 170],
|
|
225
229
|
'ollama-cloud': [88, 88, 88],
|
|
226
230
|
},
|
|
227
231
|
}
|