free-coding-models 0.3.55 β†’ 0.3.56

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 (73) hide show
  1. package/CHANGELOG.md +47 -56
  2. package/README.md +236 -160
  3. package/bin/free-coding-models.js +46 -0
  4. package/package.json +2 -2
  5. package/sources.js +133 -309
  6. package/src/analysis.js +23 -10
  7. package/src/app.js +113 -7
  8. package/src/cache.js +1 -1
  9. package/src/cli-help.js +9 -0
  10. package/src/command-palette.js +16 -12
  11. package/src/config.js +199 -32
  12. package/src/endpoint-installer.js +45 -1
  13. package/src/favorites.js +22 -0
  14. package/src/graphify-out/cache/089db1c1def873cf6d112f1590da4490e61e691aff0db41e006aa2fb15ba0656.json +1 -0
  15. package/src/graphify-out/cache/0b510b53cf1a1393fb52b1fc3bbbf88b63938e961ec5b82119a2e9715fee8bd7.json +1 -0
  16. package/src/graphify-out/cache/0ec9a95a326bde58e0316889018b278062d06d494d0f31ba177c9de71e5fed2d.json +1 -0
  17. package/src/graphify-out/cache/1548663a24a68dce740ebab1bd1d3091048c9604e9d067a1650a42a6d82541d4.json +1 -0
  18. package/src/graphify-out/cache/1783af63cb6d0dfb4d469009f71ac83a74ba0b33d48186ff2c6e63f9429e900a.json +1 -0
  19. package/src/graphify-out/cache/1e109f5eb5dc4fd285871c3613e32b6b14a8c225f4080ee34b51c7e1a1764571.json +1 -0
  20. package/src/graphify-out/cache/1eb24dbeb69b46c8bc1caf925df2f2a964af0f33aea143adf8ddf88e017db6ca.json +1 -0
  21. package/src/graphify-out/cache/21e1bcfed11685e8347243f9d8516072dda183266a4bfe22c52fb31753a446c8.json +1 -0
  22. package/src/graphify-out/cache/2327473478b9c4b1940bf7ef66c9ee960b3cba8d5302e56b625df8274246e0b4.json +1 -0
  23. package/src/graphify-out/cache/25955b81fd25454c8fa90fb71a47db8d1215cf621beb8ff3cbd580aaf011b4f3.json +1 -0
  24. package/src/graphify-out/cache/2739677f19c702f88f3de0a0bac475066adbda98709907ad3de967aef689f86d.json +1 -0
  25. package/src/graphify-out/cache/2bba03422f6b3ee7f5b5d29cc90314a064d259e5822a176657bda3e04505cf00.json +1 -0
  26. package/src/graphify-out/cache/2ddf1d2c6d10147b0402446bc71a7988187b79b6210dd7e7250be8c555b9ff35.json +1 -0
  27. package/src/graphify-out/cache/2ee07457a5767c95a57f8e9eb95b28f800044f35666e0715e9d88ad1103a092e.json +1 -0
  28. package/src/graphify-out/cache/2fe9f75dc2951c417f2c8dd22749092cf550dc67599f1c8d1866900dc6e9154e.json +1 -0
  29. package/src/graphify-out/cache/41c4b7c27e7fc3e2948d3a4bf95a72de2ed9a6f0463994babdce8ed2cc84598c.json +1 -0
  30. package/src/graphify-out/cache/5028defd54b7fbd3c7e444973e493de036e097e9b1d2a7cae7f19b88d68aacde.json +1 -0
  31. package/src/graphify-out/cache/5b133aba3fb16410c5b1fdbd1730039fc7fa1ac93abd99d7be08f60da70fc8d4.json +1 -0
  32. package/src/graphify-out/cache/74252e5b0978d85ab3421a3de1a9384aa282ffd2be2cfe7db2530139089f4275.json +1 -0
  33. package/src/graphify-out/cache/7695ebeea056095edd14332963cc43354ef3a097caf46f1e28d0f01369642901.json +1 -0
  34. package/src/graphify-out/cache/777aa7085c395a935c6556bbde182cd871edb61f3a685ed8068ec0c8f6fb0075.json +1 -0
  35. package/src/graphify-out/cache/82a723881980e82273c113def8315533d7da28827e300413d9ad30f27b7407df.json +1 -0
  36. package/src/graphify-out/cache/86b87c9603e6cd188f42c7eed3b86c291d48a781c223a707e74f3e7ed0c02a21.json +1 -0
  37. package/src/graphify-out/cache/890fead9a78cadaed560a2d2453916121fa605c3e43a334910ac4bc951a9ef6d.json +1 -0
  38. package/src/graphify-out/cache/89d3ea66f52783caa775ef9a30923d7d6225e1d8ae9e962f4741b8c7785dab1e.json +1 -0
  39. package/src/graphify-out/cache/8cc82cd9edce41f0e1c092f14a94fd52bf847addf3237b616dc5a9e505bd05bd.json +1 -0
  40. package/src/graphify-out/cache/93ba2e25e3ff7ad525f397902345fbd375df7315de7b402e20cc803c14eccde8.json +1 -0
  41. package/src/graphify-out/cache/99beed29580b9c7bfecfee794cb3d8e535fcf0eb3b92113108f88bdd0a8e79b3.json +1 -0
  42. package/src/graphify-out/cache/aeeb931fa477c65ce2e51d8149957350fa54225c613222bbbe8448998d1afd3d.json +1 -0
  43. package/src/graphify-out/cache/baf91bef5b5ecb2a476433b6cc0c48c563c54ee2d07fc3c192e543685e3e7222.json +1 -0
  44. package/src/graphify-out/cache/bd98b94ac4e9b92b6336d47b26e0366b51a4eaf0711d722f05f98dfae23ab42b.json +1 -0
  45. package/src/graphify-out/cache/bfcb51e9328e9cbfbee4f6fee0f56635d7b03488addc9f6c4e4b190b70a73362.json +1 -0
  46. package/src/graphify-out/cache/c0d3dabeb093aa758c49eadf41b87ecc96a16c1449c2670aaf48cbfc891d8da6.json +1 -0
  47. package/src/graphify-out/cache/c20d6630236f473c1406068c3ae205853e649b216495c93dfec055dd222c55cf.json +1 -0
  48. package/src/graphify-out/cache/c22b9122816bebce0a2f79af41a986559d01e00163dbcd579c5755621b4cb483.json +1 -0
  49. package/src/graphify-out/cache/ca556ec14453ddb8f9e0c5a832dac90d77111b9bad5f8c2d80d272e2e7a06371.json +1 -0
  50. package/src/graphify-out/cache/d6dbc9135dfa35a756b3b09b06700e4bc229fdccba11bb963f2ba44028e0bbae.json +1 -0
  51. package/src/graphify-out/cache/e1cf71276f1779d0fa075f79bd7c8a9fd0b8eef6932ac043137451b7c7fa7cbe.json +1 -0
  52. package/src/graphify-out/cache/e4b3be14494467df2d2ed389bc4f18f099021cb5bc355b901fa88387b2d8b8a2.json +1 -0
  53. package/src/graphify-out/cache/eaea0dded097f6f9553b654220046c6ec0c9be592a5973d906564ee60af34e0d.json +1 -0
  54. package/src/graphify-out/cache/ef07d0cd2675d1f79d2a2fdbf3bc3319687638751e9ce89b0d0d97ed1cd9f7e1.json +1 -0
  55. package/src/graphify-out/cache/f81272d6eb8aaff9e96d5a1d9f06777db70ac3652a646b951ded51f79871d733.json +1 -0
  56. package/src/graphify-out/cache/f9619dd92186f75a6dbda937e0c606647153918524cdb5763f956e6ec2a9e386.json +1 -0
  57. package/src/graphify-out/cache/fd88b1b2ff4bfcae08559d9c2aaeeb9a3f1e2f5cd8928762c311196956c170a5.json +1 -0
  58. package/src/key-handler.js +312 -12
  59. package/src/kilo.js +20 -1
  60. package/src/opencode.js +23 -2
  61. package/src/overlays.js +206 -5
  62. package/src/provider-metadata.js +26 -17
  63. package/src/quota-capabilities.js +6 -10
  64. package/src/render-table.js +37 -4
  65. package/src/router-daemon.js +1986 -0
  66. package/src/router-dashboard.js +893 -0
  67. package/src/sync-set.js +479 -0
  68. package/src/theme.js +4 -0
  69. package/src/tool-launchers.js +1 -0
  70. package/src/tool-metadata.js +6 -2
  71. package/src/utils.js +30 -6
  72. package/web/dist/assets/{index-C03JjCgA.js β†’ index-DNRCaWPi.js} +2 -2
  73. package/web/dist/index.html +1 -1
