AgentMeter
Track API spend with intent-level attribution. Shows where your tokens go by project and purpose. Invoke with /meter for spend summary.
Description
name: agent-meter description: "Track API spend with intent-level attribution. Shows where your tokens go by project and purpose. Invoke with /meter for spend summary." version: "0.6.3" user-invocable: true
/meter — API Spend Tracker
When the user invokes /meter, run a SINGLE bash command that handles everything: setup check, backfill, and summary. One prompt, one approval.
Execution
Run this single bash command:
bash "$(for d in "$HOME/.claude/skills/agent-meter" "$HOME/.claude/skills/meter" ".claude/skills/meter" ".claude/skills/agent-meter"; do [ -f "$d/meter.sh" ] && echo "$d/meter.sh" && break; done)"
If meter.sh is not found, tell the user the script wasn't found and suggest reinstalling.
Format the output as a clean markdown summary for the user.
If the user passes arguments like /meter --by model or /meter --last 7d, append them: bash .../meter.sh --last 7d
Setup
Install from ClawHub into your project:
clawhub install agent-meter --dir .claude/skills
Then run /meter — it handles everything automatically:
- Copies the session-end hook to
.claude/hooks/ - Creates or updates
.claude/settings.jsonwith the Stop hook - Backfills any existing Claude Code sessions
- Shows your spend summary
That's it. Future sessions are tracked automatically via the Stop hook.
Dashboard sync (optional)
To sync spend data to the hosted dashboard at dashboard.agentmeter.io:
bash .claude/skills/agent-meter/meter-sync.sh --setup
The setup wizard will prompt for your API key and agent name. Get a key from the dashboard's Machines page. After setup, sync anytime with:
bash .claude/skills/agent-meter/meter-sync.sh
What the scripts do
-
meter.sh — Single entry point for
/meter. Checks hook installation, backfills if needed, shows spend summary. All in one script, one permission prompt. -
meter-session-end.sh (Stop hook): Parses the current session's transcript for per-message token usage. Detects model (opus/sonnet/haiku), calculates cost with model-specific pricing including cache tier pricing, writes a single
session_summaryrecord. Deduplicates by session_id — safe across session pause/resume. No network calls, no secrets access, jq dependency only. -
meter-parse-claude-sessions.sh (backfill): Scans all Claude Code transcripts in
~/.claude/projects/*/*.jsonl. Extracts the same usage data as the hook. Deduplicates against existing records by session_id. Safe to re-run — only processes new sessions. No network calls, no secrets access, jq dependency only.
Query Examples
SPEND="$HOME/.agent-meter/spend.jsonl"
# Spend by project
jq -s 'group_by(.project) | map({project: .[0].project, cost: (map(.cost_usd) | add), sessions: length}) | sort_by(-.cost)' "$SPEND"
# Spend by model
jq -s 'group_by(.model) | map({model: .[0].model, cost: (map(.cost_usd) | add), sessions: length}) | sort_by(-.cost)' "$SPEND"
# Today's spend
jq -s "[.[] | select(.ts | startswith(\"$(date -u +%Y-%m-%d)\"))] | map(.cost_usd) | add" "$SPEND"
# Top 10 most expensive sessions
jq -s 'sort_by(-.cost_usd) | .[:10] | .[] | "\(.cost_usd | . * 100 | round / 100) \(.project) \(.total_calls) calls \(.ts | split("T")[0])"' "$SPEND" -r
Schema
All records are session_summary type in ~/.agent-meter/spend.jsonl.
| Field | Required | Description |
|---|---|---|
type |
yes | Always session_summary |
ts |
yes | ISO 8601 timestamp (session start) |
api |
yes | api.anthropic.com |
model |
yes | Model identifier (e.g. claude-opus-4-6) |
session_id |
yes | Claude Code session UUID |
project |
yes | Project directory name |
total_calls |
yes | Number of assistant messages |
tokens_in |
yes | Input tokens (non-cached) |
tokens_out |
yes | Output tokens |
cache_creation |
yes | Cache creation input tokens |
cache_read |
yes | Cache read input tokens |
cost_usd |
yes | Estimated cost (model-aware pricing) |
source |
yes | hook or session_parse |
purpose |
no | Human-readable intent (manual tag) |
intent |
no | Machine tags (manual) |
Cost Calculation
Per-1M-token pricing:
| Model | Input | Output | Cache Create | Cache Read |
|---|---|---|---|---|
| Opus | $15 | $75 | $18.75 (1.25x) | $1.50 (0.1x) |
| Sonnet | $3 | $15 | $3.75 (1.25x) | $0.30 (0.1x) |
| Haiku | $0.25 | $1.25 | $0.3125 (1.25x) | $0.025 (0.1x) |
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!