@blockrun/clawrouter 0.12.257 → 0.12.258
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 +28 -26
- package/dist/cli.js +378 -132
- package/dist/index.js +378 -132
- package/dist/router/index.js +43 -30
- package/docs/9-free-ai-models-zero-cost-blockrun.md +73 -86
- package/docs/anthropic-cost-savings.md +4 -4
- package/docs/anthropic-third-party-harness-changes.md +3 -3
- package/docs/clawrouter-cuts-llm-api-costs-500x.md +1 -1
- package/docs/clawrouter-vs-openrouter-llm-routing-comparison.md +3 -3
- package/docs/features.md +9 -8
- package/docs/routing-profiles.md +24 -22
- package/docs/subscription-failover.md +1 -1
- package/package.json +3 -3
- package/scripts/benchmark.py +2 -2
- package/scripts/reinstall.sh +7 -5
- package/skills/clawrouter/SKILL.md +4 -4
- package/src/top-models.json +8 -4
package/dist/cli.js
CHANGED
|
@@ -35033,6 +35033,13 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
35033
35033
|
supportsTools: true,
|
|
35034
35034
|
supportsVision: true
|
|
35035
35035
|
},
|
|
35036
|
+
"cohere/north-mini-code": {
|
|
35037
|
+
// supportsTools: not probed — fails closed
|
|
35038
|
+
contextWindow: 256e3,
|
|
35039
|
+
maxOutputTokens: 16384,
|
|
35040
|
+
supportsTools: false,
|
|
35041
|
+
supportsVision: false
|
|
35042
|
+
},
|
|
35036
35043
|
"deepseek/deepseek-chat": {
|
|
35037
35044
|
contextWindow: 1048576,
|
|
35038
35045
|
maxOutputTokens: 65536,
|
|
@@ -35123,8 +35130,15 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
35123
35130
|
supportsTools: true,
|
|
35124
35131
|
supportsVision: true
|
|
35125
35132
|
},
|
|
35126
|
-
"nvidia/
|
|
35127
|
-
// supportsTools:
|
|
35133
|
+
"nvidia/llama-3.2-11b-vision": {
|
|
35134
|
+
// supportsTools: not probed — fails closed
|
|
35135
|
+
contextWindow: 128e3,
|
|
35136
|
+
maxOutputTokens: 16384,
|
|
35137
|
+
supportsTools: false,
|
|
35138
|
+
supportsVision: true
|
|
35139
|
+
},
|
|
35140
|
+
"nvidia/nemotron-3-nano-30b": {
|
|
35141
|
+
// supportsTools: not probed — fails closed
|
|
35128
35142
|
contextWindow: 131072,
|
|
35129
35143
|
maxOutputTokens: 16384,
|
|
35130
35144
|
supportsTools: false,
|
|
@@ -35136,21 +35150,16 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
35136
35150
|
supportsTools: false,
|
|
35137
35151
|
supportsVision: true
|
|
35138
35152
|
},
|
|
35139
|
-
"nvidia/nemotron-
|
|
35140
|
-
// supportsTools:
|
|
35141
|
-
contextWindow:
|
|
35142
|
-
maxOutputTokens: 16384,
|
|
35143
|
-
supportsTools: false,
|
|
35144
|
-
supportsVision: true
|
|
35145
|
-
},
|
|
35146
|
-
"nvidia/nemotron-nano-9b-v2": {
|
|
35147
|
-
contextWindow: 131072,
|
|
35153
|
+
"nvidia/nemotron-3-ultra-550b": {
|
|
35154
|
+
// supportsTools: not probed — fails closed
|
|
35155
|
+
contextWindow: 1e6,
|
|
35148
35156
|
maxOutputTokens: 16384,
|
|
35149
35157
|
supportsTools: false,
|
|
35150
35158
|
supportsVision: false
|
|
35151
35159
|
},
|
|
35152
|
-
"nvidia/
|
|
35153
|
-
|
|
35160
|
+
"nvidia/nemotron-3.5-lightning": {
|
|
35161
|
+
// supportsTools: not probed — fails closed
|
|
35162
|
+
contextWindow: 1e6,
|
|
35154
35163
|
maxOutputTokens: 16384,
|
|
35155
35164
|
supportsTools: false,
|
|
35156
35165
|
supportsVision: false
|
|
@@ -35210,13 +35219,6 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
35210
35219
|
supportsTools: false,
|
|
35211
35220
|
supportsVision: true
|
|
35212
35221
|
},
|
|
35213
|
-
"openai/gpt-5.3": {
|
|
35214
|
-
// supportsTools: gateway unavailable at probe time — fails closed
|
|
35215
|
-
contextWindow: 128e3,
|
|
35216
|
-
maxOutputTokens: 128e3,
|
|
35217
|
-
supportsTools: false,
|
|
35218
|
-
supportsVision: true
|
|
35219
|
-
},
|
|
35220
35222
|
"openai/gpt-5.3-codex": {
|
|
35221
35223
|
// supportsTools: gateway unavailable at probe time — fails closed; override: 2026-08-29 probe: every request (6 plain + 3 tool attempts) returned a gateway 500, so the probe measured an incident, not the model. Codex's function calling is established by the 2026-07 Terminal-Bench / tau2 calibration trajectories in portfolio.ts. Hosts observing the 500s should drop it with RouterOptions.unavailableModels rather than this snapshot claiming the model cannot call tools.
|
|
35222
35224
|
contextWindow: 4e5,
|
|
@@ -35322,6 +35324,13 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
35322
35324
|
supportsTools: true,
|
|
35323
35325
|
supportsVision: false
|
|
35324
35326
|
},
|
|
35327
|
+
"poolside/laguna-xs-2.1": {
|
|
35328
|
+
// supportsTools: not probed — fails closed
|
|
35329
|
+
contextWindow: 131072,
|
|
35330
|
+
maxOutputTokens: 16384,
|
|
35331
|
+
supportsTools: false,
|
|
35332
|
+
supportsVision: false
|
|
35333
|
+
},
|
|
35325
35334
|
"qwen/qwen3.7-flash": {
|
|
35326
35335
|
contextWindow: 1e6,
|
|
35327
35336
|
maxOutputTokens: 65536,
|
|
@@ -37237,8 +37246,8 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
37237
37246
|
// $0.20/$1.25, 1M ctx
|
|
37238
37247
|
"google/gemini-2.5-flash-lite",
|
|
37239
37248
|
// $0.10/$0.40
|
|
37240
|
-
"nvidia/
|
|
37241
|
-
// FREE backstop — NVIDIA free tier (probed 2026-08-
|
|
37249
|
+
"nvidia/nemotron-3.5-lightning"
|
|
37250
|
+
// FREE backstop — NVIDIA free tier (probed 2026-08-30)
|
|
37242
37251
|
]
|
|
37243
37252
|
},
|
|
37244
37253
|
MEDIUM: {
|
|
@@ -37327,15 +37336,19 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
37327
37336
|
// Eco tier configs - absolute cheapest (blockrun/eco)
|
|
37328
37337
|
ecoTiers: {
|
|
37329
37338
|
SIMPLE: {
|
|
37330
|
-
primary: "nvidia/
|
|
37331
|
-
// FREE — NVIDIA free tier flagship
|
|
37339
|
+
primary: "nvidia/nemotron-3.5-lightning",
|
|
37340
|
+
// FREE — NVIDIA free tier flagship, 1M ctx
|
|
37332
37341
|
fallback: [
|
|
37333
|
-
"nvidia/nemotron-nano-
|
|
37334
|
-
// FREE —
|
|
37342
|
+
"nvidia/nemotron-3-nano-30b",
|
|
37343
|
+
// FREE — fastest free model (~121 tok/s)
|
|
37335
37344
|
// The free head keeps rotting with NVIDIA's hosting (deepseek-v4-flash
|
|
37336
37345
|
// 410 2026-08-12, seed-oss-36b 410 2026-08-03, gpt-oss-120b/20b 400
|
|
37337
|
-
// 2026-08-21
|
|
37338
|
-
//
|
|
37346
|
+
// 2026-08-21, and on 2026-08-30 FOUR of the five visible free models at
|
|
37347
|
+
// once — step-3.7-flash, nemotron-nano-9b-v2 and nemotron-nano-12b-v2-vl
|
|
37348
|
+
// all 410, mistral-nemotron hung). Each retirement retargets the two
|
|
37349
|
+
// free rungs to the current free tier; the paid rungs below never move.
|
|
37350
|
+
// The head follows blockrun's own redirect of the model it replaces, so
|
|
37351
|
+
// the router and the gateway never name different models.
|
|
37339
37352
|
"google/gemini-2.5-flash-lite",
|
|
37340
37353
|
// $0.10/$0.40 — cheapest paid rung
|
|
37341
37354
|
"zai/glm-5.3-flash",
|
|
@@ -37479,7 +37492,7 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
37479
37492
|
// strongest open-weight reasoner
|
|
37480
37493
|
"deepseek/deepseek-chat",
|
|
37481
37494
|
// Cheap, reliable
|
|
37482
|
-
"nvidia/
|
|
37495
|
+
"nvidia/nemotron-3.5-lightning"
|
|
37483
37496
|
// NVIDIA free ultimate backstop
|
|
37484
37497
|
]
|
|
37485
37498
|
},
|
|
@@ -37583,7 +37596,7 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
37583
37596
|
// retail high-risk 3/3
|
|
37584
37597
|
"deepseek/deepseek-chat",
|
|
37585
37598
|
// cheap, reliable
|
|
37586
|
-
"nvidia/
|
|
37599
|
+
"nvidia/nemotron-3.5-lightning"
|
|
37587
37600
|
// NVIDIA free ultimate backstop
|
|
37588
37601
|
]
|
|
37589
37602
|
},
|
|
@@ -37665,6 +37678,8 @@ var init_top_models = __esm({
|
|
|
37665
37678
|
"xai/grok-4.5",
|
|
37666
37679
|
"xai/grok-4.3",
|
|
37667
37680
|
"xai/grok-build-0.1",
|
|
37681
|
+
"zai/glm-5.3",
|
|
37682
|
+
"zai/glm-5.3-flash",
|
|
37668
37683
|
"zai/glm-5.2",
|
|
37669
37684
|
"zai/glm-5.1",
|
|
37670
37685
|
"zai/glm-5-turbo",
|
|
@@ -37676,11 +37691,13 @@ var init_top_models = __esm({
|
|
|
37676
37691
|
"deepseek/deepseek-v4-pro",
|
|
37677
37692
|
"deepseek/deepseek-chat",
|
|
37678
37693
|
"deepseek/deepseek-reasoner",
|
|
37694
|
+
"free/nemotron-3.5-lightning",
|
|
37695
|
+
"free/nemotron-3-nano-30b",
|
|
37696
|
+
"free/laguna-xs-2.1",
|
|
37697
|
+
"free/north-mini-code",
|
|
37679
37698
|
"free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
37680
|
-
"free/
|
|
37681
|
-
"free/
|
|
37682
|
-
"free/nemotron-nano-9b-v2",
|
|
37683
|
-
"free/nemotron-nano-12b-v2-vl"
|
|
37699
|
+
"free/nemotron-3-ultra-550b",
|
|
37700
|
+
"free/llama-3.2-11b-vision"
|
|
37684
37701
|
];
|
|
37685
37702
|
}
|
|
37686
37703
|
});
|
|
@@ -37993,14 +38010,20 @@ var init_models = __esm({
|
|
|
37993
38010
|
"xai/grok-3-fast": "xai/grok-4-fast-reasoning",
|
|
37994
38011
|
// delisted (too expensive)
|
|
37995
38012
|
// NVIDIA — backward compat aliases (nvidia/xxx → free/xxx)
|
|
37996
|
-
// Default free model is
|
|
37997
|
-
// opens the eco SIMPLE tier on. It replaced
|
|
37998
|
-
//
|
|
37999
|
-
//
|
|
38000
|
-
//
|
|
38001
|
-
//
|
|
38002
|
-
//
|
|
38003
|
-
|
|
38013
|
+
// Default free model is nemotron-3.5-lightning — the same model
|
|
38014
|
+
// @blockrun/router-core opens the eco SIMPLE tier on. It replaced
|
|
38015
|
+
// step-3.7-flash on 2026-08-30, when NVIDIA retired FOUR of the five visible
|
|
38016
|
+
// free models in a single sweep (blockrun #448): step-3.7-flash,
|
|
38017
|
+
// nemotron-nano-9b-v2 and nemotron-nano-12b-v2-vl all published 410 Gone, and
|
|
38018
|
+
// mistral-nemotron went the quiet way — still listed, >150s and zero bytes.
|
|
38019
|
+
// We follow blockrun's own retarget of step-3.7-flash rather than picking a
|
|
38020
|
+
// different survivor, so the proxy and the gateway name the same model.
|
|
38021
|
+
//
|
|
38022
|
+
// gpt-oss-120b/20b RECOVERED on the same probe run and are reachable again,
|
|
38023
|
+
// but they stay withheld from blockrun's public catalog over NVIDIA's
|
|
38024
|
+
// prompt-retention terms — so pins that NAME gpt-oss stay routable below and
|
|
38025
|
+
// nothing generic may land on it.
|
|
38026
|
+
nvidia: "free/nemotron-3.5-lightning",
|
|
38004
38027
|
"gpt-120b": "free/gpt-oss-120b",
|
|
38005
38028
|
// names the model itself — gateway redirects
|
|
38006
38029
|
"gpt-20b": "free/gpt-oss-20b",
|
|
@@ -38013,10 +38036,10 @@ var init_models = __esm({
|
|
|
38013
38036
|
// straight to gpt-oss-120b. Ids naming v4-flash itself keep the real id (the
|
|
38014
38037
|
// gateway redirects them); the v3.2/v4-pro ids follow blockrun's retarget
|
|
38015
38038
|
// rather than chaining through a second dead model.
|
|
38016
|
-
"nvidia/deepseek-v3.2": "free/
|
|
38017
|
-
"free/deepseek-v3.2": "free/
|
|
38018
|
-
"nvidia/deepseek-v4-pro": "free/
|
|
38019
|
-
"free/deepseek-v4-pro": "free/
|
|
38039
|
+
"nvidia/deepseek-v3.2": "free/nemotron-3.5-lightning",
|
|
38040
|
+
"free/deepseek-v3.2": "free/nemotron-3.5-lightning",
|
|
38041
|
+
"nvidia/deepseek-v4-pro": "free/nemotron-3.5-lightning",
|
|
38042
|
+
"free/deepseek-v4-pro": "free/nemotron-3.5-lightning",
|
|
38020
38043
|
"nvidia/deepseek-v4-flash": "free/deepseek-v4-flash",
|
|
38021
38044
|
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning": "free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
38022
38045
|
// qwen3-coder-480b retired (NVIDIA EOL 2026-06-14). Its server-side redirect used
|
|
@@ -38043,16 +38066,16 @@ var init_models = __esm({
|
|
|
38043
38066
|
// Retired free IDs → successors (mirror blockrun's 2026-07-17 redirect map:
|
|
38044
38067
|
// ultra-253b redirects to gpt-oss-120b; the two supers have NO server redirect —
|
|
38045
38068
|
// they stay hidden-but-routable, so their pins pass through to the real ids).
|
|
38046
|
-
"nvidia/nemotron-ultra-253b": "free/
|
|
38069
|
+
"nvidia/nemotron-ultra-253b": "free/nemotron-3.5-lightning",
|
|
38047
38070
|
// mistral-large-3-675b un-retired 2026-06-14, then EOL'd for good 2026-07-28:
|
|
38048
38071
|
// blockrun's re-probe got HTTP 410 Gone from NVIDIA on both passes (baa967b).
|
|
38049
38072
|
// Pin stays routable — the gateway redirects it to gpt-oss-120b.
|
|
38050
38073
|
"nvidia/mistral-large-3-675b": "free/mistral-large-3-675b",
|
|
38051
38074
|
"nvidia/qwen3.5-122b-a10b": "free/qwen3.5-122b-a10b",
|
|
38052
38075
|
// devstral-2-123b died upstream; blockrun redirects it to gpt-oss-120b (2026-07-17 map)
|
|
38053
|
-
"nvidia/devstral-2-123b": "free/
|
|
38054
|
-
"free/nemotron-ultra-253b": "free/
|
|
38055
|
-
"free/devstral-2-123b": "free/
|
|
38076
|
+
"nvidia/devstral-2-123b": "free/nemotron-3.5-lightning",
|
|
38077
|
+
"free/nemotron-ultra-253b": "free/nemotron-3.5-lightning",
|
|
38078
|
+
"free/devstral-2-123b": "free/nemotron-3.5-lightning",
|
|
38056
38079
|
// Explicit-ish pins — dead upstream since 2026-07-28, gateway redirects to gpt-oss-120b
|
|
38057
38080
|
"mistral-large": "free/mistral-large-3-675b",
|
|
38058
38081
|
"mistral-large-3-675b": "free/mistral-large-3-675b",
|
|
@@ -38063,74 +38086,124 @@ var init_models = __esm({
|
|
|
38063
38086
|
// gateway's retarget (blockrun's /free-deepseek page points at gpt-oss-120b
|
|
38064
38087
|
// too). Shorthands naming v4-flash itself stay on the real id — the gateway
|
|
38065
38088
|
// redirects them, same treatment as seed-oss/mistral-large pins.
|
|
38066
|
-
"deepseek-free": "free/
|
|
38067
|
-
"deepseek-v4-pro": "free/
|
|
38089
|
+
"deepseek-free": "free/nemotron-3.5-lightning",
|
|
38090
|
+
"deepseek-v4-pro": "free/nemotron-3.5-lightning",
|
|
38068
38091
|
// free shorthand; pro dead upstream (410)
|
|
38069
38092
|
"deepseek-v4-flash": "free/deepseek-v4-flash",
|
|
38070
|
-
"v4-pro": "free/
|
|
38093
|
+
"v4-pro": "free/nemotron-3.5-lightning",
|
|
38071
38094
|
"v4-flash": "free/deepseek-v4-flash",
|
|
38072
|
-
|
|
38073
|
-
//
|
|
38074
|
-
|
|
38095
|
+
// mistral-nemotron died 2026-08-30 and it was the LAST free Mistral anywhere —
|
|
38096
|
+
// blockrun's own /free-mistral page now says so plainly instead of naming one.
|
|
38097
|
+
// Point the generic shorthand at the free default rather than advertise a
|
|
38098
|
+
// Mistral we cannot serve.
|
|
38099
|
+
"mistral-free": "free/nemotron-3.5-lightning",
|
|
38100
|
+
"glm-free": "free/nemotron-3.5-lightning",
|
|
38075
38101
|
// seed-oss-36b (the prior target) EOL'd 2026-08-03
|
|
38076
|
-
|
|
38077
|
-
//
|
|
38102
|
+
// A free Llama exists again: nemotron-super-49b (Llama-3.3-based) hit 410 on
|
|
38103
|
+
// 2026-08-30, and a 12-model sweep of what NVIDIA still serves found Llama 3.2
|
|
38104
|
+
// 11B Vision as the only one that finishes a real completion.
|
|
38105
|
+
"llama-free": "free/llama-3.2-11b-vision",
|
|
38078
38106
|
// qwen3-coder-480b retired 2026-06-14 → seed-oss-36b, which then EOL'd 2026-08-03.
|
|
38079
38107
|
// Follow the gateway's own retarget rather than chaining to a second dead model.
|
|
38080
|
-
"qwen-coder": "free/
|
|
38108
|
+
"qwen-coder": "free/nemotron-3.5-lightning",
|
|
38081
38109
|
// no live free Qwen; follows the free default
|
|
38082
|
-
"qwen-coder-free": "free/
|
|
38083
|
-
"qwen-thinking": "free/
|
|
38110
|
+
"qwen-coder-free": "free/nemotron-3.5-lightning",
|
|
38111
|
+
"qwen-thinking": "free/nemotron-3.5-lightning",
|
|
38084
38112
|
// qwen3-next died 2026-07-17; no live free Qwen left
|
|
38085
38113
|
"qwen3-next": "free/qwen3-next-80b-a3b-instruct",
|
|
38086
38114
|
// explicit-ish pin — gateway redirects
|
|
38087
38115
|
"qwen3-next-80b": "free/qwen3-next-80b-a3b-instruct",
|
|
38088
|
-
"mistral-small": "free/
|
|
38089
|
-
//
|
|
38116
|
+
"mistral-small": "free/nemotron-3.5-lightning",
|
|
38117
|
+
// no free Mistral left upstream (2026-08-30)
|
|
38090
38118
|
// New live free models (2026-06-14 BlockRun free-tier refresh)
|
|
38091
38119
|
// seed-oss pins name the model itself — kept routable, the gateway redirects them.
|
|
38092
38120
|
"seed-oss": "free/seed-oss-36b",
|
|
38093
38121
|
"seed-oss-36b": "free/seed-oss-36b",
|
|
38094
|
-
|
|
38095
|
-
//
|
|
38122
|
+
// A free coder exists again — two of them, both sub-second. north-mini-code is
|
|
38123
|
+
// the faster (607ms median) and 256K ctx against laguna's 131K.
|
|
38124
|
+
"coder-free": "free/north-mini-code",
|
|
38096
38125
|
"mistral-nemotron": "free/mistral-nemotron",
|
|
38097
38126
|
"step-flash": "free/step-3.7-flash",
|
|
38098
38127
|
"step-3.7-flash": "free/step-3.7-flash",
|
|
38099
|
-
|
|
38100
|
-
|
|
38101
|
-
|
|
38102
|
-
"nano-
|
|
38128
|
+
// nemotron-nano-9b-v2 hit 410 on 2026-08-30; the generic shorthands follow
|
|
38129
|
+
// blockrun's redirect to its replacement, while the 9b-naming pins above stay
|
|
38130
|
+
// on the real id (the gateway resolves them).
|
|
38131
|
+
"nemotron-nano-9b": "free/nemotron-3-nano-30b",
|
|
38132
|
+
"nemotron-nano": "free/nemotron-3-nano-30b",
|
|
38133
|
+
// nemotron-nano-12b-v2-vl hit 410 the same day; vision in, vision out — the
|
|
38134
|
+
// target is blockrun's own, and nano-omni is the only vision-capable free
|
|
38135
|
+
// model left.
|
|
38136
|
+
"nemotron-nano-vl": "free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
38137
|
+
"nano-vl": "free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
38103
38138
|
// Vision-capable free models
|
|
38104
38139
|
"nemotron-omni": "free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
38105
38140
|
"nano-omni": "free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
38106
38141
|
"vision-free": "free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
38107
38142
|
// Retired shorthand aliases redirect to live successors. The catch-all target
|
|
38108
38143
|
// moved llama-4-maverick → gpt-oss-120b (2026-07-17) → step-3.7-flash
|
|
38109
|
-
// (2026-08-29
|
|
38110
|
-
nemotron: "free/nemotron-3-
|
|
38144
|
+
// (2026-08-29) → nemotron-3.5-lightning (2026-08-30, blockrun #448).
|
|
38145
|
+
nemotron: "free/nemotron-3.5-lightning",
|
|
38111
38146
|
// strongest live Nemotron
|
|
38112
|
-
"nemotron-ultra": "free/
|
|
38113
|
-
"nemotron-253b": "free/
|
|
38114
|
-
"nemotron-super": "free/
|
|
38115
|
-
"nemotron-49b": "free/
|
|
38116
|
-
"nemotron-120b": "free/
|
|
38117
|
-
devstral: "free/
|
|
38147
|
+
"nemotron-ultra": "free/nemotron-3.5-lightning",
|
|
38148
|
+
"nemotron-253b": "free/nemotron-3.5-lightning",
|
|
38149
|
+
"nemotron-super": "free/nemotron-3.5-lightning",
|
|
38150
|
+
"nemotron-49b": "free/nemotron-3.5-lightning",
|
|
38151
|
+
"nemotron-120b": "free/nemotron-3.5-lightning",
|
|
38152
|
+
devstral: "free/nemotron-3.5-lightning",
|
|
38118
38153
|
// seed-oss-36b EOL'd 2026-08-03
|
|
38119
|
-
"devstral-2": "free/
|
|
38154
|
+
"devstral-2": "free/nemotron-3.5-lightning",
|
|
38120
38155
|
maverick: "free/llama-4-maverick",
|
|
38121
38156
|
// explicit-ish pin — gateway redirects
|
|
38157
|
+
// ── The 2026-08-30 free lineup (blockrun #448) ────────────────────────────
|
|
38158
|
+
// nvidia/* bridges for the four NVIDIA-hosted additions.
|
|
38159
|
+
"nvidia/nemotron-3.5-lightning": "free/nemotron-3.5-lightning",
|
|
38160
|
+
"nvidia/nemotron-3-nano-30b": "free/nemotron-3-nano-30b",
|
|
38161
|
+
"nvidia/nemotron-3-ultra-550b": "free/nemotron-3-ultra-550b",
|
|
38162
|
+
"nvidia/llama-3.2-11b-vision": "free/llama-3.2-11b-vision",
|
|
38163
|
+
// The two non-NVIDIA free models keep the `free/` picker convention; their
|
|
38164
|
+
// real upstream ids are accepted as pins and rewritten in toUpstreamModelId
|
|
38165
|
+
// (see FREE_UPSTREAM_OVERRIDES in proxy.ts).
|
|
38166
|
+
"cohere/north-mini-code": "free/north-mini-code",
|
|
38167
|
+
"poolside/laguna-xs-2.1": "free/laguna-xs-2.1",
|
|
38168
|
+
// Shorthands.
|
|
38169
|
+
lightning: "free/nemotron-3.5-lightning",
|
|
38170
|
+
"nemotron-lightning": "free/nemotron-3.5-lightning",
|
|
38171
|
+
"nemotron-3.5-lightning": "free/nemotron-3.5-lightning",
|
|
38172
|
+
"nano-30b": "free/nemotron-3-nano-30b",
|
|
38173
|
+
"nemotron-nano-30b": "free/nemotron-3-nano-30b",
|
|
38174
|
+
"ultra-550b": "free/nemotron-3-ultra-550b",
|
|
38175
|
+
"nemotron-ultra-550b": "free/nemotron-3-ultra-550b",
|
|
38176
|
+
"llama-vision": "free/llama-3.2-11b-vision",
|
|
38177
|
+
"llama-3.2-vision": "free/llama-3.2-11b-vision",
|
|
38178
|
+
"north-mini": "free/north-mini-code",
|
|
38179
|
+
"north-mini-code": "free/north-mini-code",
|
|
38180
|
+
laguna: "free/laguna-xs-2.1",
|
|
38181
|
+
"laguna-xs": "free/laguna-xs-2.1",
|
|
38122
38182
|
// `free` = the free-tier default. Must equal router-core's ecoTiers.SIMPLE
|
|
38123
38183
|
// primary and the head of proxy.ts FREE_MODELS so `/model free`, the eco
|
|
38124
38184
|
// profile and the budget-cap free fallback all agree on one live model.
|
|
38125
|
-
free: "free/
|
|
38185
|
+
free: "free/nemotron-3.5-lightning",
|
|
38126
38186
|
// MiniMax (minimax → current flagship: M3)
|
|
38127
38187
|
minimax: "minimax/minimax-m3",
|
|
38128
38188
|
"minimax-m3": "minimax/minimax-m3",
|
|
38129
38189
|
"minimax-m2.7": "minimax/minimax-m2.7",
|
|
38130
38190
|
"minimax-m2.5": "minimax/minimax-m2.5",
|
|
38131
38191
|
// Z.AI GLM-5
|
|
38132
|
-
glm
|
|
38133
|
-
//
|
|
38192
|
+
// Bare `glm` PROMOTED 5.2 → 5.3 (2026-08-30). Same rule as `opus` 4.8 → 5: the
|
|
38193
|
+
// cost tradeoff is zero — identical $1.40/$4.40 AND an identical 1M ctx /
|
|
38194
|
+
// 131072 maxOutput envelope, so nothing can bill or truncate differently for a
|
|
38195
|
+
// caller who never typed a version. blockrun's own copy already names glm-5.3
|
|
38196
|
+
// the Z.AI flagship, so leaving `glm` on 5.2 would make the proxy disagree
|
|
38197
|
+
// with the gateway it fronts. `glm-5.2` and every other version pin still
|
|
38198
|
+
// resolve to their own model.
|
|
38199
|
+
glm: "zai/glm-5.3",
|
|
38200
|
+
"glm-5.3": "zai/glm-5.3",
|
|
38201
|
+
"glm-5-3": "zai/glm-5.3",
|
|
38202
|
+
// GLM-5.3 Flash — Z.AI's first natively multimodal GLM-5. Also router-core's
|
|
38203
|
+
// eco MEDIUM and COMPLEX primary.
|
|
38204
|
+
"glm-5.3-flash": "zai/glm-5.3-flash",
|
|
38205
|
+
"glm-5-3-flash": "zai/glm-5.3-flash",
|
|
38206
|
+
"glm-flash": "zai/glm-5.3-flash",
|
|
38134
38207
|
"glm-5.2": "zai/glm-5.2",
|
|
38135
38208
|
"glm-5": "zai/glm-5",
|
|
38136
38209
|
"glm-5.1": "zai/glm-5.1",
|
|
@@ -38192,10 +38265,10 @@ var init_models = __esm({
|
|
|
38192
38265
|
},
|
|
38193
38266
|
{
|
|
38194
38267
|
id: "free",
|
|
38195
|
-
name: "Free \u2192
|
|
38268
|
+
name: "Free \u2192 Nemotron 3.5 Lightning",
|
|
38196
38269
|
inputPrice: 0,
|
|
38197
38270
|
outputPrice: 0,
|
|
38198
|
-
contextWindow:
|
|
38271
|
+
contextWindow: 1e6,
|
|
38199
38272
|
maxOutput: 16384,
|
|
38200
38273
|
reasoning: true
|
|
38201
38274
|
},
|
|
@@ -38236,7 +38309,7 @@ var init_models = __esm({
|
|
|
38236
38309
|
inputPrice: 0.25,
|
|
38237
38310
|
outputPrice: 2,
|
|
38238
38311
|
contextWindow: 2e5,
|
|
38239
|
-
maxOutput:
|
|
38312
|
+
maxOutput: 128e3,
|
|
38240
38313
|
toolCalling: true
|
|
38241
38314
|
},
|
|
38242
38315
|
{
|
|
@@ -38246,7 +38319,7 @@ var init_models = __esm({
|
|
|
38246
38319
|
inputPrice: 0.05,
|
|
38247
38320
|
outputPrice: 0.4,
|
|
38248
38321
|
contextWindow: 128e3,
|
|
38249
|
-
maxOutput:
|
|
38322
|
+
maxOutput: 128e3,
|
|
38250
38323
|
toolCalling: true,
|
|
38251
38324
|
deprecated: true,
|
|
38252
38325
|
fallbackModel: "openai/gpt-5.4-nano"
|
|
@@ -38407,7 +38480,7 @@ var init_models = __esm({
|
|
|
38407
38480
|
version: "5.4",
|
|
38408
38481
|
inputPrice: 2.5,
|
|
38409
38482
|
outputPrice: 15,
|
|
38410
|
-
contextWindow:
|
|
38483
|
+
contextWindow: 105e4,
|
|
38411
38484
|
maxOutput: 128e3,
|
|
38412
38485
|
reasoning: true,
|
|
38413
38486
|
vision: true,
|
|
@@ -38432,7 +38505,7 @@ var init_models = __esm({
|
|
|
38432
38505
|
version: "5.4",
|
|
38433
38506
|
inputPrice: 30,
|
|
38434
38507
|
outputPrice: 180,
|
|
38435
|
-
contextWindow:
|
|
38508
|
+
contextWindow: 105e4,
|
|
38436
38509
|
maxOutput: 128e3,
|
|
38437
38510
|
reasoning: true,
|
|
38438
38511
|
vision: true,
|
|
@@ -38445,7 +38518,7 @@ var init_models = __esm({
|
|
|
38445
38518
|
inputPrice: 0.2,
|
|
38446
38519
|
outputPrice: 1.25,
|
|
38447
38520
|
contextWindow: 105e4,
|
|
38448
|
-
maxOutput:
|
|
38521
|
+
maxOutput: 128e3,
|
|
38449
38522
|
toolCalling: true
|
|
38450
38523
|
},
|
|
38451
38524
|
// OpenAI GPT-5.3 Family
|
|
@@ -38456,7 +38529,7 @@ var init_models = __esm({
|
|
|
38456
38529
|
inputPrice: 1.75,
|
|
38457
38530
|
outputPrice: 14,
|
|
38458
38531
|
contextWindow: 128e3,
|
|
38459
|
-
maxOutput:
|
|
38532
|
+
maxOutput: 128e3,
|
|
38460
38533
|
reasoning: true,
|
|
38461
38534
|
vision: true,
|
|
38462
38535
|
agentic: true,
|
|
@@ -38482,7 +38555,7 @@ var init_models = __esm({
|
|
|
38482
38555
|
inputPrice: 2,
|
|
38483
38556
|
outputPrice: 8,
|
|
38484
38557
|
contextWindow: 128e3,
|
|
38485
|
-
maxOutput:
|
|
38558
|
+
maxOutput: 32768,
|
|
38486
38559
|
vision: true,
|
|
38487
38560
|
toolCalling: true
|
|
38488
38561
|
},
|
|
@@ -38493,7 +38566,7 @@ var init_models = __esm({
|
|
|
38493
38566
|
inputPrice: 0.4,
|
|
38494
38567
|
outputPrice: 1.6,
|
|
38495
38568
|
contextWindow: 128e3,
|
|
38496
|
-
maxOutput:
|
|
38569
|
+
maxOutput: 32768,
|
|
38497
38570
|
toolCalling: true
|
|
38498
38571
|
},
|
|
38499
38572
|
{
|
|
@@ -38503,7 +38576,7 @@ var init_models = __esm({
|
|
|
38503
38576
|
inputPrice: 0.1,
|
|
38504
38577
|
outputPrice: 0.4,
|
|
38505
38578
|
contextWindow: 128e3,
|
|
38506
|
-
maxOutput:
|
|
38579
|
+
maxOutput: 32768,
|
|
38507
38580
|
toolCalling: true
|
|
38508
38581
|
},
|
|
38509
38582
|
{
|
|
@@ -38569,7 +38642,7 @@ var init_models = __esm({
|
|
|
38569
38642
|
inputPrice: 1.1,
|
|
38570
38643
|
outputPrice: 4.4,
|
|
38571
38644
|
contextWindow: 128e3,
|
|
38572
|
-
maxOutput:
|
|
38645
|
+
maxOutput: 1e5,
|
|
38573
38646
|
reasoning: true,
|
|
38574
38647
|
toolCalling: true
|
|
38575
38648
|
},
|
|
@@ -38580,7 +38653,7 @@ var init_models = __esm({
|
|
|
38580
38653
|
inputPrice: 1.1,
|
|
38581
38654
|
outputPrice: 4.4,
|
|
38582
38655
|
contextWindow: 128e3,
|
|
38583
|
-
maxOutput:
|
|
38656
|
+
maxOutput: 1e5,
|
|
38584
38657
|
reasoning: true,
|
|
38585
38658
|
toolCalling: true
|
|
38586
38659
|
},
|
|
@@ -38593,7 +38666,7 @@ var init_models = __esm({
|
|
|
38593
38666
|
inputPrice: 1,
|
|
38594
38667
|
outputPrice: 5,
|
|
38595
38668
|
contextWindow: 2e5,
|
|
38596
|
-
maxOutput:
|
|
38669
|
+
maxOutput: 64e3,
|
|
38597
38670
|
vision: true,
|
|
38598
38671
|
agentic: true,
|
|
38599
38672
|
toolCalling: true
|
|
@@ -38617,8 +38690,8 @@ var init_models = __esm({
|
|
|
38617
38690
|
version: "4.6",
|
|
38618
38691
|
inputPrice: 3,
|
|
38619
38692
|
outputPrice: 15,
|
|
38620
|
-
contextWindow:
|
|
38621
|
-
maxOutput:
|
|
38693
|
+
contextWindow: 1e6,
|
|
38694
|
+
maxOutput: 128e3,
|
|
38622
38695
|
reasoning: true,
|
|
38623
38696
|
vision: true,
|
|
38624
38697
|
agentic: true,
|
|
@@ -38648,7 +38721,7 @@ var init_models = __esm({
|
|
|
38648
38721
|
inputPrice: 5,
|
|
38649
38722
|
outputPrice: 25,
|
|
38650
38723
|
contextWindow: 2e5,
|
|
38651
|
-
maxOutput:
|
|
38724
|
+
maxOutput: 64e3,
|
|
38652
38725
|
reasoning: true,
|
|
38653
38726
|
vision: true,
|
|
38654
38727
|
agentic: true,
|
|
@@ -38732,7 +38805,7 @@ var init_models = __esm({
|
|
|
38732
38805
|
version: "3.1",
|
|
38733
38806
|
inputPrice: 2,
|
|
38734
38807
|
outputPrice: 12,
|
|
38735
|
-
contextWindow:
|
|
38808
|
+
contextWindow: 1048576,
|
|
38736
38809
|
maxOutput: 65536,
|
|
38737
38810
|
reasoning: true,
|
|
38738
38811
|
vision: true,
|
|
@@ -38744,7 +38817,7 @@ var init_models = __esm({
|
|
|
38744
38817
|
version: "3.0",
|
|
38745
38818
|
inputPrice: 2,
|
|
38746
38819
|
outputPrice: 12,
|
|
38747
|
-
contextWindow:
|
|
38820
|
+
contextWindow: 1048576,
|
|
38748
38821
|
maxOutput: 65536,
|
|
38749
38822
|
reasoning: true,
|
|
38750
38823
|
vision: true,
|
|
@@ -38796,7 +38869,7 @@ var init_models = __esm({
|
|
|
38796
38869
|
version: "3.0",
|
|
38797
38870
|
inputPrice: 0.5,
|
|
38798
38871
|
outputPrice: 3,
|
|
38799
|
-
contextWindow:
|
|
38872
|
+
contextWindow: 1048576,
|
|
38800
38873
|
maxOutput: 65536,
|
|
38801
38874
|
reasoning: true,
|
|
38802
38875
|
vision: true
|
|
@@ -38807,7 +38880,7 @@ var init_models = __esm({
|
|
|
38807
38880
|
version: "2.5",
|
|
38808
38881
|
inputPrice: 1.25,
|
|
38809
38882
|
outputPrice: 10,
|
|
38810
|
-
contextWindow:
|
|
38883
|
+
contextWindow: 1048576,
|
|
38811
38884
|
maxOutput: 65536,
|
|
38812
38885
|
reasoning: true,
|
|
38813
38886
|
vision: true,
|
|
@@ -38819,7 +38892,7 @@ var init_models = __esm({
|
|
|
38819
38892
|
version: "2.5",
|
|
38820
38893
|
inputPrice: 0.3,
|
|
38821
38894
|
outputPrice: 2.5,
|
|
38822
|
-
contextWindow:
|
|
38895
|
+
contextWindow: 1048576,
|
|
38823
38896
|
maxOutput: 65536,
|
|
38824
38897
|
vision: true,
|
|
38825
38898
|
toolCalling: true
|
|
@@ -38830,7 +38903,7 @@ var init_models = __esm({
|
|
|
38830
38903
|
version: "2.5",
|
|
38831
38904
|
inputPrice: 0.1,
|
|
38832
38905
|
outputPrice: 0.4,
|
|
38833
|
-
contextWindow:
|
|
38906
|
+
contextWindow: 1048576,
|
|
38834
38907
|
maxOutput: 65536,
|
|
38835
38908
|
toolCalling: true
|
|
38836
38909
|
},
|
|
@@ -38840,8 +38913,8 @@ var init_models = __esm({
|
|
|
38840
38913
|
version: "3.1",
|
|
38841
38914
|
inputPrice: 0.25,
|
|
38842
38915
|
outputPrice: 1.5,
|
|
38843
|
-
contextWindow:
|
|
38844
|
-
maxOutput:
|
|
38916
|
+
contextWindow: 1048576,
|
|
38917
|
+
maxOutput: 65536,
|
|
38845
38918
|
toolCalling: true
|
|
38846
38919
|
},
|
|
38847
38920
|
// DeepSeek — V4 family (2026-04-24). The legacy deepseek-chat/reasoner
|
|
@@ -38854,8 +38927,8 @@ var init_models = __esm({
|
|
|
38854
38927
|
version: "4-flash",
|
|
38855
38928
|
inputPrice: 0.14,
|
|
38856
38929
|
outputPrice: 0.28,
|
|
38857
|
-
contextWindow:
|
|
38858
|
-
maxOutput:
|
|
38930
|
+
contextWindow: 1048576,
|
|
38931
|
+
maxOutput: 65536,
|
|
38859
38932
|
toolCalling: true
|
|
38860
38933
|
},
|
|
38861
38934
|
{
|
|
@@ -38864,8 +38937,8 @@ var init_models = __esm({
|
|
|
38864
38937
|
version: "4-flash",
|
|
38865
38938
|
inputPrice: 0.14,
|
|
38866
38939
|
outputPrice: 0.28,
|
|
38867
|
-
contextWindow:
|
|
38868
|
-
maxOutput:
|
|
38940
|
+
contextWindow: 1048576,
|
|
38941
|
+
maxOutput: 65536,
|
|
38869
38942
|
reasoning: true,
|
|
38870
38943
|
toolCalling: true
|
|
38871
38944
|
},
|
|
@@ -38991,7 +39064,7 @@ var init_models = __esm({
|
|
|
38991
39064
|
inputPrice: 0.6,
|
|
38992
39065
|
outputPrice: 3,
|
|
38993
39066
|
contextWindow: 262144,
|
|
38994
|
-
maxOutput:
|
|
39067
|
+
maxOutput: 65536,
|
|
38995
39068
|
reasoning: true,
|
|
38996
39069
|
vision: true,
|
|
38997
39070
|
agentic: true,
|
|
@@ -39004,7 +39077,7 @@ var init_models = __esm({
|
|
|
39004
39077
|
inputPrice: 0.6,
|
|
39005
39078
|
outputPrice: 3,
|
|
39006
39079
|
contextWindow: 262144,
|
|
39007
|
-
maxOutput:
|
|
39080
|
+
maxOutput: 16384,
|
|
39008
39081
|
reasoning: true,
|
|
39009
39082
|
vision: true,
|
|
39010
39083
|
agentic: true,
|
|
@@ -39042,7 +39115,7 @@ var init_models = __esm({
|
|
|
39042
39115
|
version: "4",
|
|
39043
39116
|
inputPrice: 0.2,
|
|
39044
39117
|
outputPrice: 0.5,
|
|
39045
|
-
contextWindow:
|
|
39118
|
+
contextWindow: 2e6,
|
|
39046
39119
|
maxOutput: 16384,
|
|
39047
39120
|
reasoning: true,
|
|
39048
39121
|
toolCalling: true
|
|
@@ -39053,7 +39126,7 @@ var init_models = __esm({
|
|
|
39053
39126
|
version: "4",
|
|
39054
39127
|
inputPrice: 0.2,
|
|
39055
39128
|
outputPrice: 0.5,
|
|
39056
|
-
contextWindow:
|
|
39129
|
+
contextWindow: 2e6,
|
|
39057
39130
|
maxOutput: 16384,
|
|
39058
39131
|
toolCalling: true
|
|
39059
39132
|
},
|
|
@@ -39063,7 +39136,7 @@ var init_models = __esm({
|
|
|
39063
39136
|
version: "4.1",
|
|
39064
39137
|
inputPrice: 0.2,
|
|
39065
39138
|
outputPrice: 0.5,
|
|
39066
|
-
contextWindow:
|
|
39139
|
+
contextWindow: 2e6,
|
|
39067
39140
|
maxOutput: 16384,
|
|
39068
39141
|
reasoning: true,
|
|
39069
39142
|
toolCalling: true
|
|
@@ -39074,7 +39147,7 @@ var init_models = __esm({
|
|
|
39074
39147
|
version: "4.1",
|
|
39075
39148
|
inputPrice: 0.2,
|
|
39076
39149
|
outputPrice: 0.5,
|
|
39077
|
-
contextWindow:
|
|
39150
|
+
contextWindow: 2e6,
|
|
39078
39151
|
maxOutput: 16384,
|
|
39079
39152
|
toolCalling: true
|
|
39080
39153
|
},
|
|
@@ -39086,7 +39159,7 @@ var init_models = __esm({
|
|
|
39086
39159
|
version: "4-0709",
|
|
39087
39160
|
inputPrice: 3,
|
|
39088
39161
|
outputPrice: 15,
|
|
39089
|
-
contextWindow:
|
|
39162
|
+
contextWindow: 256e3,
|
|
39090
39163
|
maxOutput: 16384,
|
|
39091
39164
|
reasoning: true,
|
|
39092
39165
|
toolCalling: true
|
|
@@ -39097,7 +39170,7 @@ var init_models = __esm({
|
|
|
39097
39170
|
version: "2",
|
|
39098
39171
|
inputPrice: 2,
|
|
39099
39172
|
outputPrice: 10,
|
|
39100
|
-
contextWindow:
|
|
39173
|
+
contextWindow: 32768,
|
|
39101
39174
|
maxOutput: 16384,
|
|
39102
39175
|
vision: true,
|
|
39103
39176
|
toolCalling: true
|
|
@@ -39402,7 +39475,13 @@ var init_models = __esm({
|
|
|
39402
39475
|
maxOutput: 16384
|
|
39403
39476
|
},
|
|
39404
39477
|
{
|
|
39405
|
-
// Mistral × NVIDIA hybrid
|
|
39478
|
+
// Mistral × NVIDIA hybrid, 131K context. DEAD 2026-08-30 — the QUIET kind:
|
|
39479
|
+
// NVIDIA still LISTS it but a completion returns zero bytes after >150s on
|
|
39480
|
+
// both of blockrun's probe passes (blockrun #448, the #391 shape). Upstream
|
|
39481
|
+
// hid it and redirects callers to a live workhorse. Entry kept so explicit
|
|
39482
|
+
// pins stay routable; off the picker and the FREE_MODELS cascade.
|
|
39483
|
+
// There is no free Mistral left on NVIDIA — do not point a generic
|
|
39484
|
+
// "a free mistral" shorthand at one.
|
|
39406
39485
|
id: "free/mistral-nemotron",
|
|
39407
39486
|
name: "[Free] Mistral Nemotron",
|
|
39408
39487
|
version: "nemotron",
|
|
@@ -39412,7 +39491,13 @@ var init_models = __esm({
|
|
|
39412
39491
|
maxOutput: 16384
|
|
39413
39492
|
},
|
|
39414
39493
|
{
|
|
39415
|
-
// StepFun Step 3.7 Flash: reasoning-focused, 131K context.
|
|
39494
|
+
// StepFun Step 3.7 Flash: reasoning-focused, 131K context. EOL'd 2026-08-30
|
|
39495
|
+
// — NVIDIA published 410 Gone on both of blockrun's probe passes (#448), in
|
|
39496
|
+
// the same sweep that took nemotron-nano-9b-v2, nemotron-nano-12b-v2-vl and
|
|
39497
|
+
// (hidden) nemotron-super-49b. It had been ClawRouter's free default since
|
|
39498
|
+
// 2026-08-29; the gateway redirects it to nemotron-3.5-lightning, which is
|
|
39499
|
+
// exactly why nothing looked broken. Entry kept so explicit pins stay
|
|
39500
|
+
// routable; off the picker and the FREE_MODELS cascade.
|
|
39416
39501
|
id: "free/step-3.7-flash",
|
|
39417
39502
|
name: "[Free] StepFun Step 3.7 Flash",
|
|
39418
39503
|
version: "3.7-flash",
|
|
@@ -39424,6 +39509,8 @@ var init_models = __esm({
|
|
|
39424
39509
|
},
|
|
39425
39510
|
{
|
|
39426
39511
|
// NVIDIA Nemotron Nano 9B v2: fast lightweight generalist, 131K context.
|
|
39512
|
+
// EOL'd 2026-08-30 (410 Gone, same sweep). Gateway redirects it to
|
|
39513
|
+
// nemotron-3-nano-30b. Entry kept for pins; off the picker and the cascade.
|
|
39427
39514
|
id: "free/nemotron-nano-9b-v2",
|
|
39428
39515
|
name: "[Free] Nemotron Nano 9B v2",
|
|
39429
39516
|
version: "nano-9b-v2",
|
|
@@ -39435,6 +39522,9 @@ var init_models = __esm({
|
|
|
39435
39522
|
},
|
|
39436
39523
|
{
|
|
39437
39524
|
// NVIDIA Nemotron Nano 12B v2 VL: vision-language (text + image), 131K context.
|
|
39525
|
+
// EOL'd 2026-08-30 (410 Gone, same sweep). Gateway redirects it to
|
|
39526
|
+
// nemotron-3-nano-omni, the only vision-capable free model left. Entry kept
|
|
39527
|
+
// for pins; off the picker and the cascade.
|
|
39438
39528
|
id: "free/nemotron-nano-12b-v2-vl",
|
|
39439
39529
|
name: "[Free] Nemotron Nano 12B v2 VL",
|
|
39440
39530
|
version: "nano-12b-v2-vl",
|
|
@@ -39445,9 +39535,155 @@ var init_models = __esm({
|
|
|
39445
39535
|
reasoning: true,
|
|
39446
39536
|
vision: true
|
|
39447
39537
|
},
|
|
39538
|
+
// ── 2026-08-30 free-tier rebuild (blockrun #448) ─────────────────────────
|
|
39539
|
+
// NVIDIA retired FOUR of the five VISIBLE free models in one sweep. blockrun
|
|
39540
|
+
// replaced them and moved two survivors onto OpenRouter's $0 ":free" pool,
|
|
39541
|
+
// taking the visible free set from 5 to 7 and spanning three hosts for the
|
|
39542
|
+
// first time (NVIDIA, OpenRouter, and two non-NVIDIA makers).
|
|
39543
|
+
//
|
|
39544
|
+
// All seven live free models were tool-probed through the gateway on
|
|
39545
|
+
// 2026-08-30 and every one returned a structured `tool_calls` array with
|
|
39546
|
+
// valid JSON args and finish_reason: "tool_calls" (nemotron-3-nano-30b looked
|
|
39547
|
+
// like a textual leak at max_tokens:120 — that was truncation; at 300 it is
|
|
39548
|
+
// structured). The evidence is recorded here on purpose, but `toolCalling` is
|
|
39549
|
+
// deliberately NOT set: no free entry has ever carried it, filterByToolCalling
|
|
39550
|
+
// keeps the free tier out of tool-bearing requests, and the budget pre-check
|
|
39551
|
+
// at proxy.ts:5217 is written on the same assumption. Flipping the tier into
|
|
39552
|
+
// agentic eligibility is its own change with its own evidence bar.
|
|
39553
|
+
{
|
|
39554
|
+
// Nemotron 3.5 Lightning 30B-A3B — the new free default. blockrun's own
|
|
39555
|
+
// redirect target for the retired step-3.7-flash, so following it keeps the
|
|
39556
|
+
// proxy and the gateway naming the same model. Served from OpenRouter's $0
|
|
39557
|
+
// pool (4.9s median vs 16.3s direct) which also publishes a 1M window
|
|
39558
|
+
// against the 131K the NVIDIA NIM path gives; blockrun carries a hidden
|
|
39559
|
+
// "-nim" twin as its fallback. Probed 1.3s with tools.
|
|
39560
|
+
id: "free/nemotron-3.5-lightning",
|
|
39561
|
+
name: "[Free] Nemotron 3.5 Lightning",
|
|
39562
|
+
version: "3.5-lightning",
|
|
39563
|
+
inputPrice: 0,
|
|
39564
|
+
outputPrice: 0,
|
|
39565
|
+
contextWindow: 1e6,
|
|
39566
|
+
maxOutput: 16384,
|
|
39567
|
+
reasoning: true
|
|
39568
|
+
},
|
|
39569
|
+
{
|
|
39570
|
+
// Nemotron 3 Nano 30B-A3B — the fastest free model in the catalog
|
|
39571
|
+
// (~121 tok/s on a realistic workload, not a 16-token ping). Returns
|
|
39572
|
+
// reasoning_content. Also the tertiary rung of blockrun's own free cascade.
|
|
39573
|
+
id: "free/nemotron-3-nano-30b",
|
|
39574
|
+
name: "[Free] Nemotron 3 Nano 30B",
|
|
39575
|
+
version: "3-nano-30b",
|
|
39576
|
+
inputPrice: 0,
|
|
39577
|
+
outputPrice: 0,
|
|
39578
|
+
contextWindow: 131072,
|
|
39579
|
+
maxOutput: 16384,
|
|
39580
|
+
reasoning: true
|
|
39581
|
+
},
|
|
39582
|
+
{
|
|
39583
|
+
// Nemotron 3 Ultra 550B-A55B — the largest free model ever listed, 1M ctx,
|
|
39584
|
+
// reachable ONLY through OpenRouter's $0 pool (build.nvidia.com answers 503).
|
|
39585
|
+
// Deliberately LOW in the cascade: 16.8s on the tools probe, and blockrun
|
|
39586
|
+
// measured 3 of 15 calls coming back as an HTTP 200 carrying an upstream
|
|
39587
|
+
// 502/503 error object instead of choices.
|
|
39588
|
+
id: "free/nemotron-3-ultra-550b",
|
|
39589
|
+
name: "[Free] Nemotron 3 Ultra 550B",
|
|
39590
|
+
version: "3-ultra-550b",
|
|
39591
|
+
inputPrice: 0,
|
|
39592
|
+
outputPrice: 0,
|
|
39593
|
+
contextWindow: 1e6,
|
|
39594
|
+
maxOutput: 16384,
|
|
39595
|
+
reasoning: true
|
|
39596
|
+
},
|
|
39597
|
+
{
|
|
39598
|
+
// Meta Llama 3.2 11B Vision — restores a free Llama after nemotron-super-49b
|
|
39599
|
+
// (Llama-3.3-based) hit NVIDIA's 410 EOL. A 12-model sweep found exactly two
|
|
39600
|
+
// survivors and only the 11B finishes a real completion. Older than the rest
|
|
39601
|
+
// of the tier and deliberately so: it is a real Llama that actually answers.
|
|
39602
|
+
// Slowest in the tier (~18 tok/s) — last rung of the cascade.
|
|
39603
|
+
id: "free/llama-3.2-11b-vision",
|
|
39604
|
+
name: "[Free] Llama 3.2 11B Vision",
|
|
39605
|
+
version: "3.2-11b-vision",
|
|
39606
|
+
inputPrice: 0,
|
|
39607
|
+
outputPrice: 0,
|
|
39608
|
+
contextWindow: 128e3,
|
|
39609
|
+
maxOutput: 16384,
|
|
39610
|
+
vision: true
|
|
39611
|
+
},
|
|
39612
|
+
{
|
|
39613
|
+
// Cohere North Mini Code, on OpenRouter's $0 pool — 607ms median, the
|
|
39614
|
+
// fastest thing in the tier. Emits reasoning_content (content is clean once
|
|
39615
|
+
// the budget is large enough to finish, verified live).
|
|
39616
|
+
// NOTE: NOT an nvidia/* id upstream — see FREE_UPSTREAM_OVERRIDES in proxy.ts.
|
|
39617
|
+
id: "free/north-mini-code",
|
|
39618
|
+
name: "[Free] Cohere North Mini Code",
|
|
39619
|
+
version: "north-mini-code",
|
|
39620
|
+
inputPrice: 0,
|
|
39621
|
+
outputPrice: 0,
|
|
39622
|
+
contextWindow: 256e3,
|
|
39623
|
+
maxOutput: 16384,
|
|
39624
|
+
reasoning: true
|
|
39625
|
+
},
|
|
39626
|
+
{
|
|
39627
|
+
// Poolside Laguna XS 2.1 on OUR NVIDIA key (~161 tok/s). Deliberately not
|
|
39628
|
+
// the OpenRouter twin, which 429s on every attempt — so this rung and
|
|
39629
|
+
// north-mini-code sit on DIFFERENT capacity pools, which is why they are
|
|
39630
|
+
// adjacent in the cascade.
|
|
39631
|
+
// NOTE: NOT an nvidia/* id upstream — see FREE_UPSTREAM_OVERRIDES in proxy.ts.
|
|
39632
|
+
id: "free/laguna-xs-2.1",
|
|
39633
|
+
name: "[Free] Poolside Laguna XS 2.1",
|
|
39634
|
+
version: "xs-2.1",
|
|
39635
|
+
inputPrice: 0,
|
|
39636
|
+
outputPrice: 0,
|
|
39637
|
+
contextWindow: 131072,
|
|
39638
|
+
maxOutput: 16384
|
|
39639
|
+
},
|
|
39448
39640
|
// Z.AI GLM-5 Models
|
|
39449
39641
|
{
|
|
39450
|
-
//
|
|
39642
|
+
// Z.AI's flagship, live-probed by blockrun 2026-08-19 against api.z.ai
|
|
39643
|
+
// (real completion in 2s, content alongside reasoning tokens). $1.40/$4.40,
|
|
39644
|
+
// cached input $0.26, off the international USD price list.
|
|
39645
|
+
// maxOutput is 131072, NOT the 1M context: that is the hard ceiling the API
|
|
39646
|
+
// enforces (error 1210 above it), the same on every GLM-5 SKU.
|
|
39647
|
+
// Thinking is ALWAYS ON here and cannot be disabled.
|
|
39648
|
+
id: "zai/glm-5.3",
|
|
39649
|
+
name: "GLM-5.3",
|
|
39650
|
+
version: "5.3",
|
|
39651
|
+
inputPrice: 1.4,
|
|
39652
|
+
outputPrice: 4.4,
|
|
39653
|
+
contextWindow: 1e6,
|
|
39654
|
+
maxOutput: 131072,
|
|
39655
|
+
reasoning: true,
|
|
39656
|
+
toolCalling: true
|
|
39657
|
+
},
|
|
39658
|
+
{
|
|
39659
|
+
// Z.AI's first natively multimodal GLM-5 — 320B/18B MoE. blockrun probed
|
|
39660
|
+
// text, vision (base64 data URL → correct answer), tools
|
|
39661
|
+
// (finish_reason=tool_calls with well-formed arguments) and streaming live
|
|
39662
|
+
// on 2026-08-27 before listing it.
|
|
39663
|
+
//
|
|
39664
|
+
// MUST be in this catalog, not just router-core's: it is router-core's eco
|
|
39665
|
+
// MEDIUM and COMPLEX primary, and estimateAmount() returns undefined for an
|
|
39666
|
+
// id we do not carry — which makes the request skip the maxCostPerRun filter
|
|
39667
|
+
// AND never accumulate into session cost. An uncatalogued routing target is
|
|
39668
|
+
// a cost-cap hole, not a logging gap.
|
|
39669
|
+
//
|
|
39670
|
+
// Price is the LIST rate. Z.AI is running a 50% launch promo ($0.075/$0.25)
|
|
39671
|
+
// that ENDS 2026-09-09; listing the promo rate would put us under COGS the
|
|
39672
|
+
// morning it lapses. Thinking is always on, as on glm-5.3.
|
|
39673
|
+
id: "zai/glm-5.3-flash",
|
|
39674
|
+
name: "GLM-5.3 Flash",
|
|
39675
|
+
version: "5.3-flash",
|
|
39676
|
+
inputPrice: 0.15,
|
|
39677
|
+
outputPrice: 0.5,
|
|
39678
|
+
contextWindow: 1e6,
|
|
39679
|
+
maxOutput: 131072,
|
|
39680
|
+
reasoning: true,
|
|
39681
|
+
vision: true,
|
|
39682
|
+
toolCalling: true
|
|
39683
|
+
},
|
|
39684
|
+
{
|
|
39685
|
+
// Launched 2026-06-16. Was Z.AI's flagship until glm-5.3 (above) took the
|
|
39686
|
+
// slot on 2026-08-19. 1M-token context,
|
|
39451
39687
|
// beats GPT-5.5 on long-horizon coding at a fraction of the cost.
|
|
39452
39688
|
// Paid per-token at $1.40/$4.40 (same as glm-5.1, cached $0.26).
|
|
39453
39689
|
id: "zai/glm-5.2",
|
|
@@ -39456,7 +39692,7 @@ var init_models = __esm({
|
|
|
39456
39692
|
inputPrice: 1.4,
|
|
39457
39693
|
outputPrice: 4.4,
|
|
39458
39694
|
contextWindow: 1e6,
|
|
39459
|
-
maxOutput:
|
|
39695
|
+
maxOutput: 131072,
|
|
39460
39696
|
reasoning: true,
|
|
39461
39697
|
toolCalling: true
|
|
39462
39698
|
},
|
|
@@ -89694,6 +89930,8 @@ function pickFreeModel(excludeList) {
|
|
|
89694
89930
|
return void 0;
|
|
89695
89931
|
}
|
|
89696
89932
|
function toUpstreamModelId(modelId) {
|
|
89933
|
+
const override = FREE_UPSTREAM_OVERRIDES[modelId];
|
|
89934
|
+
if (override) return override;
|
|
89697
89935
|
if (modelId.startsWith("free/")) {
|
|
89698
89936
|
return "nvidia/" + modelId.slice("free/".length);
|
|
89699
89937
|
}
|
|
@@ -93928,7 +94166,7 @@ data: [DONE]
|
|
|
93928
94166
|
});
|
|
93929
94167
|
}
|
|
93930
94168
|
}
|
|
93931
|
-
var paymentStore, BLOCKRUN_API, BLOCKRUN_SOLANA_API, IMAGE_DIR, AUDIO_DIR, VIDEO_DIR, AUTO_MODEL, ROUTING_PROFILES, FREE_MODELS, FREE_MODEL, MAX_MESSAGES, CONTEXT_LIMIT_KB, HEARTBEAT_INTERVAL_MS, BALANCE_CHECK_TIMEOUT_MS, DEFAULT_REQUEST_TIMEOUT_MS, PER_MODEL_TIMEOUT_MS, REASONING_MODEL_TIMEOUT_MS, REASONING_MODEL_IDS, MAX_FALLBACK_ATTEMPTS, HEALTH_CHECK_TIMEOUT_MS, RATE_LIMIT_COOLDOWN_MS, OVERLOAD_COOLDOWN_MS, PORT_RETRY_ATTEMPTS, PORT_RETRY_DELAY_MS, MODEL_BODY_READ_TIMEOUT_MS, ERROR_BODY_READ_TIMEOUT_MS, ClientDisconnectedError, rateLimitedModels, overloadedModels, perProviderErrors, BALANCE_CHECK_BUFFER, BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP, PROVIDER_ERROR_PATTERNS, DEGRADED_RESPONSE_PATTERNS, DEGRADED_LOOP_PATTERNS, VALID_ROLES, ROLE_MAPPINGS, VALID_TOOL_ID_PATTERN, KIMI_BLOCK_RE, KIMI_TOKEN_RE, THINKING_TAG_RE, THINKING_BLOCK_RE, BLOCKRUN_MODEL_BY_ID, IMAGE_PRICING, IMAGE_MODEL_IDS, IMAGE_MODEL_SIZES, IMAGE_MODEL_ALIASES, VIDEO_PRICING, PHONE_PRICING;
|
|
94169
|
+
var paymentStore, BLOCKRUN_API, BLOCKRUN_SOLANA_API, IMAGE_DIR, AUDIO_DIR, VIDEO_DIR, AUTO_MODEL, ROUTING_PROFILES, FREE_MODELS, FREE_MODEL, FREE_UPSTREAM_OVERRIDES, MAX_MESSAGES, CONTEXT_LIMIT_KB, HEARTBEAT_INTERVAL_MS, BALANCE_CHECK_TIMEOUT_MS, DEFAULT_REQUEST_TIMEOUT_MS, PER_MODEL_TIMEOUT_MS, REASONING_MODEL_TIMEOUT_MS, REASONING_MODEL_IDS, MAX_FALLBACK_ATTEMPTS, HEALTH_CHECK_TIMEOUT_MS, RATE_LIMIT_COOLDOWN_MS, OVERLOAD_COOLDOWN_MS, PORT_RETRY_ATTEMPTS, PORT_RETRY_DELAY_MS, MODEL_BODY_READ_TIMEOUT_MS, ERROR_BODY_READ_TIMEOUT_MS, ClientDisconnectedError, rateLimitedModels, overloadedModels, perProviderErrors, BALANCE_CHECK_BUFFER, BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP, PROVIDER_ERROR_PATTERNS, DEGRADED_RESPONSE_PATTERNS, DEGRADED_LOOP_PATTERNS, VALID_ROLES, ROLE_MAPPINGS, VALID_TOOL_ID_PATTERN, KIMI_BLOCK_RE, KIMI_TOKEN_RE, THINKING_TAG_RE, THINKING_BLOCK_RE, BLOCKRUN_MODEL_BY_ID, IMAGE_PRICING, IMAGE_MODEL_IDS, IMAGE_MODEL_SIZES, IMAGE_MODEL_ALIASES, VIDEO_PRICING, PHONE_PRICING;
|
|
93932
94170
|
var init_proxy = __esm({
|
|
93933
94171
|
"src/proxy.ts"() {
|
|
93934
94172
|
"use strict";
|
|
@@ -93979,18 +94217,26 @@ var init_proxy = __esm({
|
|
|
93979
94217
|
"premium"
|
|
93980
94218
|
]);
|
|
93981
94219
|
FREE_MODELS = /* @__PURE__ */ new Set([
|
|
93982
|
-
"free/
|
|
93983
|
-
//
|
|
93984
|
-
"free/nemotron-nano-
|
|
93985
|
-
//
|
|
93986
|
-
"free/
|
|
93987
|
-
//
|
|
94220
|
+
"free/nemotron-3.5-lightning",
|
|
94221
|
+
// free-tier default — 1M ctx, thinking mode
|
|
94222
|
+
"free/nemotron-3-nano-30b",
|
|
94223
|
+
// fastest free model (~121 tok/s)
|
|
94224
|
+
"free/laguna-xs-2.1",
|
|
94225
|
+
// coding, ~161 tok/s — on our NVIDIA key
|
|
94226
|
+
"free/north-mini-code",
|
|
94227
|
+
// coding, 607ms median — OpenRouter $0 pool
|
|
93988
94228
|
"free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
93989
94229
|
// vision (text/image/video/audio)
|
|
93990
|
-
"free/nemotron-
|
|
93991
|
-
//
|
|
94230
|
+
"free/nemotron-3-ultra-550b",
|
|
94231
|
+
// largest free model, 1M ctx — but slow + flaky
|
|
94232
|
+
"free/llama-3.2-11b-vision"
|
|
94233
|
+
// only free Llama left; slowest, so last
|
|
93992
94234
|
]);
|
|
93993
|
-
FREE_MODEL = "free/
|
|
94235
|
+
FREE_MODEL = "free/nemotron-3.5-lightning";
|
|
94236
|
+
FREE_UPSTREAM_OVERRIDES = {
|
|
94237
|
+
"free/north-mini-code": "cohere/north-mini-code",
|
|
94238
|
+
"free/laguna-xs-2.1": "poolside/laguna-xs-2.1"
|
|
94239
|
+
};
|
|
93994
94240
|
MAX_MESSAGES = 200;
|
|
93995
94241
|
CONTEXT_LIMIT_KB = 5120;
|
|
93996
94242
|
HEARTBEAT_INTERVAL_MS = 2e3;
|