package/sources.js CHANGED
@@ -29,8 +29,8 @@
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, huggingface, replicate, deepinfra, fireworks, codestral, hyperbolic, scaleway, googleai, siliconflow, together, cloudflare, perplexity, qwen, iflow β€” model arrays per provider
33
- * @exports sources β€” map of { nvidia, groq, cerebras, sambanova, openrouter, huggingface, replicate, deepinfra, fireworks, codestral, hyperbolic, scaleway, googleai, siliconflow, together, cloudflare, perplexity, qwen, iflow } each with { name, url, models }
32
+ * @exports nvidiaNim, groq, cerebras, sambanova, openrouter, githubModels, mistral, codestral, scaleway, googleai, zai, qwen, cloudflare, ovhcloud, gemini, opencodeZen β€” model arrays per active provider
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]
36
36
  *
@@ -41,19 +41,18 @@
41
41
  // πŸ“– NIM source - https://build.nvidia.com
42
42
  export const nvidiaNim = [
43
43
  // ── S+ tier β€” SWE-bench Verified β‰₯70% ──
44
- ['deepseek-ai/deepseek-v3.2', 'DeepSeek V3.2', 'S+', '73.1%', '128k'],
45
- ['moonshotai/kimi-k2.5', 'Kimi K2.5', 'S+', '76.8%', '128k'],
46
- ['z-ai/glm5', 'GLM 5', 'S+', '77.8%', '128k'],
44
+ ['minimaxai/minimax-m2.7', 'MiniMax M2.7', 'S+', '80.2%', '200k'],
45
+ ['z-ai/glm-5.1', 'GLM 5.1', 'S+', '77.8%', '128k'],
46
+ ['moonshotai/kimi-k2.6', 'Kimi K2.6', 'S+', '76.8%', '256k'],
47
+ ['deepseek-ai/deepseek-v4-pro', 'DeepSeek V4 Pro', 'S+', '73.1%', '128k'],
48
+ ['deepseek-ai/deepseek-v4-flash', 'DeepSeek V4 Flash', 'S+', '72.0%', '128k'],
47
49
  ['z-ai/glm4.7', 'GLM 4.7', 'S+', '73.8%', '200k'],
48
- ['moonshotai/kimi-k2-thinking', 'Kimi K2 Thinking', 'S+', '71.3%', '256k'],
49
- ['minimaxai/minimax-m2.1', 'MiniMax M2.1', 'S+', '74.0%', '200k'],
50
+ ['moonshotai/kimi-k2-thinking', 'Kimi K2 Thinking', 'S+', '71.3%', '256k'], // ⚠️ Deprecation pending
50
51
  ['minimaxai/minimax-m2.5', 'MiniMax M2.5', 'S+', '80.2%', '200k'],
51
52
  ['stepfun-ai/step-3.5-flash', 'Step 3.5 Flash', 'S+', '74.4%', '256k'],
52
53
  ['qwen/qwen3-coder-480b-a35b-instruct', 'Qwen3 Coder 480B', 'S+', '70.6%', '256k'],
53
- ['qwen/qwen3-235b-a22b', 'Qwen3 235B', 'S+', '70.0%', '128k'],
54
54
  ['mistralai/devstral-2-123b-instruct-2512', 'Devstral 2 123B', 'S+', '72.2%', '256k'],
55
55
  // ── S tier β€” SWE-bench Verified 60–70% ──
56
- ['deepseek-ai/deepseek-v3.1-terminus', 'DeepSeek V3.1 Term', 'S', '68.4%', '128k'],
57
56
  ['moonshotai/kimi-k2-instruct-0905', 'Kimi K2 Instruct 0905', 'S', '65.8%', '256k'],
58
57
  ['moonshotai/kimi-k2-instruct', 'Kimi K2 Instruct', 'S', '65.8%', '128k'],
59
58
  ['minimaxai/minimax-m2', 'MiniMax M2', 'S', '69.4%', '128k'],
@@ -62,25 +61,25 @@ export const nvidiaNim = [
62
61
  ['qwen/qwen3.5-397b-a17b', 'Qwen3.5 400B VLM', 'S', '68.0%', '128k'],
63
62
  ['openai/gpt-oss-120b', 'GPT OSS 120B', 'S', '60.0%', '128k'],
64
63
  ['meta/llama-4-maverick-17b-128e-instruct', 'Llama 4 Maverick', 'S', '62.0%', '1M'],
65
- ['deepseek-ai/deepseek-v3.1', 'DeepSeek V3.1', 'S', '62.0%', '128k'],
64
+ ['mistralai/mistral-medium-3.5-128b', 'Mistral Medium 3.5', 'S', '66.0%', '128k'],
65
+ ['mistralai/mistral-small-4-119b-2603', 'Mistral Small 4', 'S', '60.0%', '128k'],
66
+ ['qwen/qwen3.5-122b-a10b', 'Qwen3.5 122B', 'S', '64.0%', '128k'],
66
67
  // ── A+ tier β€” SWE-bench Verified 50–60% ──
67
68
  ['nvidia/llama-3.1-nemotron-ultra-253b-v1', 'Nemotron Ultra 253B', 'A+', '56.0%', '128k'],
68
69
  ['mistralai/mistral-large-3-675b-instruct-2512', 'Mistral Large 675B', 'A+', '58.0%', '256k'],
69
- ['qwen/qwq-32b', 'QwQ 32B', 'A+', '50.0%', '131k'],
70
- ['igenius/colosseum_355b_instruct_16k', 'Colosseum 355B', 'A+', '52.0%', '16k'],
70
+ ['nvidia/nemotron-3-super-120b-a12b', 'Nemotron 3 Super', 'A+', '56.0%', '128k'],
71
+ ['nvidia/nemotron-3-nano-omni-30b-a3b-reasoning','Nemotron 3 Omni', 'A+', '52.0%', '128k'],
71
72
  // ── A tier β€” SWE-bench Verified 40–50% ──
72
73
  ['mistralai/mistral-medium-3-instruct', 'Mistral Medium 3', 'A', '48.0%', '128k'],
73
74
  ['mistralai/magistral-small-2506', 'Magistral Small', 'A', '45.0%', '32k'],
74
75
  ['nvidia/llama-3.3-nemotron-super-49b-v1.5', 'Nemotron Super 49B', 'A', '49.0%', '128k'],
75
- ['meta/llama-4-scout-17b-16e-instruct', 'Llama 4 Scout', 'A', '44.0%', '10M'],
76
76
  ['nvidia/nemotron-3-nano-30b-a3b', 'Nemotron Nano 30B', 'A', '43.0%', '128k'],
77
- ['deepseek-ai/deepseek-r1-distill-qwen-32b', 'R1 Distill 32B', 'A', '43.9%', '128k'],
78
77
  ['openai/gpt-oss-20b', 'GPT OSS 20B', 'A', '42.0%', '128k'],
79
78
  ['qwen/qwen2.5-coder-32b-instruct', 'Qwen2.5 Coder 32B', 'A', '46.0%', '32k'],
80
79
  ['meta/llama-3.1-405b-instruct', 'Llama 3.1 405B', 'A', '44.0%', '128k'],
80
+ ['google/gemma-4-31b-it', 'Gemma 4 31B', 'A', '45.0%', '256k'],
81
81
  // ── A- tier β€” SWE-bench Verified 35–40% ──
82
82
  ['meta/llama-3.3-70b-instruct', 'Llama 3.3 70B', 'A-', '39.5%', '128k'],
83
- ['deepseek-ai/deepseek-r1-distill-qwen-14b', 'R1 Distill 14B', 'A-', '37.7%', '64k'],
84
83
  ['bytedance/seed-oss-36b-instruct', 'Seed OSS 36B', 'A-', '38.0%', '32k'],
85
84
  ['stockmark/stockmark-2-100b-instruct', 'Stockmark 100B', 'A-', '36.0%', '32k'],
86
85
  // ── B+ tier β€” SWE-bench Verified 30–35% ──
@@ -88,11 +87,8 @@ export const nvidiaNim = [
88
87
  ['mistralai/ministral-14b-instruct-2512', 'Ministral 14B', 'B+', '34.0%', '32k'],
89
88
  ['ibm/granite-34b-code-instruct', 'Granite 34B Code', 'B+', '30.0%', '32k'],
90
89
  // ── B tier β€” SWE-bench Verified 20–30% ──
91
- ['deepseek-ai/deepseek-r1-distill-llama-8b', 'R1 Distill 8B', 'B', '28.2%', '32k'],
92
- ['deepseek-ai/deepseek-r1-distill-qwen-7b', 'R1 Distill 7B', 'B', '22.6%', '32k'],
90
+ ['meta/llama-3.1-8b-instruct', 'Llama 3.1 8B', 'B', '28.8%', '128k'],
93
91
  // ── C tier β€” SWE-bench Verified <20% or lightweight edge models ──
94
- ['google/gemma-2-9b-it', 'Gemma 2 9B', 'C', '18.0%', '8k'],
95
- ['microsoft/phi-3.5-mini-instruct', 'Phi 3.5 Mini', 'C', '12.0%', '128k'],
96
92
  ['microsoft/phi-4-mini-instruct', 'Phi 4 Mini', 'C', '14.0%', '128k'],
97
93
  ]
98
94
 
@@ -113,34 +109,24 @@ export const groq = [
113
109
  // πŸ“– Free API keys available at https://cloud.cerebras.ai
114
110
  export const cerebras = [
115
111
  ['gpt-oss-120b', 'GPT OSS 120B', 'S', '60.0%', '128k'],
116
- ['qwen-3-235b-a22b-instruct-2507', 'Qwen3 235B', 'S+', '70.0%', '128k'],
112
+ ['qwen-3-235b-a22b-instruct-2507', 'Qwen3 235B', 'S+', '70.0%', '128k'], // ⚠️ Deprecation: May 27, 2026
117
113
  ['llama3.1-8b', 'Llama 3.1 8B', 'B', '28.8%', '128k'],
118
114
  ['zai-glm-4.7', 'GLM 4.7', 'S+', '73.8%', '200k'],
119
115
  ]
120
116
 
121
117
  // πŸ“– SambaNova source - https://cloud.sambanova.ai
122
- // πŸ“– Free trial: $5 credits for 3 months β€” API keys at https://cloud.sambanova.ai/apis
123
- // πŸ“– OpenAI-compatible API, supports all major coding models including DeepSeek V3/R1, Qwen3, Llama 4
118
+ // πŸ“– Developer tier limits are small but still useful for smoke tests and occasional coding.
119
+ // πŸ“– Keep this catalog conservative: only models surfaced in current SambaNova docs.
124
120
  export const sambanova = [
125
121
  // ── S+ tier ──
126
122
  ['MiniMax-M2.5', 'MiniMax M2.5', 'S+', '74.0%', '160k'],
127
123
  // ── S tier ──
128
- ['DeepSeek-R1-0528', 'DeepSeek R1 0528', 'S', '61.0%', '128k'],
129
124
  ['DeepSeek-V3.1', 'DeepSeek V3.1', 'S', '62.0%', '128k'],
130
- ['DeepSeek-V3-0324', 'DeepSeek V3 0324', 'S', '62.0%', '128k'],
131
- ['DeepSeek-V3.2', 'DeepSeek V3.2', 'S+', '73.1%', '8k'],
125
+ ['DeepSeek-V3.2', 'DeepSeek V3.2', 'S+', '70.0%', '32k'],
132
126
  ['Llama-4-Maverick-17B-128E-Instruct', 'Llama 4 Maverick', 'S', '62.0%', '1M'],
133
127
  ['gpt-oss-120b', 'GPT OSS 120B', 'S', '60.0%', '128k'],
134
- ['DeepSeek-V3.1-Terminus', 'DeepSeek V3.1 Term', 'S', '68.4%', '128k'],
135
- // ── A+ tier ──
136
- ['Qwen3-32B', 'Qwen3 32B', 'A+', '50.0%', '128k'],
137
- ['Qwen3-235B-A22B-Instruct-2507', 'Qwen3 235B Instruct 2507', 'S+', '70.0%', '64k'],
138
- // ── A tier ──
139
- ['DeepSeek-R1-Distill-Llama-70B', 'R1 Distill 70B', 'A', '43.9%', '128k'],
140
128
  // ── A- tier ──
141
129
  ['Meta-Llama-3.3-70B-Instruct', 'Llama 3.3 70B', 'A-', '39.5%', '128k'],
142
- // ── B tier ──
143
- ['Meta-Llama-3.1-8B-Instruct', 'Llama 3.1 8B', 'B', '28.8%', '128k'],
144
130
  ]
145
131
 
146
132
  // πŸ“– OpenRouter source - https://openrouter.ai
@@ -154,180 +140,140 @@ export const sambanova = [
154
140
  // πŸ“– β€’ Free-tier popular models may be additionally rate-limited by the provider itself during peak hours.
155
141
  // πŸ“– API keys at https://openrouter.ai/keys
156
142
  export const openrouter = [
157
- // ── S+ tier β€” confirmed free ──
158
- ['qwen/qwen3.6-plus:free', 'Qwen3.6 Plus', 'S+', '78.8%', '1M'],
143
+ // ── S+ tier β€” live :free chat/coding models ──
159
144
  ['qwen/qwen3-coder:free', 'Qwen3 Coder 480B', 'S+', '70.6%', '262k'],
160
145
  ['minimax/minimax-m2.5:free', 'MiniMax M2.5', 'S+', '74.0%', '197k'],
161
146
  ['z-ai/glm-4.5-air:free', 'GLM 4.5 Air', 'S+', '72.0%', '131k'],
162
- ['stepfun/step-3.5-flash:free', 'Step 3.5 Flash', 'S+', '74.4%', '256k'],
163
- ['arcee-ai/trinity-large-preview:free', 'Arcee Trinity Large','S+', '60.0%', '131k'],
164
- ['xiaomi/mimo-v2-flash:free', 'MiMo V2 Flash', 'S+', '73.4%', '262k'],
165
- // ── S tier β€” confirmed free ──
166
- ['deepseek/deepseek-r1-0528:free', 'DeepSeek R1 0528', 'S', '61.0%', '164k'],
167
- // ── A+ tier β€” confirmed free ──
168
- ['nvidia/nemotron-3-super-120b-a12b:free', 'Nemotron 3 Super', 'A+', '56.0%', '262k'],
147
+ ['tencent/hy3-preview:free', 'Tencent HY3 Preview','S+', '-', '262k'],
148
+ ['poolside/laguna-m.1:free', 'Poolside Laguna M.1', 'S+', '-', '256k'],
149
+ ['poolside/laguna-xs.2:free', 'Poolside Laguna XS.2','S+', '-', '256k'],
150
+ // ── S tier β€” live :free chat/coding models ──
169
151
  ['qwen/qwen3-next-80b-a3b-instruct:free', 'Qwen3 80B Instruct', 'S', '65.0%', '131k'],
170
- ['arcee-ai/trinity-mini:free', 'Arcee Trinity Mini', 'A', '40.0%', '131k'],
171
- ['nvidia/nemotron-nano-12b-v2-vl:free', 'Nemotron Nano 12B VL','A', '20.0%', '128k'],
172
- ['nvidia/nemotron-nano-9b-v2:free', 'Nemotron Nano 9B', 'B+', '18.0%', '128k'],
173
- // ── A tier β€” confirmed free ──
174
- ['nousresearch/hermes-3-llama-3.1-405b:free', 'Hermes 3 405B', 'A', '44.0%', '131k'],
175
152
  ['openai/gpt-oss-120b:free', 'GPT OSS 120B', 'S', '60.0%', '131k'],
153
+ ['inclusionai/ling-2.6-1t:free', 'Ling 2.6 1T', 'S', '-', '128k'],
154
+ ['nvidia/nemotron-3-super-120b-a12b:free', 'Nemotron 3 Super', 'A+', '56.0%', '262k'],
155
+ // ── A+ tier β€” live :free chat/coding models ──
156
+ ['nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free', 'Nemotron 3 Omni', 'A+', '52.0%', '128k'],
157
+ ['nvidia/nemotron-nano-12b-v2-vl:free', 'Nemotron Nano 12B VL','A', '20.0%', '128k'],
158
+ ['openrouter/owl-alpha', 'Owl Alpha', 'A+', '-', '128k'],
159
+ // ── A tier β€” live :free chat/coding models ──
160
+ ['nousresearch/hermes-3-llama-3.1-405b:free', 'Hermes 3 405B', 'A', '44.0%', '131k'],
176
161
  ['openai/gpt-oss-20b:free', 'GPT OSS 20B', 'A', '42.0%', '131k'],
177
162
  ['nvidia/nemotron-3-nano-30b-a3b:free', 'Nemotron Nano 30B', 'A', '43.0%', '128k'],
178
163
  ['cognitivecomputations/dolphin-mistral-24b-venice-edition:free', 'Dolphin Mistral 24B', 'B+', '30.0%', '33k'],
164
+ ['google/gemma-4-31b-it:free', 'Gemma 4 31B', 'A', '45.0%', '256k'],
165
+ ['google/gemma-4-26b-a4b-it:free', 'Gemma 4 26B MoE', 'A-', '38.0%', '256k'],
179
166
  // ── A- tier β€” confirmed free ──
180
167
  ['meta-llama/llama-3.3-70b-instruct:free', 'Llama 3.3 70B', 'A-', '39.5%', '131k'],
168
+ ['meta-llama/llama-3.2-3b-instruct:free', 'Llama 3.2 3B', 'B', '20.0%', '128k'],
181
169
  // ── B+ tier ──
182
- ['mistralai/mistral-small-3.1-24b-instruct:free', 'Mistral Small 3.1', 'B+', '30.0%', '128k'],
170
+ ['nvidia/nemotron-nano-9b-v2:free', 'Nemotron Nano 9B', 'B+', '18.0%', '128k'],
171
+ ['google/gemma-3n-e2b-it:free', 'Gemma 3n E2B', 'B+', '-', '8k'],
183
172
  // ── B tier ──
184
173
  ['google/gemma-3-27b-it:free', 'Gemma 3 27B', 'B', '22.0%', '131k'],
174
+ ['google/gemma-4-31b-a4b-it:free', 'Gemma 4 31B MoE', 'B', '-', '256k'],
175
+ ['openrouter/free', 'OpenRouter Free', 'B', '-', '128k'],
185
176
  // ── C tier ──
186
177
  ['google/gemma-3-12b-it:free', 'Gemma 3 12B', 'C', '15.0%', '131k'],
187
- ['qwen/qwen3-4b:free', 'Qwen3 4B', 'C', '15.0%', '41k'],
188
178
  ['google/gemma-3n-e4b-it:free', 'Gemma 3n E4B', 'C', '10.0%', '8k'],
189
179
  ['google/gemma-3-4b-it:free', 'Gemma 3 4B', 'C', '10.0%', '33k'],
180
+ ['liquid/lfm-2.5-1.2b-instruct:free', 'LFM 2.5 1.2B', 'C', '-', '32k'],
181
+ ['liquid/lfm-2.5-1.2b-thinking:free', 'LFM 2.5 Thinking', 'C', '-', '32k'],
190
182
  ]
191
183
 
192
- // πŸ“– Hugging Face Inference source - https://huggingface.co
193
- // πŸ“– OpenAI-compatible endpoint via router.huggingface.co/v1
194
- // πŸ“– Free monthly credits on developer accounts (~$0.10) β€” token at https://huggingface.co/settings/tokens
195
- export const huggingface = [
196
- ['deepseek-ai/DeepSeek-V3-0324', 'DeepSeek V3 0324', 'S', '62.0%', '128k'],
197
- ['Qwen/Qwen2.5-Coder-32B-Instruct', 'Qwen2.5 Coder 32B', 'A', '46.0%', '32k'],
184
+ // πŸ“– GitHub Models source - https://models.github.ai
185
+ // πŸ“– OpenAI-compatible endpoint: https://models.github.ai/inference/chat/completions
186
+ // πŸ“– Free usage is quota-limited by GitHub/Copilot tier, but no separate provider billing is needed.
187
+ export const githubModels = [
188
+ ['openai/gpt-4.1', 'GPT-4.1', 'S+', '-', '1M'],
189
+ ['openai/gpt-4.1-mini', 'GPT-4.1 Mini', 'S', '-', '1M'],
190
+ ['openai/gpt-4.1-nano', 'GPT-4.1 Nano', 'A', '-', '1M'],
191
+ ['deepseek/deepseek-v3-0324', 'DeepSeek V3 0324', 'S', '62.0%', '128k'],
192
+ ['meta/meta-llama-3.1-405b-instruct', 'Llama 3.1 405B', 'A', '44.0%', '128k'],
193
+ ['meta/llama-4-maverick-17b-128e-instruct-fp8', 'Llama 4 Maverick', 'S', '62.0%', '1M'],
194
+ ['meta/llama-4-scout-17b-16e-instruct', 'Llama 4 Scout', 'A', '44.0%', '10M'],
195
+ ['meta/llama-3.3-70b-instruct', 'Llama 3.3 70B', 'A-', '39.5%', '128k'],
196
+ ['meta/llama-3.2-90b-vision-instruct', 'Llama 3.2 90B Vision','A-', '-', '128k'],
197
+ ['meta/llama-3.2-11b-vision-instruct', 'Llama 3.2 11B Vision','B', '-', '128k'],
198
+ ['meta/meta-llama-3.1-8b-instruct', 'Llama 3.1 8B', 'B', '28.8%', '128k'],
199
+ ['mistral-ai/codestral-2501', 'Codestral 2501', 'B+', '34.0%', '256k'],
200
+ ['mistral-ai/mistral-medium-2505', 'Mistral Medium 2505', 'A', '48.0%', '128k'],
201
+ ['mistral-ai/mistral-small-2503', 'Mistral Small 2503', 'B+', '30.0%', '128k'],
202
+ ['mistral-ai/ministral-3b', 'Ministral 3B', 'C', '-', '32k'],
198
203
  ]
199
204
 
200
- // πŸ“– Replicate source - https://replicate.com
201
- // πŸ“– Uses predictions endpoint (not OpenAI chat-completions) with token auth
202
- export const replicate = [
203
- ['deepseek-ai/DeepSeek-V3-0324', 'DeepSeek V3 0324', 'S', '62.0%', '128k'],
204
- ['meta/llama-3.3-70b-instruct', 'Llama 3.3 70B', 'A-', '39.5%', '128k'],
205
- ]
206
-
207
- // πŸ“– DeepInfra source - https://deepinfra.com
208
- // πŸ“– OpenAI-compatible endpoint: https://api.deepinfra.com/v1/openai/chat/completions
209
- export const deepinfra = [
210
- ['nvidia/Nemotron-3-Super', 'Nemotron 3 Super', 'A+', '56.0%', '128k'],
211
- ['deepseek-ai/DeepSeek-V3-0324', 'DeepSeek V3 0324', 'S', '62.0%', '128k'],
212
- ['Qwen/Qwen3-235B-A22B', 'Qwen3 235B', 'S+', '70.0%', '128k'],
213
- ['meta-llama/Meta-Llama-3.1-70B-Instruct', 'Llama 3.1 70B', 'A-', '39.5%', '128k'],
214
- ]
215
-
216
- // πŸ“– Fireworks AI source - https://fireworks.ai
217
- // πŸ“– OpenAI-compatible endpoint: https://api.fireworks.ai/inference/v1/chat/completions
218
- // πŸ“– Free trial credits: $1 for new developers
219
- export const fireworks = [
220
- ['accounts/fireworks/models/deepseek-v3', 'DeepSeek V3', 'S', '62.0%', '128k'],
221
- ['accounts/fireworks/models/deepseek-r1', 'DeepSeek R1', 'S', '61.0%', '128k'],
222
- ['accounts/fireworks/models/llama4-maverick-instruct-basic', 'Llama 4 Maverick', 'S', '62.0%', '1M'],
223
- ['accounts/fireworks/models/qwen3-235b-a22b', 'Qwen3 235B', 'S+', '70.0%', '128k'],
205
+ // πŸ“– Mistral La Plateforme source - https://console.mistral.ai
206
+ // πŸ“– Experiment plan is free for evaluation/prototyping and exposes general + coding models.
207
+ // πŸ“– Keep Codestral as a separate provider key for backward compatibility with existing configs.
208
+ export const mistral = [
209
+ ['mistral-large-latest', 'Mistral Large', 'S+', '70.0%', '256k'],
210
+ ['mistral-medium-latest', 'Mistral Medium', 'S', '66.0%', '128k'],
211
+ ['mistral-small-latest', 'Mistral Small', 'A', '48.0%', '128k'],
212
+ ['devstral-medium-latest', 'Devstral Medium', 'S+', '72.2%', '128k'],
213
+ ['devstral-small-latest', 'Devstral Small', 'A+', '55.0%', '128k'],
214
+ ['magistral-medium-latest', 'Magistral Medium', 'A+', '52.0%', '128k'],
215
+ ['magistral-small-latest', 'Magistral Small', 'A', '45.0%', '128k'],
224
216
  ]
225
217
 
226
218
  // πŸ“– Mistral Codestral source - https://codestral.mistral.ai
227
219
  // πŸ“– Free coding model β€” 30 req/min, 2000/day (phone number required for key)
228
- // πŸ“– API keys at https://codestral.mistral.ai
220
+ // πŸ“– API keys now use the Mistral platform key format; CODESTRAL_API_KEY remains supported as an alias.
229
221
  export const codestral = [
230
222
  ['codestral-latest', 'Codestral', 'B+', '34.0%', '256k'],
231
223
  ]
232
224
 
233
- // πŸ“– Hyperbolic source - https://app.hyperbolic.ai
234
- // πŸ“– $1 free trial credits β€” API keys at https://app.hyperbolic.xyz/settings
235
- export const hyperbolic = [
236
- ['qwen/qwen3-coder-480b-a35b-instruct', 'Qwen3 Coder 480B', 'S+', '70.6%', '256k'],
237
- ['deepseek-ai/DeepSeek-R1-0528', 'DeepSeek R1 0528', 'S', '61.0%', '128k'],
238
- ['moonshotai/Kimi-K2-Instruct', 'Kimi K2 Instruct', 'S', '65.8%', '131k'],
239
- ['openai/gpt-oss-120b', 'GPT OSS 120B', 'S', '60.0%', '128k'],
240
- ['Qwen/Qwen3-235B-A22B-Instruct-2507', 'Qwen3 235B 2507', 'S+', '70.0%', '262k'],
241
- ['Qwen/Qwen3-235B-A22B', 'Qwen3 235B', 'S+', '70.0%', '128k'],
242
- ['qwen/qwen3-next-80b-a3b-instruct', 'Qwen3 80B Instruct', 'S', '65.0%', '128k'],
243
- ['Qwen/Qwen3-Next-80B-A3B-Thinking', 'Qwen3 80B Thinking', 'S', '68.0%', '128k'],
244
- ['deepseek-ai/DeepSeek-V3-0324', 'DeepSeek V3 0324', 'S', '62.0%', '128k'],
245
- ['openai/gpt-oss-20b', 'GPT OSS 20B', 'A', '42.0%', '131k'],
246
- ['Qwen/Qwen2.5-Coder-32B-Instruct', 'Qwen2.5 Coder 32B', 'A', '46.0%', '32k'],
247
- ['meta-llama/Llama-3.3-70B-Instruct', 'Llama 3.3 70B', 'A-', '39.5%', '128k'],
248
- ['meta-llama/Meta-Llama-3.1-405B-Instruct', 'Llama 3.1 405B', 'A', '44.0%', '128k'],
249
- ]
250
-
251
225
  // πŸ“– Scaleway source - https://console.scaleway.com
252
226
  // πŸ“– 1M free tokens β€” API keys at https://console.scaleway.com/iam/api-keys
253
227
  export const scaleway = [
254
228
  ['devstral-2-123b-instruct-2512', 'Devstral 2 123B', 'S+', '72.2%', '256k'],
255
- ['qwen3.5-397b-a17b', 'Qwen3.5 400B VLM', 'S', '68.0%', '250k'],
256
- ['mistral/mistral-large-3-675b-instruct-2512', 'Mistral Large 675B', 'A+', '58.0%', '250k'],
229
+ ['qwen3.5-397b-a17b', 'Qwen3.5 400B VLM', 'S', '68.0%', '250k'],
230
+ ['mistral/mistral-large-3-675b-instruct-2512','Mistral Large 675B', 'A+', '58.0%', '250k'],
257
231
  ['qwen3-235b-a22b-instruct-2507', 'Qwen3 235B', 'S+', '70.0%', '128k'],
258
232
  ['gpt-oss-120b', 'GPT OSS 120B', 'S', '60.0%', '131k'],
259
233
  ['qwen3-coder-30b-a3b-instruct', 'Qwen3 Coder 30B', 'A+', '55.0%', '32k'],
260
- ['holo2-30b-a3b', 'Holo2 30B', 'A+', '52.0%', '131k'],
234
+ ['holo2-30b-a3b', 'Holo2 30B', 'A+', '52.0%', '131k'],
261
235
  ['llama-3.3-70b-instruct', 'Llama 3.3 70B', 'A-', '39.5%', '128k'],
262
- ['deepseek-r1-distill-llama-70b', 'R1 Distill 70B', 'A', '43.9%', '128k'],
263
236
  ['mistral-small-3.2-24b-instruct-2506', 'Mistral Small 3.2', 'B+', '30.0%', '128k'],
237
+ ['gemma-3-27b-it', 'Gemma 3 27B', 'B', '22.0%', '128k'],
264
238
  ]
265
239
 
266
240
  // πŸ“– Google AI Studio source - https://aistudio.google.com
267
- // πŸ“– Free Gemma models β€” 14.4K req/day, API keys at https://aistudio.google.com/apikey
241
+ // πŸ“– OpenAI-compatible endpoint exposes Gemini models; free quotas vary by model and region.
268
242
  export const googleai = [
269
- ['gemma-4-31b-it', 'Gemma 4 31B', 'B+', '45.0%', '256k'],
270
- ['gemma-4-26b-a4b-it', 'Gemma 4 26B MoE', 'B+', '42.0%', '256k'],
271
- ['gemma-3-27b-it', 'Gemma 3 27B', 'B', '22.0%', '128k'],
272
- ['gemma-3-12b-it', 'Gemma 3 12B', 'C', '15.0%', '128k'],
273
- ['gemma-4-e4b-it', 'Gemma 4 E4B', 'C', '12.0%', '128k'],
274
- ['gemma-3-4b-it', 'Gemma 3 4B', 'C', '10.0%', '128k'],
243
+ ['gemini-3.1-pro-preview', 'Gemini 3.1 Pro Preview', 'S+', '78.0%', '1M'],
244
+ ['gemini-3-flash-preview', 'Gemini 3 Flash Preview', 'S', '65.0%', '1M'],
245
+ ['gemini-3.1-flash-lite-preview', 'Gemini 3.1 Flash Lite Preview','A+', '55.0%', '1M'],
246
+ ['gemini-2.5-pro', 'Gemini 2.5 Pro', 'S+', '63.2%', '1M'],
247
+ ['gemini-2.5-flash', 'Gemini 2.5 Flash', 'A+', '50.0%', '1M'],
248
+ ['gemini-2.5-flash-lite', 'Gemini 2.5 Flash Lite', 'A', '42.0%', '1M'],
275
249
  ]
276
250
 
277
251
  // πŸ“– ZAI source - https://open.z.ai
278
- // πŸ“– Free API keys available at https://open.z.ai β€” GLM frontier models
279
- // πŸ“– OpenAI-compatible endpoint for coding tasks
252
+ // πŸ“– Free tier is limited to Flash models; paid GLM models are intentionally excluded.
280
253
  export const zai = [
281
- // ── S+ tier β€” SWE-bench Verified β‰₯70% ──
282
- ['zai/glm-5', 'GLM-5', 'S+', '77.8%', '128k'],
283
- ['zai/glm-4.7', 'GLM-4.7', 'S+', '73.8%', '200k'],
284
254
  ['zai/glm-4.7-flash', 'GLM-4.7-Flash', 'S', '59.2%', '200k'],
285
- ['zai/glm-4.5', 'GLM-4.5', 'S+', '75.0%', '128k'],
286
- ['zai/glm-4.5-air', 'GLM-4.5-Air', 'S+', '72.0%', '128k'],
287
255
  ['zai/glm-4.5-flash', 'GLM-4.5-Flash', 'S', '59.2%', '128k'],
288
- ['zai/glm-4.6', 'GLM-4.6', 'S+', '70.0%', '128k'],
289
- ]
290
-
291
- // πŸ“– SiliconFlow source - https://cloud.siliconflow.cn
292
- // πŸ“– OpenAI-compatible endpoint: https://api.siliconflow.com/v1/chat/completions
293
- // πŸ“– Free model quotas vary by model and can change over time.
294
- export const siliconflow = [
295
- ['Qwen/Qwen3-Coder-480B-A35B-Instruct', 'Qwen3 Coder 480B', 'S+', '70.6%', '256k'],
296
- ['deepseek-ai/DeepSeek-V3.2', 'DeepSeek V3.2', 'S+', '73.1%', '128k'],
297
- ['Qwen/Qwen3-235B-A22B', 'Qwen3 235B', 'S+', '70.0%', '128k'],
298
- ['deepseek-ai/DeepSeek-R1', 'DeepSeek R1', 'S', '61.0%', '128k'],
299
- ['Qwen/Qwen3-Coder-30B-A3B-Instruct', 'Qwen3 Coder 30B', 'A+', '55.0%', '32k'],
300
- ['Qwen/Qwen2.5-Coder-32B-Instruct', 'Qwen2.5 Coder 32B', 'A', '46.0%', '32k'],
301
256
  ]
302
257
 
303
- // πŸ“– Together AI source - https://api.together.ai
304
- // πŸ“– OpenAI-compatible endpoint: https://api.together.xyz/v1/chat/completions
305
- // πŸ“– Credits/promotions vary by account and region; verify current quota in console.
306
- export const together = [
307
- // ── S+ tier ──
308
- ['moonshotai/Kimi-K2.5', 'Kimi K2.5', 'S+', '76.8%', '128k'],
309
- ['MiniMaxAI/MiniMax-M2.5', 'MiniMax M2.5', 'S+', '80.2%', '228k'],
310
- ['zai-org/GLM-5', 'GLM-5', 'S+', '77.8%', '128k'],
311
- ['Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8', 'Qwen3 Coder 480B', 'S+', '70.6%', '256k'],
312
- ['deepseek-ai/DeepSeek-V3.2', 'DeepSeek V3.2', 'S+', '73.1%', '164k'],
313
- ['MiniMaxAI/MiniMax-M2.1', 'MiniMax M2.1', 'S+', '74.0%', '197k'],
314
- // ── S tier ──
315
- ['Qwen/Qwen3.5-397B-A17B', 'Qwen3.5 400B VLM', 'S', '68.0%', '250k'],
316
- ['deepseek-ai/DeepSeek-V3.1', 'DeepSeek V3.1', 'S', '62.0%', '164k'],
317
- ['deepseek-ai/DeepSeek-V3.1-Terminus', 'DeepSeek V3.1 Term', 'S', '68.4%', '164k'],
318
- ['deepseek-ai/DeepSeek-R1', 'DeepSeek R1', 'S', '61.0%', '164k'],
319
- ['openai/gpt-oss-120b', 'GPT OSS 120B', 'S', '60.0%', '131k'],
320
- ['Qwen/Qwen3-235B-A22B-Instruct-2507', 'Qwen3 235B 2507', 'S+', '70.0%', '131k'],
321
- ['MiniMaxAI/MiniMax-M2', 'MiniMax M2', 'S', '69.4%', '197k'],
322
- // ── A+ tier ──
323
- ['nvidia/Nemotron-3-Super-120B-A12B', 'Nemotron 3 Super', 'A+', '56.0%', '128k'],
324
- ['nvidia/Nemotron-3-Nano-30B-A3B', 'Nemotron Nano 30B', 'A', '43.0%', '262k'],
325
- ['Qwen/Qwen3-Coder-30B-A3B-Instruct', 'Qwen3 Coder 30B', 'A+', '55.0%', '160k'],
326
- // ── A tier ──
327
- ['meta-llama/Llama-4-Scout-17B-16E-Instruct', 'Llama 4 Scout', 'A', '44.0%', '328k'],
328
- ['openai/gpt-oss-20b', 'GPT OSS 20B', 'A', '42.0%', '131k'],
329
- // ── A- tier ──
330
- ['meta-llama/Llama-3.3-70B-Instruct-Turbo', 'Llama 3.3 70B', 'A-', '39.5%', '128k'],
258
+ // πŸ“– Alibaba Cloud (DashScope) source - https://dashscope-intl.aliyuncs.com
259
+ // πŸ“– OpenAI-compatible endpoint: https://dashscope-intl.aliyuncs.com/compatible-mode/v1
260
+ // πŸ“– Free tier: 1M tokens per model (Singapore region only), valid for 90 days
261
+ // πŸ“– Get API key: https://modelstudio.console.alibabacloud.com
262
+ // πŸ“– Env var: DASHSCOPE_API_KEY
263
+ // πŸ“– Qwen3-Coder models: optimized coding models with excellent SWE-bench scores
264
+ export const qwen = [
265
+ // ── S+ tier β€” SWE-bench Verified β‰₯70% ──
266
+ ['qwen3-max', 'Qwen3 Max', 'S+', '78.8%', '1M'],
267
+ ['qwen3-235b-a22b-instruct', 'Qwen3 235B', 'S+', '70.0%', '256k'],
268
+ // ── S tier β€” SWE-bench Verified 60–70% ──
269
+ ['qwen3.5-plus', 'Qwen3.5 Plus', 'S', '68.0%', '1M'],
270
+ ['qwen3-coder-plus', 'Qwen3 Coder Plus', 'S', '69.6%', '256k'],
271
+ ['qwen3-coder-next', 'Qwen3 Coder Next', 'S', '65.0%', '256k'],
272
+ // ── A+ tier β€” SWE-bench Verified 50–60% ──
273
+ ['qwen3.5-flash', 'Qwen3.5 Flash', 'A+', '55.0%', '1M'],
274
+ ['qwen3-coder-flash', 'Qwen3 Coder Flash', 'A+', '55.0%', '256k'],
275
+ ['qwen3-32b', 'Qwen3 32B', 'A+', '50.0%', '128k'],
276
+ ['qwen2.5-coder-32b-instruct', 'Qwen2.5 Coder 32B', 'A', '46.0%', '32k'],
331
277
  ]
332
278
 
333
279
  // πŸ“– Cloudflare Workers AI source - https://developers.cloudflare.com/workers-ai
@@ -336,21 +282,21 @@ export const together = [
336
282
  // πŸ“– Free plan includes daily neuron quota and provider-level request limits.
337
283
  export const cloudflare = [
338
284
  // ── S+ tier ──
339
- ['@cf/moonshotai/kimi-k2.5', 'Kimi K2.5', 'S+', '76.8%', '256k'],
285
+ ['@cf/moonshotai/kimi-k2.6', 'Kimi K2.6', 'S+', '76.8%', '256k'],
340
286
  // ── S tier ──
341
- ['@cf/zhipu/glm-4.7-flash', 'GLM-4.7-Flash', 'S', '59.2%', '131k'],
287
+ ['@cf/zai-org/glm-4.7-flash', 'GLM-4.7-Flash', 'S', '59.2%', '131k'],
342
288
  ['@cf/openai/gpt-oss-120b', 'GPT OSS 120B', 'S', '60.0%', '128k'],
343
289
  // ── A+ tier ──
344
290
  ['@cf/qwen/qwq-32b', 'QwQ 32B', 'A+', '50.0%', '131k'],
291
+ ['@cf/nvidia/nemotron-3-120b-a12b', 'Nemotron 3 Super', 'A+', '56.0%', '128k'],
345
292
  // ── A tier ──
346
293
  ['@cf/meta/llama-4-scout-17b-16e-instruct', 'Llama 4 Scout', 'A', '44.0%', '131k'],
347
- ['@cf/nvidia/nemotron-3-120b-a12b', 'Nemotron 3 Super', 'A+', '56.0%', '128k'],
348
294
  ['@cf/qwen/qwen3-30b-a3b-fp8', 'Qwen3 30B MoE', 'A', '45.0%', '128k'],
349
295
  ['@cf/qwen/qwen2.5-coder-32b-instruct', 'Qwen2.5 Coder 32B', 'A', '46.0%', '32k'],
350
- ['@cf/deepseek-ai/deepseek-r1-distill-qwen-32b', 'R1 Distill 32B', 'A', '43.9%', '128k'],
351
- // ── A- tier ──
352
296
  ['@cf/openai/gpt-oss-20b', 'GPT OSS 20B', 'A', '42.0%', '128k'],
297
+ // ── A- tier ──
353
298
  ['@cf/meta/llama-3.3-70b-instruct-fp8-fast','Llama 3.3 70B', 'A-', '39.5%', '128k'],
299
+ ['@cf/google/gemma-4-31b-it', 'Gemma 4 31B', 'A', '45.0%', '256k'],
354
300
  ['@cf/google/gemma-4-26b-a4b-it', 'Gemma 4 26B MoE', 'A-', '38.0%', '256k'],
355
301
  ['@cf/mistralai/mistral-small-3.1-24b-instruct', 'Mistral Small 3.1', 'B+', '30.0%', '128k'],
356
302
  // ── B tier ──
@@ -358,70 +304,6 @@ export const cloudflare = [
358
304
  ['@cf/meta/llama-3.1-8b-instruct', 'Llama 3.1 8B', 'B', '28.8%', '128k'],
359
305
  ]
360
306
 
361
- // πŸ“– Perplexity source - https://docs.perplexity.ai
362
- // πŸ“– Chat Completions endpoint: https://api.perplexity.ai/chat/completions
363
- // πŸ“– Sonar models focus on search/reasoning and have tiered API rate limits.
364
- export const perplexity = [
365
- ['sonar-reasoning-pro', 'Sonar Reasoning Pro', 'A+', '50.0%', '128k'],
366
- ['sonar-reasoning', 'Sonar Reasoning', 'A', '45.0%', '128k'],
367
- ['sonar-pro', 'Sonar Pro', 'B+', '32.0%', '128k'],
368
- ['sonar', 'Sonar', 'B', '25.0%', '128k'],
369
- ]
370
-
371
- // πŸ“– Alibaba Cloud (DashScope) source - https://dashscope-intl.aliyuncs.com
372
- // πŸ“– OpenAI-compatible endpoint: https://dashscope-intl.aliyuncs.com/compatible-mode/v1
373
- // πŸ“– Free tier: 1M tokens per model (Singapore region only), valid for 90 days
374
- // πŸ“– Get API key: https://modelstudio.console.alibabacloud.com
375
- // πŸ“– Env var: DASHSCOPE_API_KEY
376
- // πŸ“– Qwen3-Coder models: optimized coding models with excellent SWE-bench scores
377
- export const qwen = [
378
- // ── S+ tier β€” SWE-bench Verified β‰₯70% ──
379
- ['qwen3.6-plus', 'Qwen3.6 Plus', 'S+', '78.8%', '1M'],
380
- ['qwen3-coder-plus', 'Qwen3 Coder Plus', 'S+', '69.6%', '256k'],
381
- ['qwen3-coder-480b-a35b-instruct', 'Qwen3 Coder 480B', 'S+', '70.6%', '256k'],
382
- // ── S tier β€” SWE-bench Verified 60–70% ──
383
- ['qwen3.5-plus', 'Qwen3.5 Plus', 'S', '68.0%', '1M'],
384
- ['qwen3-coder-max', 'Qwen3 Coder Max', 'S', '67.0%', '256k'],
385
- ['qwen3-coder-next', 'Qwen3 Coder Next', 'S', '65.0%', '256k'],
386
- ['qwen3-235b-a22b-instruct', 'Qwen3 235B', 'S', '70.0%', '256k'],
387
- ['qwen3-next-80b-a3b-instruct', 'Qwen3 80B Instruct', 'S', '65.0%', '128k'],
388
- // ── A+ tier β€” SWE-bench Verified 50–60% ──
389
- ['qwen3-32b', 'Qwen3 32B', 'A+', '50.0%', '128k'],
390
- ['qwen2.5-coder-32b-instruct', 'Qwen2.5 Coder 32B', 'A', '46.0%', '32k'],
391
- // ── B+ tier ──
392
- ['qwen3.5-flash', 'Qwen3.5 Flash', 'B+', '55.0%', '1M'],
393
- ]
394
-
395
- // πŸ“– iFlow source - https://platform.iflow.cn
396
- // πŸ“– OpenAI-compatible endpoint: https://apis.iflow.cn/v1/chat/completions
397
- // πŸ“– Free for individual users with no request limits (API key expires every 7 days)
398
- // πŸ“– Provides high-performance models including DeepSeek, Qwen3, Kimi K2, GLM, and TBStars2
399
- export const iflow = [
400
- // ── S+ tier β€” SWE-bench Verified β‰₯70% ──
401
- ['TBStars2-200B-A13B', 'TBStars2 200B', 'S+', '77.8%', '128k'],
402
- ['deepseek-v3.2', 'DeepSeek V3.2', 'S+', '73.1%', '128k'],
403
- ['qwen3-coder-plus', 'Qwen3 Coder Plus', 'S+', '72.0%', '256k'],
404
- ['qwen3-235b-a22b-instruct', 'Qwen3 235B', 'S+', '70.0%', '256k'],
405
- ['deepseek-r1', 'DeepSeek R1', 'S+', '70.6%', '128k'],
406
- // ── S tier β€” SWE-bench Verified 60–70% ──
407
- ['kimi-k2', 'Kimi K2', 'S', '65.8%', '128k'],
408
- ['kimi-k2-0905', 'Kimi K2 0905', 'S', '68.0%', '256k'],
409
- ['glm-4.6', 'GLM 4.6', 'S', '62.0%', '200k'],
410
- ['deepseek-v3', 'DeepSeek V3', 'S', '62.0%', '128k'],
411
- // ── A+ tier β€” SWE-bench Verified 50–60% ──
412
- ['qwen3-32b', 'Qwen3 32B', 'A+', '50.0%', '128k'],
413
- ['qwen3-max', 'Qwen3 Max', 'A+', '55.0%', '256k'],
414
- ]
415
-
416
- // πŸ“– Chutes AI - Decentralized serverless AI compute (Bittensor Subnet 64)
417
- // πŸ“– Truly free (community GPU-powered), no credit card required
418
- export const chutes = [
419
- ['deepseek-ai/DeepSeek-R1', 'DeepSeek R1', 'S', '61.0%', '64k'],
420
- ['meta-llama/Llama-3.1-70B-Instruct', 'Llama 3.1 70B', 'A-', '39.5%', '128k'],
421
- ['Qwen/Qwen2.5-72B-Instruct', 'Qwen 2.5 72B', 'A', '42.0%', '32k'],
422
- ['Qwen/Qwen2.5-Coder-32B-Instruct', 'Qwen2.5 Coder 32B', 'A', '46.0%', '32k'],
423
- ]
424
-
425
307
  // πŸ“– OVHcloud AI Endpoints - https://endpoints.ai.cloud.ovh.net
426
308
  // πŸ“– OpenAI-compatible API with European data sovereignty (GDPR)
427
309
  // πŸ“– Free sandbox: 2 req/min per IP per model (no API key needed), 400 RPM with API key
@@ -432,35 +314,26 @@ export const ovhcloud = [
432
314
  ['gpt-oss-20b', 'GPT OSS 20B', 'A', '42.0%', '131k'],
433
315
  ['Meta-Llama-3_3-70B-Instruct', 'Llama 3.3 70B', 'A-', '39.5%', '131k'],
434
316
  ['Qwen3-32B', 'Qwen3 32B', 'A+', '50.0%', '32k'],
435
- ['DeepSeek-R1-Distill-Llama-70B', 'R1 Distill 70B', 'A-', '40.0%', '131k'],
436
317
  ['Mistral-Small-3.2-24B-Instruct-2506', 'Mistral Small 3.2', 'B+', '34.0%', '131k'],
318
+ ['Mistral-7B-Instruct-v0.3', 'Mistral 7B Instruct', 'B', '25.0%', '32k'],
319
+ ['Mistral-Nemo-Instruct-2407', 'Mistral Nemo', 'B+', '30.0%', '128k'],
320
+ ['Qwen3.5-9B', 'Qwen3.5 9B', 'B+', '30.0%', '128k'],
437
321
  ['Llama-3.1-8B-Instruct', 'Llama 3.1 8B', 'B', '28.8%', '131k'],
438
322
  ]
439
323
 
440
- // πŸ“– Rovo Dev CLI source - https://www.atlassian.com/rovo
441
- // πŸ“– CLI tool only - no API endpoint - requires 'acli rovodev run'
442
- // πŸ“– Install: https://support.atlassian.com/rovo/docs/install-and-run-rovo-dev-cli-on-your-device/
443
- // πŸ“– Free tier: 5M tokens/day (beta) - Claude Sonnet 4 (72.7% SWE-bench)
444
- // πŸ“– Requires Atlassian account + Rovo Dev activated on your site
445
- export const rovo = [
446
- ['anthropic/claude-sonnet-4.6', 'Claude Sonnet 4.6', 'S+', '75.0%', '200k'],
447
- ['anthropic/claude-opus-4.6', 'Claude Opus 4.6', 'S+', '80.0%', '200k'],
448
- ['openai/gpt-5.2', 'GPT-5.2', 'S+', '72.0%', '400k'],
449
- ['openai/gpt-5.2-codex', 'GPT-5.2 Codex', 'S+', '74.0%', '400k'],
450
- ['anthropic/claude-haiku-4.5', 'Claude Haiku 4.5', 'A+', '50.0%', '200k'],
451
- ]
452
-
453
324
  // πŸ“– Gemini CLI source - https://github.com/google-gemini/gemini-cli
454
325
  // πŸ“– CLI tool with OpenAI-compatible API support
455
326
  // πŸ“– Install: npm install -g @google/gemini-cli
456
327
  // πŸ“– Free tier: 1,000 req/day with personal Google account (no credit card)
457
- // πŸ“– Models: Gemini 3.1 Pro, Gemini 2.5 Pro, Gemini 2.5 Flash
458
- // πŸ“– Note: Gemini 3 Pro was shut down March 9, 2026 β€” replaced by Gemini 3.1 Pro
328
+ // πŸ“– Models track Google AI Studio IDs; no stale google/ prefix.
459
329
  // πŸ“– Supports custom OpenAI-compatible providers via GEMINI_API_BASE_URL
460
330
  export const gemini = [
461
- ['google/gemini-3.1-pro', 'Gemini 3.1 Pro', 'S+', '78.0%', '1M'],
462
- ['google/gemini-2.5-pro', 'Gemini 2.5 Pro', 'S+', '63.2%', '1M'],
463
- ['google/gemini-2.5-flash', 'Gemini 2.5 Flash', 'A+', '50.0%', '1M'],
331
+ ['gemini-3.1-pro-preview', 'Gemini 3.1 Pro Preview', 'S+', '78.0%', '1M'],
332
+ ['gemini-3-flash-preview', 'Gemini 3 Flash Preview', 'S', '65.0%', '1M'],
333
+ ['gemini-3.1-flash-lite-preview', 'Gemini 3.1 Flash Lite Preview','A+', '55.0%', '1M'],
334
+ ['gemini-2.5-pro', 'Gemini 2.5 Pro', 'S+', '63.2%', '1M'],
335
+ ['gemini-2.5-flash', 'Gemini 2.5 Flash', 'A+', '50.0%', '1M'],
336
+ ['gemini-2.5-flash-lite', 'Gemini 2.5 Flash Lite', 'A', '42.0%', '1M'],
464
337
  ]
465
338
 
466
339
  // πŸ“– OpenCode Zen free models β€” hosted AI gateway accessed through OpenCode CLI/Desktop
@@ -470,12 +343,13 @@ export const gemini = [
470
343
  // πŸ“– Config: set provider to opencode/<model-id> in OpenCode config
471
344
  export const opencodeZen = [
472
345
  ['big-pickle', 'Big Pickle', 'S+', '72.0%', '200k'],
473
- ['mimo-v2-pro-free', 'MiMo V2 Pro Free', 'S+', '75.0%', '1M'],
474
- ['mimo-v2-flash-free', 'MiMo V2 Flash Free', 'S+', '73.4%', '262k'],
475
- ['mimo-v2-omni-free', 'MiMo V2 Omni Free', 'S+', '73.0%', '262k'],
476
- ['gpt-5-nano', 'GPT 5 Nano', 'S', '65.0%', '400k'],
477
346
  ['minimax-m2.5-free', 'MiniMax M2.5 Free', 'S+', '80.2%', '200k'],
478
347
  ['nemotron-3-super-free', 'Nemotron 3 Super Free','A+', '52.0%', '1M'],
348
+ ['gpt-5-nano', 'GPT 5 Nano', 'S', '65.0%', '400k'],
349
+ ['hy3-preview-free', 'HY3 Preview Free', 'A+', '-', '128k'],
350
+ ['ling-2.6-flash-free', 'Ling 2.6 Flash Free', 'S', '-', '128k'],
351
+ ['trinity-mini-free', 'Trinity Mini Preview', 'A', '-', '128k'],
352
+ ['trinity-large-preview-free', 'Trinity Large Preview','S', '-', '128k'],
479
353
  ]
480
354
 
481
355
  // πŸ“– All sources combined - used by the main script
@@ -503,6 +377,16 @@ export const sources = {
503
377
  url: 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions',
504
378
  models: googleai,
505
379
  },
380
+ 'github-models': {
381
+ name: 'GitHub Models',
382
+ url: 'https://models.github.ai/inference/chat/completions',
383
+ models: githubModels,
384
+ },
385
+ mistral: {
386
+ name: 'Mistral La Plateforme',
387
+ url: 'https://api.mistral.ai/v1/chat/completions',
388
+ models: mistral,
389
+ },
506
390
  cloudflare: {
507
391
  name: 'Cloudflare AI',
508
392
  url: 'https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1/chat/completions',
@@ -513,46 +397,16 @@ export const sources = {
513
397
  url: 'https://openrouter.ai/api/v1/chat/completions',
514
398
  models: openrouter,
515
399
  },
516
- deepinfra: {
517
- name: 'DeepInfra',
518
- url: 'https://api.deepinfra.com/v1/openai/chat/completions',
519
- models: deepinfra,
520
- },
521
- huggingface: {
522
- name: 'Hugging Face',
523
- url: 'https://router.huggingface.co/v1/chat/completions',
524
- models: huggingface,
525
- },
526
- perplexity: {
527
- name: 'Perplexity',
528
- url: 'https://api.perplexity.ai/chat/completions',
529
- models: perplexity,
530
- },
531
400
  sambanova: {
532
401
  name: 'SambaNova',
533
402
  url: 'https://api.sambanova.ai/v1/chat/completions',
534
403
  models: sambanova,
535
404
  },
536
- fireworks: {
537
- name: 'Fireworks',
538
- url: 'https://api.fireworks.ai/inference/v1/chat/completions',
539
- models: fireworks,
540
- },
541
- hyperbolic: {
542
- name: 'Hyperbolic',
543
- url: 'https://api.hyperbolic.xyz/v1/chat/completions',
544
- models: hyperbolic,
545
- },
546
405
  ovhcloud: {
547
406
  name: 'OVHcloud AI',
548
407
  url: 'https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/chat/completions',
549
408
  models: ovhcloud,
550
409
  },
551
- replicate: {
552
- name: 'Replicate',
553
- url: 'https://api.replicate.com/v1/predictions',
554
- models: replicate,
555
- },
556
410
  codestral: {
557
411
  name: 'Codestral',
558
412
  url: 'https://api.mistral.ai/v1/chat/completions',
@@ -573,20 +427,6 @@ export const sources = {
573
427
  url: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions',
574
428
  models: qwen,
575
429
  },
576
- siliconflow: {
577
- name: 'SiliconFlow',
578
- url: 'https://api.siliconflow.com/v1/chat/completions',
579
- models: siliconflow,
580
- },
581
- rovo: {
582
- name: 'Rovo Dev CLI',
583
- url: null, // CLI tool - no API endpoint
584
- models: rovo,
585
- cliOnly: true,
586
- installUrl: 'https://support.atlassian.com/rovo/docs/install-and-run-rovo-dev-cli-on-your-device/',
587
- binary: 'acli',
588
- checkArgs: ['rovodev', '--help'],
589
- },
590
430
  gemini: {
591
431
  name: 'Gemini CLI',
592
432
  url: null, // CLI tool - no API endpoint (can use OpenAI-compatible via env)
@@ -596,28 +436,12 @@ export const sources = {
596
436
  binary: 'gemini',
597
437
  checkArgs: ['--version'],
598
438
  },
599
- chutes: {
600
- name: 'Chutes AI',
601
- url: 'https://chutes.ai/v1/chat/completions',
602
- models: chutes,
603
- },
604
439
  'opencode-zen': {
605
440
  name: 'OpenCode Zen',
606
441
  url: 'https://opencode.ai/zen/v1/chat/completions',
607
442
  models: opencodeZen,
608
443
  zenOnly: true,
609
444
  },
610
- together: {
611
- name: 'Together AI',
612
- url: 'https://api.together.xyz/v1/chat/completions',
613
- models: together,
614
- },
615
- iflow: {
616
- name: 'iFlow ⚠️',
617
- url: 'https://apis.iflow.cn/v1/chat/completions',
618
- models: iflow,
619
- shutdownDate: '2026-04-17', // πŸ“– Shutting down April 17, 2026
620
- },
621
445
  }
622
446
 
623
447
  // πŸ“– Flatten all models from all sources β€” each entry includes providerKey as 6th element