Skip to content

Commit 92e889b

Browse files
committed
feat: expand model catalog — 50+ models, updated routing & pricing
- Add 25+ model shortcuts (codex, nano, o3, o4, grok-4, flash, r1, devstral, etc.) - Complete pricing table for all supported models across 8 providers - Update smart router cost table and eco tier fallbacks - Switch default free model from gpt-oss-120b to nemotron-ultra-253b - Bump to v0.9.3
1 parent b74a7f4 commit 92e889b

File tree

4 files changed

+140
-41
lines changed

4 files changed

+140
-41
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@blockrun/cc",
3-
"version": "0.9.2",
3+
"version": "0.9.3",
44
"description": "Run Claude Code with any model — no rate limits, no account locks, no phone verification. Pay per use with USDC.",
55
"type": "module",
66
"bin": {

src/proxy/fallback.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export const DEFAULT_FALLBACK_CONFIG: FallbackConfig = {
1919
'blockrun/auto', // Smart routing (default)
2020
'blockrun/eco', // Cheapest capable model
2121
'deepseek/deepseek-chat', // Direct fallback
22-
'nvidia/gpt-oss-120b', // Free model as ultimate fallback
22+
'nvidia/nemotron-ultra-253b', // Free model as ultimate fallback
2323
],
2424
retryOn: [429, 500, 502, 503, 504, 529],
2525
maxRetries: 5,

src/proxy/server.ts

Lines changed: 93 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,56 @@ let lastOutputTokens = 0;
7373

7474
// Model shortcuts for quick switching
7575
const MODEL_SHORTCUTS: Record<string, string> = {
76+
// Routing profiles
7677
auto: 'blockrun/auto',
7778
smart: 'blockrun/auto',
7879
eco: 'blockrun/eco',
7980
premium: 'blockrun/premium',
80-
gpt: 'openai/gpt-5.4',
81-
gpt5: 'openai/gpt-5.4',
82-
'gpt-5': 'openai/gpt-5.4',
83-
'gpt-5.4': 'openai/gpt-5.4',
81+
// Anthropic
8482
sonnet: 'anthropic/claude-sonnet-4.6',
8583
claude: 'anthropic/claude-sonnet-4.6',
8684
opus: 'anthropic/claude-opus-4.6',
8785
haiku: 'anthropic/claude-haiku-4.5',
88-
deepseek: 'deepseek/deepseek-chat',
86+
// OpenAI
87+
gpt: 'openai/gpt-5.4',
88+
gpt5: 'openai/gpt-5.4',
89+
'gpt-5': 'openai/gpt-5.4',
90+
'gpt-5.4': 'openai/gpt-5.4',
91+
'gpt-5.4-pro': 'openai/gpt-5.4-pro',
92+
'gpt-5.3': 'openai/gpt-5.3',
93+
'gpt-5.2': 'openai/gpt-5.2',
94+
'gpt-5.2-pro': 'openai/gpt-5.2-pro',
95+
'gpt-4.1': 'openai/gpt-4.1',
96+
codex: 'openai/gpt-5.3-codex',
97+
nano: 'openai/gpt-5-nano',
98+
mini: 'openai/gpt-5-mini',
99+
o3: 'openai/o3',
100+
o4: 'openai/o4-mini',
101+
'o4-mini': 'openai/o4-mini',
102+
o1: 'openai/o1',
103+
// Google
89104
gemini: 'google/gemini-2.5-pro',
105+
flash: 'google/gemini-2.5-flash',
106+
'gemini-3': 'google/gemini-3.1-pro',
107+
// xAI
90108
grok: 'xai/grok-3',
91-
free: 'nvidia/gpt-oss-120b',
92-
mini: 'openai/gpt-5-mini',
109+
'grok-4': 'xai/grok-4-0709',
110+
'grok-fast': 'xai/grok-4-1-fast-reasoning',
111+
// DeepSeek
112+
deepseek: 'deepseek/deepseek-chat',
113+
r1: 'deepseek/deepseek-reasoner',
114+
// Free models
115+
free: 'nvidia/nemotron-ultra-253b',
116+
nemotron: 'nvidia/nemotron-ultra-253b',
117+
'deepseek-free': 'nvidia/deepseek-v3.2',
118+
devstral: 'nvidia/devstral-2-123b',
119+
'qwen-coder': 'nvidia/qwen3-coder-480b',
120+
maverick: 'nvidia/llama-4-maverick',
121+
// Minimax
122+
minimax: 'minimax/minimax-m2.7',
123+
// Others
93124
glm: 'zai/glm-5',
125+
kimi: 'moonshot/kimi-k2.5',
94126
};
95127

96128
// Model pricing (per 1M tokens) - used for stats
@@ -100,27 +132,68 @@ const MODEL_PRICING: Record<string, { input: number; output: number }> = {
100132
'blockrun/eco': { input: 0.2, output: 1.0 },
101133
'blockrun/premium': { input: 3.0, output: 15.0 },
102134
'blockrun/free': { input: 0, output: 0 },
103-
// Individual models
135+
// FREE - NVIDIA models
136+
'nvidia/gpt-oss-120b': { input: 0, output: 0 },
137+
'nvidia/gpt-oss-20b': { input: 0, output: 0 },
138+
'nvidia/nemotron-ultra-253b': { input: 0, output: 0 },
139+
'nvidia/nemotron-3-super-120b': { input: 0, output: 0 },
140+
'nvidia/nemotron-super-49b': { input: 0, output: 0 },
141+
'nvidia/deepseek-v3.2': { input: 0, output: 0 },
142+
'nvidia/mistral-large-3-675b': { input: 0, output: 0 },
143+
'nvidia/qwen3-coder-480b': { input: 0, output: 0 },
144+
'nvidia/devstral-2-123b': { input: 0, output: 0 },
145+
'nvidia/glm-4.7': { input: 0, output: 0 },
146+
'nvidia/llama-4-maverick': { input: 0, output: 0 },
147+
// Anthropic
104148
'anthropic/claude-sonnet-4.6': { input: 3.0, output: 15.0 },
105149
'anthropic/claude-opus-4.6': { input: 5.0, output: 25.0 },
106150
'anthropic/claude-haiku-4.5': { input: 1.0, output: 5.0 },
107-
'openai/gpt-5.4': { input: 2.5, output: 15.0 },
151+
// OpenAI
152+
'openai/gpt-5-nano': { input: 0.05, output: 0.4 },
153+
'openai/gpt-4.1-nano': { input: 0.1, output: 0.4 },
154+
'openai/gpt-4o-mini': { input: 0.15, output: 0.6 },
108155
'openai/gpt-5-mini': { input: 0.25, output: 2.0 },
109-
'google/gemini-2.5-pro': { input: 1.25, output: 10.0 },
156+
'openai/gpt-4.1-mini': { input: 0.4, output: 1.6 },
157+
'openai/gpt-5.2': { input: 1.75, output: 14.0 },
158+
'openai/gpt-5.3': { input: 1.75, output: 14.0 },
159+
'openai/gpt-5.3-codex': { input: 1.75, output: 14.0 },
160+
'openai/gpt-4.1': { input: 2.0, output: 8.0 },
161+
'openai/o3': { input: 2.0, output: 8.0 },
162+
'openai/gpt-4o': { input: 2.5, output: 10.0 },
163+
'openai/gpt-5.4': { input: 2.5, output: 15.0 },
164+
'openai/o1-mini': { input: 1.1, output: 4.4 },
165+
'openai/o3-mini': { input: 1.1, output: 4.4 },
166+
'openai/o4-mini': { input: 1.1, output: 4.4 },
167+
'openai/o1': { input: 15.0, output: 60.0 },
168+
'openai/gpt-5.2-pro': { input: 21.0, output: 168.0 },
169+
'openai/gpt-5.4-pro': { input: 30.0, output: 180.0 },
170+
// Google
171+
'google/gemini-2.5-flash-lite': { input: 0.1, output: 0.4 },
110172
'google/gemini-2.5-flash': { input: 0.3, output: 2.5 },
111-
'deepseek/deepseek-chat': { input: 0.28, output: 0.42 },
112-
'deepseek/deepseek-reasoner': { input: 0.55, output: 2.19 },
113-
'xai/grok-3': { input: 3.0, output: 15.0 },
173+
'google/gemini-3-flash-preview': { input: 0.5, output: 3.0 },
174+
'google/gemini-2.5-pro': { input: 1.25, output: 10.0 },
175+
'google/gemini-3-pro-preview': { input: 2.0, output: 12.0 },
176+
'google/gemini-3.1-pro': { input: 2.0, output: 12.0 },
177+
// xAI
114178
'xai/grok-4-fast': { input: 0.2, output: 0.5 },
179+
'xai/grok-4-fast-reasoning': { input: 0.2, output: 0.5 },
180+
'xai/grok-4-1-fast': { input: 0.2, output: 0.5 },
115181
'xai/grok-4-1-fast-reasoning': { input: 0.2, output: 0.5 },
116-
'nvidia/gpt-oss-120b': { input: 0, output: 0 },
117-
'zai/glm-5': { input: 1.0, output: 3.2 },
182+
'xai/grok-4-0709': { input: 0.2, output: 1.5 },
183+
'xai/grok-3-mini': { input: 0.3, output: 0.5 },
184+
'xai/grok-2-vision': { input: 2.0, output: 10.0 },
185+
'xai/grok-3': { input: 3.0, output: 15.0 },
186+
// DeepSeek
187+
'deepseek/deepseek-chat': { input: 0.28, output: 0.42 },
188+
'deepseek/deepseek-reasoner': { input: 0.28, output: 0.42 },
189+
// Minimax
190+
'minimax/minimax-m2.7': { input: 0.3, output: 1.2 },
191+
'minimax/minimax-m2.5': { input: 0.3, output: 1.2 },
192+
// Others
118193
'moonshot/kimi-k2.5': { input: 0.6, output: 3.0 },
119-
'openai/gpt-5.3-codex': { input: 2.5, output: 10.0 },
120-
'openai/o3': { input: 2.0, output: 8.0 },
121-
'openai/o4-mini': { input: 1.1, output: 4.4 },
122-
'google/gemini-2.5-flash-lite': { input: 0.08, output: 0.3 },
123-
'google/gemini-3.1-pro': { input: 1.25, output: 10.0 },
194+
'nvidia/kimi-k2.5': { input: 0.55, output: 2.5 },
195+
'zai/glm-5': { input: 1.0, output: 3.2 },
196+
'zai/glm-5-turbo': { input: 1.2, output: 4.0 },
124197
};
125198

126199
function estimateCost(

src/router/index.ts

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ export interface RoutingResult {
1919
const AUTO_TIERS: Record<Tier, { primary: string; fallback: string[] }> = {
2020
SIMPLE: {
2121
primary: 'google/gemini-2.5-flash',
22-
fallback: ['deepseek/deepseek-chat', 'nvidia/gpt-oss-120b'],
22+
fallback: ['deepseek/deepseek-chat', 'nvidia/nemotron-ultra-253b'],
2323
},
2424
MEDIUM: {
2525
primary: 'moonshot/kimi-k2.5',
26-
fallback: ['google/gemini-2.5-flash', 'deepseek/deepseek-chat'],
26+
fallback: ['google/gemini-2.5-flash', 'minimax/minimax-m2.7'],
2727
},
2828
COMPLEX: {
2929
primary: 'google/gemini-3.1-pro',
@@ -37,20 +37,20 @@ const AUTO_TIERS: Record<Tier, { primary: string; fallback: string[] }> = {
3737

3838
const ECO_TIERS: Record<Tier, { primary: string; fallback: string[] }> = {
3939
SIMPLE: {
40-
primary: 'nvidia/gpt-oss-120b',
41-
fallback: ['google/gemini-2.5-flash-lite'],
40+
primary: 'nvidia/nemotron-ultra-253b',
41+
fallback: ['nvidia/gpt-oss-120b', 'nvidia/deepseek-v3.2'],
4242
},
4343
MEDIUM: {
4444
primary: 'google/gemini-2.5-flash-lite',
45-
fallback: ['nvidia/gpt-oss-120b'],
45+
fallback: ['nvidia/nemotron-ultra-253b', 'nvidia/qwen3-coder-480b'],
4646
},
4747
COMPLEX: {
4848
primary: 'google/gemini-2.5-flash-lite',
49-
fallback: ['deepseek/deepseek-chat'],
49+
fallback: ['deepseek/deepseek-chat', 'nvidia/mistral-large-3-675b'],
5050
},
5151
REASONING: {
5252
primary: 'xai/grok-4-1-fast-reasoning',
53-
fallback: ['deepseek/deepseek-reasoner'],
53+
fallback: ['deepseek/deepseek-reasoner', 'nvidia/nemotron-ultra-253b'],
5454
},
5555
};
5656

@@ -228,7 +228,7 @@ export function routeRequest(
228228
// Free profile - always use free model
229229
if (profile === 'free') {
230230
return {
231-
model: 'nvidia/gpt-oss-120b',
231+
model: 'nvidia/nemotron-ultra-253b',
232232
tier: 'SIMPLE',
233233
confidence: 1.0,
234234
signals: ['free-profile'],
@@ -261,22 +261,48 @@ export function routeRequest(
261261
// Baseline: Claude Opus at $5/$25 per 1M tokens
262262
const OPUS_COST_PER_1K = 0.015; // rough average
263263
const modelCosts: Record<string, number> = {
264+
// FREE
264265
'nvidia/gpt-oss-120b': 0,
265-
'google/gemini-2.5-flash': 0.001,
266+
'nvidia/gpt-oss-20b': 0,
267+
'nvidia/nemotron-ultra-253b': 0,
268+
'nvidia/nemotron-3-super-120b': 0,
269+
'nvidia/nemotron-super-49b': 0,
270+
'nvidia/deepseek-v3.2': 0,
271+
'nvidia/mistral-large-3-675b': 0,
272+
'nvidia/qwen3-coder-480b': 0,
273+
'nvidia/devstral-2-123b': 0,
274+
'nvidia/glm-4.7': 0,
275+
'nvidia/llama-4-maverick': 0,
276+
// Budget
277+
'openai/gpt-5-nano': 0.0002,
278+
'openai/gpt-4.1-nano': 0.0003,
266279
'google/gemini-2.5-flash-lite': 0.0003,
280+
'xai/grok-4-fast': 0.0004,
281+
'xai/grok-4-1-fast': 0.0004,
282+
'xai/grok-4-1-fast-reasoning': 0.0004,
267283
'deepseek/deepseek-chat': 0.0004,
268-
'deepseek/deepseek-reasoner': 0.003,
269-
'moonshot/kimi-k2.5': 0.002,
270-
'google/gemini-2.5-pro': 0.006,
271-
'google/gemini-3.1-pro': 0.007,
284+
'deepseek/deepseek-reasoner': 0.0004,
285+
'minimax/minimax-m2.7': 0.0008,
286+
'minimax/minimax-m2.5': 0.0008,
287+
'google/gemini-2.5-flash': 0.0014,
288+
'openai/gpt-5-mini': 0.0011,
289+
'moonshot/kimi-k2.5': 0.0018,
290+
// Mid-range
272291
'anthropic/claude-haiku-4.5': 0.003,
292+
'zai/glm-5': 0.0021,
293+
'openai/o4-mini': 0.0028,
294+
'google/gemini-2.5-pro': 0.0056,
295+
'openai/gpt-5.3-codex': 0.0079,
296+
'openai/gpt-5.2': 0.0079,
297+
'openai/gpt-5.3': 0.0079,
298+
'openai/gpt-4.1': 0.005,
299+
'openai/o3': 0.005,
300+
'google/gemini-3.1-pro': 0.007,
301+
'openai/gpt-5.4': 0.0088,
302+
// Premium
273303
'anthropic/claude-sonnet-4.6': 0.009,
304+
'xai/grok-3': 0.009,
274305
'anthropic/claude-opus-4.6': 0.015,
275-
'openai/gpt-5.3-codex': 0.008,
276-
'openai/gpt-5.4': 0.009,
277-
'openai/o3': 0.012,
278-
'openai/o4-mini': 0.006,
279-
'xai/grok-4-1-fast-reasoning': 0.0004,
280306
};
281307
const modelCost = modelCosts[model] ?? 0.005;
282308
const savings = Math.max(0, (OPUS_COST_PER_1K - modelCost) / OPUS_COST_PER_1K);
@@ -306,7 +332,7 @@ export function getFallbackChain(
306332
tierConfigs = PREMIUM_TIERS;
307333
break;
308334
case 'free':
309-
return ['nvidia/gpt-oss-120b'];
335+
return ['nvidia/nemotron-ultra-253b'];
310336
default:
311337
tierConfigs = AUTO_TIERS;
312338
}

0 commit comments

Comments
 (0)