pi-free 1.0.8 → 2.0.0

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.
Files changed (63) hide show
  1. package/CHANGELOG.md +107 -1
  2. package/README.md +95 -46
  3. package/config.ts +165 -120
  4. package/constants.ts +22 -61
  5. package/index.ts +186 -0
  6. package/lib/json-persistence.ts +11 -10
  7. package/lib/logger.ts +2 -2
  8. package/lib/model-enhancer.ts +20 -20
  9. package/lib/open-browser.ts +41 -0
  10. package/lib/provider-cache.ts +106 -0
  11. package/lib/registry.ts +144 -0
  12. package/package.json +67 -82
  13. package/provider-factory.ts +25 -41
  14. package/provider-failover/benchmark-lookup.ts +247 -0
  15. package/provider-failover/benchmarks-chunk-0.ts +2010 -0
  16. package/provider-failover/benchmarks-chunk-1.ts +1988 -0
  17. package/provider-failover/benchmarks-chunk-2.ts +2010 -0
  18. package/provider-failover/benchmarks-chunk-3.ts +2010 -0
  19. package/provider-failover/benchmarks-chunk-4.ts +1969 -0
  20. package/provider-failover/hardcoded-benchmarks.ts +22 -10025
  21. package/provider-helper.ts +38 -37
  22. package/providers/{cline-auth.ts → cline/cline-auth.ts} +2 -2
  23. package/providers/cline/cline-models.ts +128 -0
  24. package/providers/{cline.ts → cline/cline.ts} +300 -257
  25. package/providers/cloudflare/cloudflare.ts +368 -0
  26. package/providers/dynamic-built-in/index.ts +513 -0
  27. package/providers/{kilo-auth.ts → kilo/kilo-auth.ts} +3 -20
  28. package/providers/{kilo-models.ts → kilo/kilo-models.ts} +2 -2
  29. package/providers/kilo/kilo.ts +235 -0
  30. package/providers/{modal.ts → modal/modal.ts} +4 -3
  31. package/providers/{nvidia.ts → nvidia/nvidia.ts} +152 -113
  32. package/providers/ollama/ollama.ts +172 -0
  33. package/providers/opencode-session.ts +34 -34
  34. package/providers/{qwen-auth.ts → qwen/qwen-auth.ts} +24 -40
  35. package/providers/{qwen-models.ts → qwen/qwen-models.ts} +101 -95
  36. package/providers/qwen/qwen.ts +202 -0
  37. package/provider-failover/auto-switch.ts +0 -350
  38. package/provider-failover/errors.ts +0 -275
  39. package/provider-failover/index.ts +0 -238
  40. package/providers/cline-models.ts +0 -77
  41. package/providers/factory.ts +0 -125
  42. package/providers/fireworks.ts +0 -49
  43. package/providers/go.ts +0 -216
  44. package/providers/kilo.ts +0 -146
  45. package/providers/mistral.ts +0 -144
  46. package/providers/ollama.ts +0 -113
  47. package/providers/openrouter.ts +0 -175
  48. package/providers/qwen.ts +0 -127
  49. package/providers/zen.ts +0 -371
  50. package/usage/commands.ts +0 -17
  51. package/usage/cumulative.ts +0 -193
  52. package/usage/formatters.ts +0 -115
  53. package/usage/index.ts +0 -46
  54. package/usage/limits.ts +0 -148
  55. package/usage/metrics.ts +0 -222
  56. package/usage/sessions.ts +0 -355
  57. package/usage/store.ts +0 -99
  58. package/usage/tracking.ts +0 -329
  59. package/usage/types.ts +0 -26
  60. package/usage/widget.ts +0 -90
  61. package/widget/data.ts +0 -113
  62. package/widget/format.ts +0 -26
  63. package/widget/render.ts +0 -117
