Agent Budget Controller
/install agent-budget-controller
Agent Budget Controller
💰 Stop LLM cost overruns before they happen
Track, limit, and alert on LLM API costs per agent with daily/weekly/monthly budgets.
What It Does
- Set budget limits — Global or per-agent, daily/weekly/monthly
- Track usage — Automatic cost calculation for 10+ LLM models
- Alert on thresholds — 70% warning, 90% critical, 100% blocked
- Generate reports — Usage summaries and cost breakdowns
- Zero dependencies — Pure Python stdlib, local-only
Quick Start
# Initialize
budget init
# Set limits
budget set --daily 3.00 --weekly 15.00 --monthly 50.00
budget set --agent ubik-pm --daily 1.00
# Log usage (manual - see Integration below)
budget log --agent ubik-pm --model "claude-sonnet-4-5" \
--input-tokens 5000 --output-tokens 1500
# Check status
budget status
budget status --agent ubik-pm
# Check limits (exit code)
budget check # exit 0=ok, 1=exceeded
Commands
| Command | Purpose |
|---|---|
init |
Initialize budget tracking |
set |
Set budget limits |
log |
Log API usage |
status |
Show current usage vs limits |
check |
Check if limits exceeded (exit code) |
report |
Generate detailed period report |
agents |
List agents with limits or activity |
pricing |
Show/update model pricing |
history |
Show recent usage history |
Supported Models
Built-in pricing for:
- OpenAI: gpt-4o, gpt-4o-mini, o1, o1-mini
- Anthropic: claude-sonnet-4-5, claude-opus-4, claude-haiku-3.5
- Google: gemini-2.5-flash, gemini-2.5-pro, gemini-2.0-flash
Custom models:
budget pricing --update --model my-model \
--input-price 1.50 --output-price 5.00
Integration
OpenClaw Heartbeat
Add to HEARTBEAT.md:
## Budget Monitoring
Every 4 hours:
1. Check budget status: `budget status`
2. If any agent >90%, notify Director
3. If any exceeded, escalate immediately
Pre-call Hook (Future)
# In agent wrapper script
budget check --agent $AGENT_NAME || {
echo "❌ Budget exceeded for $AGENT_NAME"
exit 1
}
# Call LLM API...
# Log after call
budget log --agent $AGENT_NAME \
--model "$MODEL" \
--input-tokens $INPUT_TOKENS \
--output-tokens $OUTPUT_TOKENS
Cron (Daily Report)
# Send daily report to Telegram
0 9 * * * budget report --period day | \
openclaw msg --channel telegram --target @director
Alert Levels
| Usage | Level | Symbol | Action |
|---|---|---|---|
| \x3C70% | OK | ✅ | Continue |
| 70-89% | Warning | ⚠️ | Monitor |
| 90-99% | Critical | 🔴 | Alert Director |
| ≥100% | Exceeded | 🚫 | Block calls |
Data Storage
~/.openclaw/budget/
├── config.json # Budget limits
├── pricing.json # Model pricing (optional override)
└── usage.jsonl # Append-only usage log
Privacy: All data stored locally. No network calls.
Examples
See EXAMPLE.md for complete usage scenarios.
Testing
cd ~/ubik-collective/systems/ubik-pm/skills/agent-budget-controller
python3 tests/test_budget.py
Security
- ✅ Zero external dependencies
- ✅ No network calls
- ✅ Local-only data storage
- ✅ Pure Python stdlib
Safe for ClawHub distribution.
License
MIT-0 (public domain equivalent)
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install agent-budget-controller - After installation, invoke the skill by name or use
/agent-budget-controller - Provide required inputs per the skill's parameter spec and get structured output
What is Agent Budget Controller?
Control LLM API spending per agent. Set daily/weekly/monthly limits with real-time tracking and alerts. It is an AI Agent Skill for Claude Code / OpenClaw, with 221 downloads so far.
How do I install Agent Budget Controller?
Run "/install agent-budget-controller" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Agent Budget Controller free?
Yes, Agent Budget Controller is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Agent Budget Controller support?
Agent Budget Controller is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Agent Budget Controller?
It is built and maintained by Chloe Park (@chloepark85); the current version is v1.0.0.