@blockrun/clawrouter 0.12.80 → 0.12.82

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 CHANGED
@@ -410,15 +410,15 @@ You're here. 55+ models, local smart routing, x402 USDC payments — the only st
410
410
  </td>
411
411
  <td width="50%">
412
412
 
413
- ### 🦞 [SocialClaw](https://github.com/BlockRunAI/socialclaw)
413
+ ### 🤖 [BRCC](https://github.com/BlockRunAI/brcc)
414
414
 
415
- **Intelligence-as-a-function for X/Twitter**
415
+ **BlockRun for Claude Code**
416
416
 
417
- The first X analytics an agent can call. One function call = one intelligence report. $0.08, not $49/month. No dashboard, no login, no subscription.
417
+ Run Claude Code with 50+ models, no rate limits, no Anthropic account, no phone verification. Pay per request with USDC your wallet is your identity.
418
418
 
419
- `pip install blockrun-llm[solana]`
419
+ `curl -fsSL https://blockrun.ai/brcc-install | bash`
420
420
 
421
- [![GitHub](https://img.shields.io/github/stars/BlockRunAI/socialclaw?style=flat-square)](https://github.com/BlockRunAI/socialclaw)
421
+ [![GitHub](https://img.shields.io/github/stars/BlockRunAI/brcc?style=flat-square)](https://github.com/BlockRunAI/brcc)
422
422
 
423
423
  </td>
424
424
  </tr>
@@ -438,6 +438,17 @@ The first X analytics an agent can call. One function call = one intelligence re
438
438
  | [Configuration](docs/configuration.md) | Environment variables |
439
439
  | [Troubleshooting](docs/troubleshooting.md) | Common issues |
440
440
 
441
+ ### Blog
442
+
443
+ | Article | Topic |
444
+ | ------- | ----- |
445
+ | [11 Free AI Models, Zero Cost](docs/11-free-ai-models-zero-cost-blockrun.md) | How BlockRun gives developers top-tier LLMs for nothing |
446
+ | [ClawRouter Cuts LLM API Costs 500×](docs/clawrouter-cuts-llm-api-costs-500x.md) | Deep dive into cost savings |
447
+ | [ClawRouter vs OpenRouter](docs/clawrouter-vs-openrouter-llm-routing-comparison.md) | Head-to-head comparison |
448
+ | [Smart LLM Router: 14-Dimension Classifier](docs/smart-llm-router-14-dimension-classifier.md) | How the routing engine works |
449
+ | [LLM Router Benchmark: 46 Models, Sub-1ms](docs/llm-router-benchmark-46-models-sub-1ms-routing.md) | Performance benchmarks |
450
+ | [Anthropic Cost Savings](docs/anthropic-cost-savings.md) | Reducing Claude API spend |
451
+
441
452
  ---
442
453
 
443
454
  ## Frequently Asked Questions
@@ -464,7 +475,7 @@ ClawRouter integrates with OpenClaw (Claude Code), ElizaOS, and any agent that m
464
475
 
465
476
  ### Is ClawRouter free?
466
477
 
467
- ClawRouter itself is free and MIT licensed. You pay only for the LLM API calls routed through it — and 11 NVIDIA models (DeepSeek V3.2, Nemotron Ultra 253B, Mistral Large 675B, Llama 4 Maverick, and more) are completely free. Use `/model free` for Nemotron Ultra 253B, or pick any free model by name.
478
+ ClawRouter itself is free and MIT licensed. You pay only for the LLM API calls routed through it — and 11 models (DeepSeek V3.2, Nemotron Ultra 253B, Mistral Large 675B, Llama 4 Maverick, and more) are completely free. Use `/model free` for Nemotron Ultra 253B, or pick any free model by name.
468
479
 
469
480
  ---
470
481
 
package/dist/cli.js CHANGED
@@ -40587,6 +40587,15 @@ var BLOCKRUN_MODELS = [
40587
40587
  contextWindow: 105e4,
40588
40588
  maxOutput: 128e3
40589
40589
  },
40590
+ {
40591
+ id: "free",
40592
+ name: "Free \u2192 Nemotron Ultra 253B",
40593
+ inputPrice: 0,
40594
+ outputPrice: 0,
40595
+ contextWindow: 131072,
40596
+ maxOutput: 16384,
40597
+ reasoning: true
40598
+ },
40590
40599
  {
40591
40600
  id: "eco",
40592
40601
  name: "Eco (Smart Router - Cost Optimized)",
@@ -49958,7 +49967,8 @@ async function collectWalletInfo() {
49958
49967
  balance: null,
49959
49968
  isLow: false,
49960
49969
  isEmpty: true,
49961
- source: null
49970
+ source: null,
49971
+ paymentChain: "base"
49962
49972
  };
49963
49973
  }
49964
49974
  let solanaAddress = null;
@@ -49968,9 +49978,17 @@ async function collectWalletInfo() {
49968
49978
  } catch {
49969
49979
  }
49970
49980
  }
49971
- const monitor = new BalanceMonitor(address2);
49981
+ const paymentChain = await resolvePaymentChain();
49972
49982
  try {
49973
- const balanceInfo = await monitor.checkBalance();
49983
+ let balanceInfo;
49984
+ if (paymentChain === "solana" && solanaAddress) {
49985
+ const { SolanaBalanceMonitor: SolanaBalanceMonitor2 } = await Promise.resolve().then(() => (init_solana_balance(), solana_balance_exports));
49986
+ const monitor = new SolanaBalanceMonitor2(solanaAddress);
49987
+ balanceInfo = await monitor.checkBalance();
49988
+ } else {
49989
+ const monitor = new BalanceMonitor(address2);
49990
+ balanceInfo = await monitor.checkBalance();
49991
+ }
49974
49992
  return {
49975
49993
  exists: true,
49976
49994
  valid: true,
@@ -49979,7 +49997,8 @@ async function collectWalletInfo() {
49979
49997
  balance: balanceInfo.balanceUSD,
49980
49998
  isLow: balanceInfo.isLow,
49981
49999
  isEmpty: balanceInfo.isEmpty,
49982
- source
50000
+ source,
50001
+ paymentChain
49983
50002
  };
49984
50003
  } catch {
49985
50004
  return {
@@ -49990,7 +50009,8 @@ async function collectWalletInfo() {
49990
50009
  balance: null,
49991
50010
  isLow: false,
49992
50011
  isEmpty: false,
49993
- source
50012
+ source,
50013
+ paymentChain
49994
50014
  };
49995
50015
  }
49996
50016
  } catch {
@@ -50002,7 +50022,8 @@ async function collectWalletInfo() {
50002
50022
  balance: null,
50003
50023
  isLow: false,
50004
50024
  isEmpty: true,
50005
- source: null
50025
+ source: null,
50026
+ paymentChain: "base"
50006
50027
  };
50007
50028
  }
50008
50029
  }
@@ -50057,7 +50078,11 @@ function identifyIssues(result) {
50057
50078
  issues.push("No wallet found");
50058
50079
  }
50059
50080
  if (result.wallet.isEmpty) {
50060
- issues.push("Wallet is empty - need to fund with USDC on Base");
50081
+ const chain3 = result.wallet.paymentChain === "solana" ? "Solana" : "Base";
50082
+ issues.push(`Wallet is empty - need to fund with USDC on ${chain3}`);
50083
+ if (result.wallet.paymentChain === "base" && result.wallet.solanaAddress) {
50084
+ issues.push("Tip: if you funded Solana, run /wallet solana to switch chains");
50085
+ }
50061
50086
  } else if (result.wallet.isLow) {
50062
50087
  issues.push("Wallet balance is low (< $1.00)");
50063
50088
  }
@@ -50084,8 +50109,13 @@ function printDiagnostics(result) {
50084
50109
  if (result.wallet.solanaAddress) {
50085
50110
  console.log(` ${green(`Solana Address: ${result.wallet.solanaAddress}`)}`);
50086
50111
  }
50112
+ const chainLabel = result.wallet.paymentChain === "solana" ? "Solana" : "Base";
50113
+ console.log(` ${green(`Chain: ${chainLabel}`)}`);
50087
50114
  if (result.wallet.isEmpty) {
50088
- console.log(` ${red(`Balance: $0.00 - NEED TO FUND!`)}`);
50115
+ console.log(` ${red(`Balance: $0.00 - NEED TO FUND WITH USDC ON ${chainLabel.toUpperCase()}!`)}`);
50116
+ if (result.wallet.paymentChain === "base" && result.wallet.solanaAddress) {
50117
+ console.log(` ${yellow(`Tip: funded Solana instead? Run /wallet solana to switch`)}`);
50118
+ }
50089
50119
  } else if (result.wallet.isLow) {
50090
50120
  console.log(` ${yellow(`Balance: ${result.wallet.balance} (low)`)}`);
50091
50121
  } else if (result.wallet.balance) {