package/CHANGELOG.md CHANGED
@@ -5,7 +5,113 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [2.0.0] - 2026-04-23
9
+
10
+ ### Breaking Changes
11
+ - **Removed Fireworks provider** — Fireworks is now a built-in Pi provider (added in pi 0.68.1), so the extension's Fireworks provider has been removed to avoid conflicts:
12
+ - Deleted `providers/fireworks/fireworks.ts` and `tests/fireworks.test.ts`
13
+ - Removed all Fireworks configuration options from `config.ts` (`fireworks_api_key`, `fireworks_show_paid`)
14
+ - Users should now use Pi's built-in Fireworks support with `FIREWORKS_API_KEY`
15
+
16
+ - **Renamed Ollama provider to `ollama-cloud`** — Changed provider ID from `"ollama"` to `"ollama-cloud"` to avoid collision with Pi's built-in local Ollama provider:
17
+ - This prevents provider ID conflicts when both are registered
18
+ - All log messages and documentation now reference "Ollama Cloud"
19
+
20
+ ### Removed
21
+ - **Dropped `@sinclair/typebox` peer dependency** — Pi 0.69.0 migrated from `@sinclair/typebox` to `typebox` 1.x. The extension didn't directly import this package, so it was removed from `peerDependencies` to avoid potential conflicts.
22
+
23
+ ### Fixed
24
+ - **Ollama Cloud API endpoint** — Fixed broken Ollama Cloud integration:
25
+ - Changed `BASE_URL_OLLAMA` from `https://ollama.com` to `https://ollama.com/v1` — the OpenAI-compatible API endpoint
26
+ - Fixed model fetching to use `/v1/models` instead of `/api/tags` — ensures model IDs work with chat completions endpoint
27
+ - Previously calls went to HTML homepage instead of API endpoints, causing 404 errors
28
+
29
+ ### Removed
30
+ - **Removed paid model warning on selection** — Deleted the `model_select` event handler that showed:
31
+ - `⚠️ Paid model selected (${model.id}). Use "/free off" to enable paid models.`
32
+ - This warning was redundant since the global `/free` toggle and provider toggles already control model visibility
33
+
34
+ - **Removed pointless `/modal-toggle` command** — Modal provider only has 1 free model (GLM-5.1 FP8), so there was nothing meaningful to toggle:
35
+ - Added `skipToggle` option to `ProviderDefinition` and `ProviderSetupConfig` interfaces
36
+ - Modal provider now sets `skipToggle: true` to prevent toggle command creation
37
+
38
+ ### Changed
39
+ - **Marked Qwen provider as fully deprecated** — Updated messaging to clarify the provider is broken:
40
+ - Changed model name from `"Qwen Coder — Free 1k/day"` to `"Qwen Coder — DEPRECATED (free tier discontinued)"`
41
+ - Updated all JSDoc comments to clearly state auth is broken and free tier is no longer available
42
+ - Provider remains for backward compatibility but should not be used
43
+
44
+ ### Added
45
+ - **Cloudflare Workers AI provider** — New provider for Cloudflare's serverless GPU platform:
46
+ - 50+ open-source models: Llama 4, Mistral Small 3.1, Qwen 2.5/3, DeepSeek R1, Gemma 4, Kimi K2.5/2.6, and more
47
+ - **10,000 Neurons/day FREE tier** (resets daily at 00:00 UTC)
48
+ - **$0.011 per 1,000 Neurons** beyond free allocation
49
+ - Only requires `CLOUDFLARE_API_TOKEN` — account ID auto-derived from token
50
+ - Toggle with `/cloudflare-toggle`
51
+ - Create token at https://dash.cloudflare.com/profile/api-tokens
52
+
53
+ - **Unified dynamic built-in providers module** — New `providers/dynamic-built-in/` module that dynamically fetches models from Pi's built-in providers when users have API keys:
54
+ - **Mistral** (`MISTRAL_API_KEY`) — Fetches from `api.mistral.ai/v1/models`
55
+ - **Groq** (`GROQ_API_KEY`) — Fetches from `api.groq.com/openai/v1/models`
56
+ - **Cerebras** (`CEREBRAS_API_KEY`) — Fetches from `api.cerebras.ai/v1/models`
57
+ - **xAI** (`XAI_API_KEY`) — Fetches from `api.x.ai/v1/models`
58
+ - **Hugging Face** (`HF_TOKEN` — optional) — Fetches public + authenticated models
59
+ - **OpenRouter** — Moved from `index.ts` to unified module with dynamic fetch
60
+ - All integrate with global `/free` toggle and have per-provider toggle commands (`/mistral-toggle`, `/groq-toggle`, etc.)
61
+
62
+ - **Global `/free` toggle system** — New centralized free/paid filtering across ALL providers:
63
+ - `/free on/off/status` — Toggle free-only view globally
64
+ - `/free-providers` — Show free/paid model counts by provider
65
+ - `FREE_ONLY` config option and `PI_FREE_ONLY` environment variable
66
+ - Providers register via `registerWithGlobalToggle()` for unified filtering
67
+
68
+ ### Fixed
69
+ - **Toggle commands now actually filter models from UI** — Previously, toggle commands only showed notifications but didn't remove paid models from the model picker:
70
+ - **OpenRouter (`/openrouter-toggle`)**: Now uses `registerProvider`/`unregisterProvider` to actually filter models from the picker UI
71
+ - **NVIDIA (`/nvidia-toggle`)**: Added dynamic `showPaid` parameter to `fetchNvidiaModels()` so toggle properly switches between free and paid model sets
72
+ - **Fireworks**: Removed broken toggle command — all models are paid with no free tier, so there was nothing to toggle
73
+
74
+ ### Added
75
+ - **OpenRouter per-provider free model toggle** — Added `/openrouter-toggle` command for the built-in OpenRouter provider:
76
+ - `/openrouter-toggle` — Switch between showing only free models vs all models (including paid)
77
+ - New config flag `openrouter_show_paid` in `~/.pi/free.json` (default: `false`)
78
+ - Environment variable: `OPENROUTER_SHOW_PAID=true` to show paid models by default
79
+ - This brings OpenRouter (a built-in pi provider) in line with extension providers that have per-provider toggles
80
+
81
+ ### Deprecated
82
+ - **Qwen provider** — The 1,000 requests/day free tier is no longer available from Qwen/DashScope. The provider code remains for backward compatibility but is now deprecated:
83
+ - Added `@deprecated` JSDoc tags to all Qwen-related exports
84
+ - Added deprecation warning when Qwen provider loads
85
+ - Added warning when `QWEN_SHOW_PAID` config is used
86
+ - Consider migrating to other free providers: Kilo, Cline, NVIDIA, or Modal
87
+
88
+ ### Added
89
+ - **Go provider** — OpenCode Go subscription gateway (⚠️ paid only — $5 first month, then $10/month, no free tier) with models: GLM-5, Kimi K2.5, MiMo-V2-Pro, MiMo-V2-Omni, MiniMax M2.7, MiniMax M2.5
90
+ - Set `OPENCODE_GO_API_KEY` or `opencode_go_api_key` in `~/.pi/free.json`
91
+ - Toggle with `/go-toggle`
92
+
93
+ ### Fixed
94
+ - **All providers now show Coding Index scores in model selector** — Added `enhanceWithCI()` to factory-based providers (nvidia, fireworks, mistral, modal, ollama) and cline. Now all providers display CI scores in `/models` command (pi-models extension).
95
+
96
+ - **All providers now show in `--list-models`** — Providers (zen, openrouter, go) that registered models only in `session_start` were missing from `pi --list-models` which runs before session starts. Added immediate registration for these providers:
97
+ - **zen**: Added model caching to `~/.pi/provider-cache.json` for immediate registration + dynamic refresh
98
+ - **openrouter**: Immediate model registration at extension load (like kilo/cline)
99
+ - **go**: Immediate registration with static model list (no API to fetch from)
100
+ - All 11 providers now visible in `--list-models`
101
+
102
+ ### Changed
103
+ - Updated README with clear free vs paid provider distinction (9 free + 2 paid-only: Go, Fireworks)
104
+ - Added Go and Fireworks provider documentation under new "💳 Paid-Only Providers" section
105
+ - Added `opencode_go_api_key` to config file template
106
+ - Updated package.json description and keywords to include all 11 providers
107
+
108
+ ### Added
109
+ - **Provider model cache** (`lib/provider-cache.ts`) — New utility for caching provider model lists to `~/.pi/provider-cache.json`. Used by zen provider for faster startup and offline access after first successful fetch.
110
+
111
+ ## [1.0.9] - 2026-04-14
112
+
113
+ ### Fixed
114
+ - **Qwen OAuth breaks other OAuth providers** — `modifyModels` receives all models across every registered provider, not just Qwen's. The previous `map()` stamped the Qwen dashscope `baseUrl` onto every model, causing other OAuth providers (Kilo, OpenRouter, etc.) to return 404 after a `/login qwen` flow. Now only models with `provider === PROVIDER_QWEN` are patched; others pass through unchanged.
9
115
 
