- name
- token-cost-monitor
- description
- >
- homepage
- https://github.com/openclaw/openclaw
- metadata
- openclaw
- files
- ["scripts/*"]
- official
- false
Token Cost Monitor
Monitor OpenClaw API costs in real-time, set budget alerts, and optimize model spending.
Why This Matters
Real user stories:
- One user spent $18.75 overnight on heartbeat checks asking "Is it daytime yet?"
- Federico Viticci spent $3,600 in a single month
- Regular users report $200/day bills from misconfigured automations
Quick Commands
Check current session costs:
# View token usage and estimated cost
openclaw /status
openclaw /usageSet up cost alerts:
# Alert when daily spend exceeds $10
echo "Alert if daily_cost > $10"
# Alert when monthly spend exceeds $100
echo "Alert if monthly_cost > $100"Cost Optimization Strategies
1. Model Routing
Use cheaper models for simple tasks:
- Claude Haiku: $0.25/1M input tokens (fast, cheap)
- Claude Sonnet: $3/1M input tokens (balanced)
- Claude Opus: $15/1M input tokens (expensive, powerful)
Routing rules:
Simple queries (weather, facts) → Haiku
Complex analysis → Sonnet
Creative writing → Opus (only if needed)2. Context Management
Reduce token waste:
- Clear old conversation context regularly
- Don't store tool outputs in context
- Use concise system prompts
- Limit heartbeat frequency
3. Heartbeat Optimization
Common mistake:
❌ Every 30 min: "Is it daytime yet?" → $18.75/night
✅ Every 6 hours: Check emails + calendar → $2/dayBest practices:
- Combine multiple checks into one heartbeat
- Use longer intervals (4-6 hours)
- Skip nighttime heartbeats (23:00-08:00)
- Track heartbeat costs separately
Cost Tracking Dashboard
Daily Cost Breakdown
| Category | Tokens | Cost |
|---|---|---|
| Heartbeat checks | 50,000 | $0.50 |
| Web searches | 100,000 | $1.00 |
| Code generation | 200,000 | $2.00 |
| Document analysis | 150,000 | $1.50 |
| Total | 500,000 | $5.00/day |
Monthly Projection
Daily average: $5.00
Monthly projection: $150.00
Budget limit: $100.00
⚠️ Warning: Will exceed budget by $50Budget Alerts Setup
Tier 1: Light User ($10-30/month)
Daily limit: $1.00
Alert at: $0.80/day
Actions: Reduce heartbeat frequency, use Haiku moreTier 2: Regular User ($40-80/month)
Daily limit: $2.50
Alert at: $2.00/day
Actions: Optimize context, review model routingTier 3: Power User ($100-500/month)
Daily limit: $10.00
Alert at: $8.00/day
Actions: Audit all automations, implement strict routingCost Reduction Checklist
Immediate Actions (save 30-50%)
- [ ] Reduce heartbeat frequency to 4-6 hours
- [ ] Route simple queries to Haiku
- [ ] Clear context after completed tasks
- [ ] Disable unnecessary automations
Medium-term (save 50-70%)
- [ ] Implement model routing rules
- [ ] Optimize system prompts
- [ ] Batch similar tasks together
- [ ] Use caching for repeated queries
Long-term (save 70-90%)
- [ ] Build cost-aware agent behaviors
- [ ] Implement token budgets per task
- [ ] Use local models for simple tasks
- [ ] Optimize tool output storage
Monitoring Commands
Real-time Cost Check
# Get current session stats
openclaw /status
# Get detailed usage breakdown
openclaw /usage --detailedHistorical Analysis
# Last 7 days cost trend
echo "Analyze spending trend for past 7 days"
# Identify most expensive tasks
echo "What are my top 5 most expensive task types?"Anomaly Detection
# Alert if spending is 2x normal
echo "Alert if hourly_cost > 2 * average_hourly_cost"Integration Examples
Slack/Discord Alerts
# Send daily cost summary to Slack
curl -X POST https://hooks.slack.com/services/YOUR/WEBHOOK/URL \
-d '{"text": "Daily OpenClaw cost: $5.00 (Budget: $10.00)"}'Email Reports
# Send weekly cost report via email
echo "Weekly cost report: $35.00 total, $5.00/day average" | mail -s "OpenClaw Cost Report" user@example.comCost Optimization Scripts
Auto-pause Expensive Sessions
#!/bin/bash
# Pause session if daily cost exceeds limit
DAILY_LIMIT=10
CURRENT_COST=$(get_current_cost)
if (( $(echo "$CURRENT_COST > $DAILY_LIMIT" | bc -l) )); then
echo "⚠️ Daily cost ($CURRENT_COST) exceeds limit ($DAILY_LIMIT)"
echo "Pausing non-essential automations..."
# Add pause logic here
fiModel Router
#!/bin/bash
# Route queries to appropriate model based on complexity
QUERY="$1"
WORD_COUNT=$(echo "$QUERY" | wc -w)
if [ $WORD_COUNT -lt 20 ]; then
echo "Using Haiku (simple query)"
MODEL="haiku"
elif [ $WORD_COUNT -lt 100 ]; then
echo "Using Sonnet (medium complexity)"
MODEL="sonnet"
else
echo "Using Opus (complex analysis)"
MODEL="opus"
fiCommon Cost Pitfalls
❌ Mistake: Infinite Loops
Agent keeps calling itself → 1000s of API calls → $100+ in hoursFix: Implement loop detection and limits
❌ Mistake: Storing Tool Outputs
Every tool output saved to context → Context grows → Each call costs moreFix: Only store essential information
❌ Mistake: Wrong Model for Task
Using Opus for weather queries → 60x more expensive than neededFix: Implement model routing
❌ Mistake: Heartbeat Misconfiguration
Heartbeat every 5 minutes → 288 calls/day → $50+/dayFix: Use 4-6 hour intervals
Pricing Reference (2026)
Anthropic Claude
| Model | Input | Output | Best For |
|---|---|---|---|
| Haiku | $0.25/1M | $1.25/1M | Simple queries, facts |
| Sonnet | $3/1M | $15/1M | General tasks |
| Opus | $15/1M | $75/1M | Complex analysis |
OpenAI GPT
| Model | Input | Output | Best For |
|---|---|---|---|
| GPT-4o Mini | $0.15/1M | $0.60/1M | Simple queries |
| GPT-4o | $2.5/1M | $10/1M | General tasks |
| o1 | $15/1M | $60/1M | Complex reasoning |
Google Gemini
| Model | Input | Output | Best For |
|---|---|---|---|
| Flash | $0.075/1M | $0.30/1M | Simple queries |
| Pro | $1.25/1M | $5/1M | General tasks |
| Ultra | $7.5/1M | $30/1M | Complex analysis |
ROI Calculator
Calculate if automation is worth it:
Manual task time: 30 minutes
Your hourly rate: $50/hour
Manual cost: $25 per task
Automation cost:
- API calls: $0.50
- Setup time (amortized): $5.00
- Total: $5.50 per task
Savings: $25 - $5.50 = $19.50 per task
ROI: 355%Updates
- 2026-03-27: Initial release
- Pricing as of March 2026
- Based on real user cost data