コンテンツにスキップ

クイックスタート

Node.js 22.13 以上(または Bun 1.1 以上)が必要です。鍵もチェーンも使いません。spendctl mock は EIP-712 署名を本物どおりに検証し、決済だけを偽装します。

ターミナルウィンドウ
mkdir spend-demo && cd spend-demo
npx 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 pending
npx spendctl approve --latest # 断るなら: npx spendctl deny --latest --note "今日はやめておく"

結果を確認します。

ターミナルウィンドウ
npx spendctl budget
npx spendctl ledger
npx spendctl export --format csv --out receipts.csv
npx spendctl dashboard --open
ターミナルウィンドウ
npx spendctl fetch "http://localhost:4022/search?q=x402" --agent stranger # 未登録のエージェント → 拒否
npx spendctl fetch "http://localhost:4021/weather" --agent researcher --dry-run # 何が起きるかだけ確認。署名はしない