Passive Cost Memory for Agent Development について
burnwatchは、AI支援開発プロジェクト内の有料サービスを追跡し、開発コストを推定します。サービス検出、請求マニフェスト、コードに基づく利用予測に加え、支出情報と分析ツールを提供するMCPサーバーを備えています。
主な機能
- 01プロジェクトのファイルやプロンプトから有料サービスを検出
- 02支出と予算の確度を追跡
- 03コードパターンやスケジュールからコストを予測
- 04料金モデルをJSONマニフェストで管理
- 05MCP経由で支出・コスト分析ツールを提供
活用シーン
- 01プロジェクトの支出と予算状況の確認
- 02新しいSDK呼び出しや定期ジョブの費用推定
- 03新たに追加された有料サービスの検出
- 04MCP対応LLMへのサービス支出情報の提供
MCP 対応
burnwatchはMCPサーバーを備え、支出概要、サービス別支出、コスト影響分析、利用状況、請求マニフェスト、サービス検出のツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
burnwatch
コーディング速度が10倍になっています。支出も10倍になっているかもしれません。
AI 支援開発のコストをさりげなく把握できます。
╔══════════════════════════════════════════════════════════════
║ BURNWATCH — your-app — March 2026
╠══════════════════════════════════════════════════════════════
║ Service Spend Conf Budget Left
║ ──────────────────────────────────────────────────────────
║ anthropic $47.20 ✅ LIVE $100 53%
║ vercel $20.00 🟡 CALC $20 flat — on plan
║ scrapfly $127.00 ✅ LIVE $100 ⚠️ OVER
║ browserbase ~$12.40 ✅ LIVE $99 87%
║ supabase $25.00 🟡 CALC $25 flat — on plan
║ posthog $0.00 🟡 CALC $0 —
║ ↳ 234K/1M events (23%)
╠══════════════════════════════════════════════════════════════
║ TOTAL: ~$231.60 Untracked: 0 ✅ Est margin: ±$12
║ 🚨 scrapfly 127% OVER BUDGET - review before use
╚══════════════════════════════════════════════════════════════
これは毎回のセッションで自動的に表示されます。確認するダッシュボードも、覚えておくタブもありません。いつもの作業場所で、さりげなく状況を把握できます。
問題
よくある流れを見てみましょう。
あなたは集中して作業しています。Claude が機能を書き、あなたが承認し、コードベースは大きくなり、すべてが順調に感じられます。火曜日にウェブスクレイピング用の Scrapfly キーを追加します。水曜日には、ブラウザー自動化のために Browserbase を組み込みます。金曜日までには、エージェントが1日おきに競合他社のページを1,000件スクレイピングする cron ジョブを作っています。コードは完璧に動作します。
3週間後、請求書が届きます。「完璧に動作する」ために月額340ドルかかり、契約したのは月額99ドルのプランだったとわかります。
これが AI 支援開発における新しい日常です。料金が発生するサービスは、コストをまったく把握していないエージェントによって組み込まれます。Scrapfly のボット対策回避が基本クレジットの25倍を消費することも、Anthropic Opus のトークン単価が Haiku の15倍であることも、API 呼び出しが1,000回に達すると上限になる無料プランを使っていることも、エージェントにはわかりません。
さらに厄介なのは、登録時にはこうしたサービスのほとんどが安く見えることです。月額20ドル。月額99ドル。定額料金だから安心です。しかし、料金ページの3ページ目に超過料金がひっそり記載されています。登録ページを離れるときは月額20ドルで安心していても、含まれる利用量を超えたことを誰にも知らされず、戻ってきたときには月額数百ドルの請求が届きます。
IT リーダーの78%が、過去12か月間に従量課金または AI 料金に関連する予想外の請求を経験しました(Zylo 2026 SaaS Management Index)。
burnwatch はエージェントとあなたの財布の間に位置します。ファイルの保存をすべて監視し、各サービスの課金モデルを把握して、被害が出る前に知らせます。
インストール
npx burnwatch init
以上です。burnwatch がプロジェクトをスキャンして有料サービスを検出し、フックを登録します。次のセッションから、支出状況が表示されます。
要件: Node.js 18+ · Claude Code、MCP、またはスタンドアロン CLI で動作します
仕組み
1. 検出
npx burnwatch init を実行すると、burnwatch はすぐに次の4つの場所をスキャンします。
| 確認対象 | 例 | タイミング |
|---|---|---|
| package.json | 依存関係内の "@anthropic-ai/sdk" | 初期化時、ファイル変更時 |
| 環境変数 | .env 内の SCRAPFLY_KEY | セッション開始時 |
| import 文 | import { Resend } from "resend" | 初期化時、ファイル変更時 |
| プロンプト内の記述 | 「スクレイピングに Browserbase を使って…」 | 各プロンプト |
🔍 Scanning project for paid services...
Found 6 paid services:
● Anthropic (Claude) ✅ LIVE API available
Detected via: package.json, env vars, imports
● Scrapfly ✅ LIVE API available
Detected via: env vars, imports
● Browserbase ✅ LIVE API available
Detected via: package.json, imports
● Supabase ✅ LIVE API available
Detected via: package.json, env vars
● Vercel 🟡 Flat plan
Detected via: package.json
● PostHog 🟡 Free tier
Detected via: package.json, imports
🔗 Registering hooks...
✅ burnwatch initialized!
2. ヒアリング
CLI フラグも YAML 設定ファイルも必要ありません。エージェントに話しかけるだけです。
You: "Let's set up burnwatch for this project"
エージェントが対話形式でヒアリングを行い、リスクカテゴリ別に各サービスを確認します(まず LLM、次に従量課金、最後に定額制のインフラ)。
Agent: I found 6 services. Let me walk through each one.
Anthropic — I probed your API key. You're on API Usage,
$47.23 spent this billing period. Default budget: $100/mo.
Does that feel right?
You: Yeah that's fine.
Agent: ✅ Anthropic set to $100/mo budget.
Scrapfly — Probe detected Pro plan (1M credits).
You've used 742K/1M credits. Budget: $100/mo.
You: Keep it.
Agent: ✅ Scrapfly set to Pro, $100/mo.
Vercel — You're on Pro ($20/mo flat).
PostHog — Free tier.
I'll set these as flat plans with matching budgets.
Skip?
You: Yep.
Agent: ✅ Vercel $20, PostHog $0 — all set.
回答はその都度すぐに書き戻されます。全体で約90秒です。
3. 課金マニフェスト
ここからが本題です。追跡対象のサービスにはそれぞれ課金マニフェストがあります。これは、料金モデル全体を定義する、コミュニティによって保守されている JSON ファイルです。
{
"serviceId": "browserbase",
"billingDimensions": [
{
"id": "browser_hours",
"name": "Browser hours",
"unit": "hour",
"ratePerUnit": 0.10,
"ratePer": 1,
"variants": [
{ "id": "standard", "ratePerUnit": 0.10, "codePatterns": ["createSession"] }
]
},
{
"id": "proxy_bandwidth",
"name": "Proxy bandwidth",
"unit": "GB",
"ratePerUnit": 10.00,
"ratePer": 1
}
],
"plans": [
{ "id": "startup", "monthlyBase": 99, "included": { "browser_hours": 500 } }
],
"costMultipliers": [
{ "id": "long_session", "factor": 10, "codePatterns": ["keepAlive", "waitForTimeout"] }
]
}
これは推測ではありません。burnwatch は、Browserbase がセッション単位ではなくブラウザー時間単位で課金すること、Startup プランには 500 時間が含まれること、超過分は 1 時間あたり $0.10 であること、そして keepAlive を使った長時間セッションではコストが 10 倍に膨らむ可能性があることを把握しています。Anthropic Opus の料金が Sonnet の 5 倍であることも把握しています。Scrapfly のアンチボット回避では、基本クレジットの 5~25 倍が消費されることも把握しています。
本番環境で検証済みのマニフェストが付属するサービスは 12 個あります。新しいサービスの追加は、JSON ファイルを 1 つ作成するだけです。
4. パッシブモニタリング
コードを書くのはあなたです。監視するのは burnwatch です。ファイルが保存されるたびに、3 つの処理がバックグラウンドで実行されます。
コスト影響分析では、変更されたファイルをスキャンして SDK の呼び出し箇所を特定し、倍率を検出します(ループ、.map()、Promise.all、cron スケジュールなど)。変数で指定されたループ回数を解決し、コード内のモデルの種類を照合して、月額コストを予測します。
[BURNWATCH] ⚠️ Cost impact estimate for scraper.ts
Browserbase: ~15,000 calls/mo → $37-$375/mo (Long-running sessions)
Current: $12/$99 budget (12%)
使用率の追跡では、プロジェクト全体のすべての呼び出し箇所を追跡し、超過分を予測しながら、情報を逐次更新します。
[BURNWATCH] ⚠️ Browserbase utilization: ~750 browser-hours/mo
(plan includes 500) → ~$25.00/mo overage
新しいサービスの検出は、ファイルの変更によって burnwatch がまだ認識していないものが追加された場合に実行されます。
[BURNWATCH] 🆕 New paid service detected: twilio
Run 'burnwatch add twilio' to configure budget and tracking.
5. 介入(実際にコストを節約できる部分)
重要なのは、次のようなシナリオです。5 回のセッションを重ね、コードが 4,000 行に達したところで、Claude にウェブスクレイパーを作るよう指示します。
You: "Create a scraper that uses Browserbase to scrape 1000 competitor
pages every other day on a cron job"
Claude がコードを書きます。ファイルが保存された瞬間に、burnwatch が動作します。
[BURNWATCH] ⚠️ Cost impact estimate for scraper.ts
Browserbase: ~15,000 sessions/mo → $37-$375/mo (Long-running sessions)
Current: $12/$99 budget (12%)
[BURNWATCH] ⚠️ Browserbase utilization: ~750 browser-hours/mo
(plan includes 500) → ~$25.00/mo overage
Claude はシステムメッセージとして挿入された内容を、自身のコンテキスト内で確認します。あなたからコストについて尋ねられるのを待たず、自発的に対応します。
Agent: I built the scraper, but heads up — burnwatch flagged this:
At 1,000 pages every other day, you're looking at ~750
browser-hours/month. Your Startup plan includes 500 hours,
so you'd hit ~$25/mo in overage on top of the $99 base.
A few options:
1. Reduce to 500 pages per run (stays within plan)
2. Use Playwright locally for non-JS pages (free)
3. Batch into fewer longer sessions to reduce overhead
Want me to adjust?
このやり取りは burnwatch がなければ起こりません。 burnwatch がなければ、Claude がスクレイパーを書き、あなたがそれをリリースし、3 週間後に請求書が届いて初めて超過分に気付きます。その頃には cron ジョブがずっと動き続けています。
倍率の検出
burnwatch は API 呼び出しの数を数えるだけではありません。呼び出しの周辺にあるコードの構造も読み取ります。
| パターン | 例 | 検出内容 |
|---|---|---|
| リテラルのループ境界 | for (let i = 0; i < 1000; i++) | 倍率:1000 |
| 変数のループ境界 | const PAGES = 1000; for (i < PAGES) | PAGES を 1000 として解決 |
| 配列の反復処理 | urls = Array(500) のときの urls.map(async (u) => scrape(u)) | 倍率:500 |
| for...of | pages のサイズが既知の場合の for (const page of pages) | サイズを解決 |
| Promise.all | Promise.all(urls.map(...)) | .map() との二重カウントなし |
| 名前付き定数 | const NUM_REQUESTS = 5000 | 倍率のヒントとして検出 |
| Cron:5 分ごと | // every 5 minutes または */5 * * * | 倍率:月あたり 8640 |
| Cron:2 日ごと | // every other day または */2 | 倍率:月あたり 15 |
| Cron:毎週 | // every week または 0 0 * * 0 | 倍率:月あたり 4 |
| バッチサイズ | const batch_size = 50 | 倍率:50 |
課金マニフェストにコードパターンを使ったコスト倍率(アンチボット回避を示す Scrapfly の asp.*true など)がある場合、それらも検出されます。これにより、単一の数値ではなく、コストの範囲が表示されます。
信頼度の段階
すべての支出額には信頼度バッジが付いています。burnwatch は、実際以上に把握しているように見せることはありません。
| バッジ | 意味 | 情報源 |
|---|---|---|
| ✅ LIVE | 実際の請求 API データ | あなたのキーでサービス API をポーリング |
| 🟡 CALC | 固定の月額料金 | プラン料金を入力 |
| 🟠 EST | 計測に基づく推定値 | 使用状況のシグナルと料金計算式 |
| 🔴 BLIND | 検出済み、未追跡 | サービスは存在するが、設定がない |
サマリーには、常に未追跡の数が表示されます。見栄えのよいダッシュボードに不意の出費が隠れることはありません。
## 対応サービス
| サービス | ティア | 課金モデル | 注意点 |
|---|---|---|---|
| Anthropic | ✅ LIVE | トークン単位 | Opus のトークン単価は Haiku の 15 倍です。使用するモデルはエージェントが選択します。 |
| OpenAI | ✅ LIVE | トークン単位 | GPT-4o-mini は o1 より 66 倍安価です。モデルの選択が大きく影響します。 |
| Scrapfly | ✅ LIVE | クレジットプール | ボット対策の回避には、基本クレジットの 5~25 倍が黙って消費されます。 |
| Browserbase | ✅ LIVE | ブラウザー時間単位 | セッション数ではなく利用時間に応じて課金されます。セッションが長いほど費用が増えます。 |
| Vercel | ✅ LIVE | コンピューティング+超過料金 | Vercel の請求で最も予想外なのは、関数の GB 時間です。 |
| Supabase | ✅ LIVE | 段階制+超過料金 | ベクトル埋め込みによってデータベースのサイズは急速に増加します。 |
| Google Gemini | 🟡 CALC | トークン単位 | 無料枠は充実していますが、Flash 2.0 は非常に安価なため、確認を忘れがちです。 |
| Voyage AI | 🟡 CALC | トークン単位 | 埋め込み専用です。費用はクエリ数ではなくコーパスのサイズに応じて増加します。 |
| Upstash | 🟠 EST | コマンド単位 | 10 万コマンドあたり 0.20 ドルです。無料枠は 1 日あたり 1 万コマンドです。従量課金であることを忘れがちです。 |
| Resend | 🟠 EST | メール単位 | Pro では超過分が 1,000 通あたり 0.90 ドルです。アプリがバズるまでは問題ありません。 |
| Inngest | 🟡 CALC | 実行単位 | 実行回数とステップ数の両方がカウントされます。5 ステップの関数は 6 回の実行として数えられます。 |
| PostHog | 🟡 CALC | イベント単位 | 月 100 万イベントまでは無料です。十分多いように思えますが、そうでなくなるときが来ます。 |
課金マニフェスト
billing/ ディレクトリには、サービスごとに 1 つの JSON ファイルが含まれます。各マニフェストには次の情報が記載されています。
- 課金ディメンション:サービスが課金対象とするあらゆる軸(トークン、セッション、帯域幅など)
- バリアント:自動検出用の正規表現コードパターンを含む、モデルごとの料金(Haiku と Sonnet と Opus など)
- プラン:含まれる内容、超過料金、ハードキャップ
- コスト倍率:費用を増加させる機能フラグ(ボット対策の回避、JS レンダリング、ステルスモード)
- 一般的な開発時の使用量:より的確な予測に役立つ、現実的な使用パターン
新しいサービスの追加
billing/ に JSON ファイルを追加します。
{
"$schema": "./billing.schema.json",
"serviceId": "my-service",
"name": "My Service",
"lastVerified": "2026-03-25",
"pricingUrl": "https://my-service.com/pricing",
"billingDimensions": [
{
"id": "api_calls",
"name": "API calls",
"unit": "call",
"ratePerUnit": 1.00,
"ratePer": 1000
}
],
"plans": [
{
"id": "pro",
"name": "Pro ($29/mo)",
"monthlyBase": 29,
"included": { "api_calls": 50000 },
"overageRates": { "api_calls": 1.00 }
}
]
}
コードの変更は不要です。コストエンジンが自動的に読み込みます。
MCP サーバー
burnwatch は、MCP に対応したあらゆる LLM で使用できる MCP サーバーを提供します。
claude mcp add burnwatch -- node ./node_modules/burnwatch/dist/mcp-server.js
公開されるツール:
| ツール | 用途 |
|---|---|
get_spend_brief | アラート付きの支出全体表 |
get_service_spend | 1 つのサービスに関する詳細情報 |
analyze_cost_impact | コストに影響する SDK 呼び出しについて、ファイルを分析します |
get_utilization | プロジェクト全体の使用状況と超過料金の予測 |
get_billing_manifest | 任意のサービスの課金マニフェスト(生データ) |
detect_paid_services | プロジェクト内の有料サービスをスキャンします |
list_registry_services | レジストリ内のすべてのサービス |
Claude Code との統合
burnwatch は Claude Code hooks として動作します。セッションのライフサイクルイベントに応じて実行されるバックグラウンドスクリプトです。
| フック | イベント | 動作 |
|---|---|---|
| セッション開始 | 新しいセッションまたは再開したセッション | 課金 API をポーリングし、支出概要を表示します |
| プロンプト送信 | プロンプトを入力したとき | サービスへの言及を検出し、支出カードを挿入します |
| ファイル変更 | コードを書き込んだとき、または編集したとき | コスト影響分析、新しいサービスの検出、使用状況の更新を行います |
| セッション終了 | セッションが終了したとき | 支出台帳をディスクに書き込みます |
burnwatch は 3 つの エージェントスキル もインストールします。
/setup-burnwatch:ガイド付きの初期設定/burnwatch-interview:サービスごとに対話形式で設定/spend:支出をすばやく確認(特定のサービスを確認する場合は/spend scrapfly)
CLI リファレンス
burnwatch init Initialize in current project
burnwatch setup Init + auto-configure all detected services
burnwatch add <service> [options] Register a service for tracking
burnwatch configure [options] Update service config (plan, budget, key)
burnwatch interview --json Export current state as JSON (for agent use)
burnwatch status Show current spend brief
burnwatch scan Full project utilization scan
burnwatch services List all services in registry
burnwatch reconcile Scan for untracked services
burnwatch version Show version
設定とセキュリティ
認証情報がプロジェクトディレクトリに保存されることはありません。
~/.config/burnwatch/
config.json API keys, tokens (chmod 600, never in git)
your-project/.burnwatch/
config.json Services, budgets, detection history
spend-ledger.md Human-readable spend report (git-committable)
data/
utilization.json Code-derived usage projections
events.jsonl Append-only event log
cache/ Billing API response cache
snapshots/ Point-in-time spend snapshots
## 貢献
最も手早く貢献する方法は、課金マニフェストを追加することです。
- リポジトリをフォークします
billing/billing.schema.jsonに従ってbilling/<service-id>.jsonを作成します- 課金項目、プラン、できればコスト倍率を含めます
- サービスの料金ページで料金を確認します
- PR を作成します
検出パターンを指定して registry.json にサービスを追加したり、コスト影響倍率の検出を改善したりすることもできます。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。