クイックスタート
Node.js 22.13 以上(または Bun 1.1 以上)が必要です。鍵もチェーンも使いません。spendctl mock は EIP-712 署名を本物どおりに検証し、決済だけを偽装します。
mkdir spend-demo && cd spend-demonpx spendctl init # spendctl.yaml と .spendctl/(git 管理外)npx spendctl mock # ターミナル1: ファシリテータ :4020、天気 API :4021(x402 v2)、検索 API :4022(x402 v1)npx spendctl start # ターミナル2: サイドカー(127.0.0.1:8402)3つ目のターミナルでエージェント役をやります。
npx spendctl fetch "http://localhost:4021/weather?city=Tokyo" --agent researcher# ✔ 200 paid $0.01何回か繰り返してください。既定のポリシーでは researcher の予算は 1日 $0.03 で、onBudgetExceeded: approve になっています。そのため4回目は、人間が判断するまで保留されます。
npx spendctl pendingnpx spendctl approve --latest # 断るなら: npx spendctl deny --latest --note "今日はやめておく"結果を確認します。
npx spendctl budgetnpx spendctl ledgernpx spendctl export --format csv --out receipts.csvnpx spendctl dashboard --opennpx spendctl fetch "http://localhost:4022/search?q=x402" --agent stranger # 未登録のエージェント → 拒否npx spendctl fetch "http://localhost:4021/weather" --agent researcher --dry-run # 何が起きるかだけ確認。署名はしない