10
116
  ## [1.0.8] - 2026-04-13
11
117
 
package/README.md CHANGED
@@ -6,13 +6,13 @@ Free AI model providers for [Pi](https://pi.dev). Access **free models** from mu
6
6
 
7
7
  ## What does pi-free do
8
8
 
9
- **pi-free is a Pi extension that unlocks free AI models from 10 different providers.**
9
+ **pi-free is a Pi extension that unlocks free AI models from 9 providers — and adds 2 paid providers for convenience.**
10
10
 
11
11
  When you install pi-free, it:
12
12
 
13
- 1. **Registers 9 AI providers** with Pi's model picker — OpenCode Zen, Kilo, OpenRouter, NVIDIA NIM, Cline, Mistral, Ollama Cloud, Qwen, and Modal
13
+ 1. **Registers 10+ AI providers** with Pi's model picker — 9 unique free-tier providers plus dynamic providers for Pi's built-in services when API keys are configured
14
14
 
15
- 2. **Filters to show only free models by default** — You see only the models that cost $0 to use, no API key required for some providers
15
+ 2. **Filters to show only free models by default** — You see only the models that cost $0 to use, no API key required for some providers. Paid-only providers are hidden until you explicitly enable them.
16
16
 
17
17
  3. **Provides a toggle command** — Run `/{provider}-toggle` (e.g., `/zen-toggle`, `/kilo-toggle`) to switch between free-only mode and showing all models including paid ones
18
18
 
@@ -37,30 +37,48 @@ pi install git:github.com/apmantza/pi-free
37
37
  Start Pi and press `Ctrl+L` to open the model picker.
38
38
 
39
39
  Free models are shown by default — look for the provider prefixes:
40
+
41
+ **✅ Offers Free Models (no usage limits, no payment required):**
40
42
  - `zen/` — OpenCode Zen models (no setup required)
41
43
  - `kilo/` — Kilo models (free models available immediately, more after `/login kilo`)
42
44
  - `openrouter/` — OpenRouter models (free account required)
43
- - `nvidia/` — NVIDIA NIM models (free API key required)
44
45
  - `cline/` — Cline models (run `/login cline` to use)
45
- - `mistral/` — Mistral models (API key required)
46
- - `ollama/` Ollama Cloud models (API key required)
47
- - `qwen/` — Qwen Coder (run `/login qwen` to use, 1,000 free requests/day)
48
- - `modal/` — GLM-5.1 FP8 via Modal (API key required, free promotional period until April 30, 2026)
46
+
47
+ **🔄 Freemium (free tier with limits, then paid):**
48
+ - `nvidia/` — NVIDIA NIM models (1,000 free requests/month, then credits)
49
+ - `cloudflare/` — Cloudflare Workers AI (10K Neurons/day free tier, then $0.011/1K Neurons)
50
+ - `modal/` — GLM-5.1 FP8 via Modal (free promotional period until April 30, 2026)
51
+ - `ollama/` — Ollama Cloud models (usage-based free tier, resets every 5 hours + 7 days)
52
+
53
+ **🔧 Dynamic API Providers (free models when API key configured):**
54
+ - `mistral/` — Mistral models (free models via API when `MISTRAL_API_KEY` set)
55
+ - `groq/` — Groq models (free models via API when `GROQ_API_KEY` set)
56
+ - `cerebras/` — Cerebras models (free models via API when `CEREBRAS_API_KEY` set)
57
+
58
+ **💳 Paid Only (no free tier):**
59
+ - `go/` — OpenCode Go models (requires subscription — $5 first month, then $10/month)
60
+
61
+ **Note:** Fireworks is now a [built-in Pi provider](https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/CHANGELOG.md#0681---2026-04-22) — no extension needed. Set `FIREWORKS_API_KEY` to use it directly.
49
62
 
50
63
  ### 3. Toggle between free and paid models
51
64
 
52
65
  Want to see paid models too? Run the toggle command for your provider:
53
66
 
54
67
  ```
55
- /zen-toggle # Toggle Zen free/paid models
56
- /kilo-toggle # Toggle Kilo free/paid models
57
- /openrouter-toggle # Toggle OpenRouter free/paid models
58
- /nvidia-toggle # Toggle NVIDIA zero-cost/credit-costing models
59
- /cline-toggle # Toggle Cline free/paid models
60
- /mistral-toggle # Toggle Mistral free/paid models
61
- /ollama-toggle # Toggle Ollama models (requires SHOW_PAID=true)
68
+ /zen-toggle # Toggle Zen (✅ offers free models)
69
+ /kilo-toggle # Toggle Kilo (✅ offers free models)
70
+ /openrouter-toggle # Toggle OpenRouter (✅ offers free models)
71
+ /cline-toggle # Toggle Cline (✅ offers free models)
72
+ /mistral-toggle # Toggle Mistral (🔧 dynamic - needs API key)
73
+ /groq-toggle # Toggle Groq (🔧 dynamic - needs API key)
74
+ /cerebras-toggle # Toggle Cerebras (🔧 dynamic - needs API key)
62
75
  ```
63
76
 
77
+ **Notes:**
78
+ - **Toggle commands are mainly for ✅ Offers Free Models providers** — to switch between "free models only" vs "show paid models too"
79
+ - **🔄 Freemium providers** (NVIDIA, Cloudflare, Ollama, Modal) show all models by default — you manage your usage limits via their dashboards
80
+ - **💳 Paid-only providers** (Go) have no toggle since all models require payment
81
+
64
82
  You'll see a notification like: `zen: showing free models` or `zen: showing all models (including paid)`
65
83
 
66
84
  ### 4. Add API keys for more providers (optional)
@@ -77,13 +95,15 @@ Add your API keys to this file:
77
95
  {
78
96
  "openrouter_api_key": "sk-or-v1-...",
79
97
  "nvidia_api_key": "nvapi-...",
98
+ "cloudflare_api_token": "...",
80
99
  "ollama_api_key": "...",
81
- "fireworks_api_key": "...",
82
100
  "mistral_api_key": "...",
83
101
  "modal_api_key": "sk-modal-..."
84
102
  }
85
103
  ```
86
104
 
105
+ **Note:** Fireworks is now a [built-in Pi provider](https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/CHANGELOG.md#0681---2026-04-22) — no extension needed. Set `FIREWORKS_API_KEY` to use it directly.
106
+
87
107
  Or set environment variables instead (same names, uppercase: `OPENROUTER_API_KEY`, `NVIDIA_API_KEY`, etc.)
88
108
 
89
109
  See the [Providers That Need Authentication](#providers-that-need-authentication) section below for detailed setup instructions per provider.
@@ -95,10 +115,8 @@ See the [Providers That Need Authentication](#providers-that-need-authentication
95
115
  | `/{provider}-toggle` | Switch between free-only and all models for that provider |
96
116
  | `/login kilo` | Start OAuth flow for Kilo |
97
117
  | `/login cline` | Start OAuth flow for Cline |
98
- | `/login qwen` | Start OAuth flow for Qwen |
99
118
  | `/logout kilo` | Clear Kilo OAuth credentials |
100
119
  | `/logout cline` | Clear Cline OAuth credentials |
101
- | `/logout qwen` | Clear Qwen OAuth credentials |
102
120
 
103
121
  ---
104
122
 
@@ -141,7 +159,11 @@ Free tier resets every 5 hours + 7 days.
141
159
 
142
160
  ## Providers That Need Authentication
143
161
 
144
- Some providers require free accounts or OAuth to access their free tiers:
162
+ Some providers require free accounts or OAuth to access their free tiers. **Go is a paid-only provider — it has no free tier.**
163
+
164
+ ---
165
+
166
+ ### 🆓 Free Providers
145
167
 
146
168
  ### Kilo (free models, more after login)
147
169
 
@@ -214,7 +236,31 @@ Or in `~/.pi/free.json`:
214
236
 
215
237
  Toggle anytime with `/nvidia-toggle`
216
238
 
217
- ### Cline
239
+ ### Cloudflare Workers AI (10K Neurons/day Free Tier)
240
+
241
+ Cloudflare provides **50+ open-source AI models** with a generous free tier:
242
+ - **10,000 Neurons per day FREE** (resets daily at 00:00 UTC)
243
+ - **$0.011 per 1,000 Neurons** beyond the free allocation
244
+
245
+ Get your API token at [dash.cloudflare.com/profile/api-tokens](https://dash.cloudflare.com/profile/api-tokens):
246
+ 1. Create a token with "Cloudflare AI" → "Read" permission
247
+ 2. Or use "My Account" → "Read" for broader access
248
+
249
+ **Setup:**
250
+ ```bash
251
+ export CLOUDFLARE_API_TOKEN="your_token_here"
252
+ ```
253
+
254
+ The account ID is automatically derived from your token. Optionally, you can also set:
255
+ ```bash
256
+ export CLOUDFLARE_ACCOUNT_ID="your_account_id" # Optional
257
+ ```
258
+
259
+ **Models available:** Llama 4, Mistral Small 3.1, DeepSeek R1, Gemma 4, Kimi K2.5/2.6, and more.
260
+
261
+ Toggle with `/cloudflare-toggle`
262
+
263
+ ### Cline (free account)
218
264
 
219
265
  Cline models appear immediately in the model picker. To use them, authenticate with Cline's free account:
220
266
 
@@ -230,7 +276,7 @@ This command will:
230
276
  - Free account required (no credit card)
231
277
  - Uses local ports 48801-48811 for OAuth callback
232
278
 
233
- ### Modal (GLM-5.1 FP8 — free until April 30, 2026)
279
+ ### Modal (GLM-5.1 FP8 — free promotional period until April 30, 2026)
234
280
 
235
281
  Modal hosts GLM-5.1 FP8 with a free promotional period. Get an API key at [modal.com](https://modal.com), then:
236
282
 
@@ -253,7 +299,7 @@ Then select a `modal/` model in the model picker.
253
299
  - Model: GLM-5.1 FP8 (128k context, 16k max output)
254
300
  - No credit card required during the promotional period
255
301
 
256
- ### Mistral
302
+ ### Mistral (free API key)
257
303
 
258
304
  Add API key to `~/.pi/free.json` or environment variables:
259
305
 
@@ -261,27 +307,29 @@ Add API key to `~/.pi/free.json` or environment variables:
261
307
  export MISTRAL_API_KEY="..."
262
308
  ```
263
309
 
264
- ### Qwen (1,000 free requests/day)
310
+ ---
265
311
 
266
- Qwen provides free access to **Qwen Coder** (Qwen3.6-Plus) via OAuth device flow — no API key or credit card needed.
312
+ ### 💳 Paid-Only Providers
267
313
 
268
- ```
269
- /login qwen
270
- ```
314
+ > **⚠️ These providers have no free tier. All usage incurs costs.**
271
315
 
272
- This command will:
273
- 1. Open your browser to Qwen Studio's authorization page
274
- 2. Display a device code (enter it if the browser doesn't pre-fill it)
275
- 3. Wait for you to authorize in the browser
276
- 4. Automatically complete login once approved
316
+ ### OpenCode Go (subscription — $5 first month, then $10/month)
277
317
 
278
- Then select a `qwen/` model in the model picker.
318
+ Go provides access to curated open coding models via a monthly subscription. There is no free tier.
279
319
 
280
- **Details:**
281
- - Free tier: 1,000 requests/day
282
- - Model: Qwen Coder (131k context, 16k max output)
283
- - No credit card required — just a free [Qwen Studio](https://chat.qwen.ai) account
284
- - To re-authenticate: `/logout qwen` then `/login qwen`
320
+ Set `OPENCODE_GO_API_KEY` (or `opencode_go_api_key` in `~/.pi/free.json`) and `GO_SHOW_PAID=true` to enable.
321
+
322
+ **Models available:**
323
+ - GLM-5
324
+ - Kimi K2.5
325
+ - MiMo-V2-Pro
326
+ - MiMo-V2-Omni
327
+ - MiniMax M2.7
328
+ - MiniMax M2.5
329
+
330
+ **Pricing:** $5 first month, then $10/month. See [opencode.ai/docs/go](https://opencode.ai/docs/go).
331
+
332
+ Toggle with `/go-toggle`.
285
333
 
286
334
  ---
287
335
 
@@ -294,18 +342,19 @@ Each provider has toggle commands to switch between free and all models:
294
342
  | `/zen-toggle` | Toggle between free/all Zen models |
295
343
  | `/kilo-toggle` | Toggle between free/all Kilo models |
296
344
  | `/openrouter-toggle` | Toggle between free/all OpenRouter models |
297
- | `/nvidia-toggle` | Toggle between free/all NVIDIA models |
298
- | `/cline-toggle` | Toggle between free/all Cline models |
299
- | `/mistral-toggle` | Toggle between free/all Mistral models |
300
- | `/ollama-toggle` | Toggle between free/all Ollama models |
301
- | `/login qwen` | Authenticate with Qwen Studio (OAuth) |
302
- | `/logout qwen` | Clear Qwen credentials |
345
+ | `/cline-toggle` | Toggle between free/all Cline models (✅ offers free models) |
346
+ | `/mistral-toggle` | Toggle between free/all Mistral models (🔧 dynamic) |
347
+ | `/groq-toggle` | Toggle between free/all Groq models (🔧 dynamic) |
348
+ | `/cerebras-toggle` | Toggle between free/all Cerebras models (🔧 dynamic) |
303
349
 
304
350
  **The toggle command:**
305
- - Switches between showing only free models vs. all available models
351
+ - **For ✅ Offers Free Models providers**: Switches between showing only free models vs. all available models (including paid)
352
+ - **For 🔧 Dynamic API providers**: Filters the model list when you have an API key configured
306
353
  - **Persists your preference** to `~/.pi/free.json` for next startup
307
354
  - Shows a notification: "zen: showing free models" or "zen: showing all models (including paid)"
308
355
 
356
+ **Note:** 🔄 Freemium providers (NVIDIA, Cloudflare, Ollama Cloud, Modal) don't have toggle commands — they show all models and you manage usage via their dashboards. 💳 Paid-only providers (Go) also have no toggle since all models require payment.
357
+
309
358
  ---
310
359
 
311
360
  ## Configuration
@@ -316,9 +365,9 @@ Create `~/.pi/free.json` in your home directory:
316
365
  {
317
366
  "openrouter_api_key": "YOUR_OPENROUTER_KEY",
318
367
  "nvidia_api_key": "YOUR_NVIDIA_KEY",
319
- "fireworks_api_key": "YOUR_FIREWORKS_KEY",
320
368
  "mistral_api_key": "YOUR_MISTRAL_KEY",
321
369
  "opencode_api_key": "YOUR_ZEN_KEY",
370
+ "opencode_go_api_key": "YOUR_GO_KEY",
322
371
  "ollama_api_key": "YOUR_OLLAMA_KEY",
323
372
  "ollama_show_paid": true,
324
373
  "modal_api_key": "YOUR_MODAL_KEY",