Install
openclaw skills install @kjvarga/daily-cost-reportGenerate detailed daily OpenClaw cost reports by agent, model, and channel, with HTML email formatting and optional automated delivery.
openclaw skills install @kjvarga/daily-cost-reportGenerate comprehensive OpenClaw usage and cost reports with breakdowns by agent, model, and channel. Supports both on-demand analysis and automated daily email delivery.
# Generate report for yesterday (markdown)
{baseDir}/scripts/daily-cost-report.sh yesterday
# Generate report for a specific date
{baseDir}/scripts/daily-cost-report.sh 2026-03-18
# Generate report for today
{baseDir}/scripts/daily-cost-report.sh today
# Generate HTML-formatted email report
{baseDir}/scripts/daily-cost-report-email.sh yesterday
# Send email report to recipient
{baseDir}/scripts/send-cost-report.sh kjvarga@gmail.com yesterday
The daily cost report analyzes OpenClaw session data for a specified date range and generates:
Reports use the current pricing for:
Cache pricing (read/write) is factored into cost calculations.
daily-cost-report.shCore report generator. Queries OpenClaw sessions via openclaw sessions --all-agents --json, filters by date range, calculates costs using model-specific pricing, and generates markdown output.
Output: /tmp/cost-report-YYYY-MM-DD.md
daily-cost-report-email.shWraps the markdown report in an HTML email template with styled tables, summary metrics, and visual hierarchy.
Output: /tmp/cost-report-YYYY-MM-DD.html
send-cost-report.shSends the HTML report via email using the mail command. Falls back to saving the file if mail delivery fails.
Usage: send-cost-report.sh <recipient-email> [date]
The daily cost report is typically scheduled as a cron job in ~/.openclaw/cron/jobs.json:
{
"id": "daily-cost-report",
"agentId": "worker",
"name": "main-daily-cost-report",
"enabled": true,
"schedule": {
"kind": "cron",
"expr": "0 8 * * *",
"tz": "America/Vancouver"
},
"sessionTarget": "isolated",
"wakeMode": "now",
"payload": {
"kind": "agentTurn",
"message": "Generate yesterday's cost report and send to kjvarga@gmail.com"
},
"delivery": {
"mode": "announce",
"channel": "telegram",
"to": "7918443630"
}
}
The cron job invokes the skill, which then calls the appropriate scripts.
When Karl asks for a cost report:
# From any agent with exec access
exec(command: "bash ~/.openclaw/workspace/skills/daily-cost-report/scripts/daily-cost-report.sh yesterday")
# Or to generate and send email
exec(command: "bash ~/.openclaw/workspace/skills/daily-cost-report/scripts/send-cost-report.sh kjvarga@gmail.com yesterday")
The report includes:
All monetary values are in USD with 4 decimal precision. Token counts are formatted with thousands separators for readability.
Scripts accept:
yesterday (default) - Previous calendar daytoday - Current calendar dayYYYY-MM-DD - Specific dateDate parsing is compatible with both macOS (date -v-1d) and Linux (date -d "yesterday").
openclaw sessions --all-agents --jsonjq for JSON processingawk for aggregationmail command (for email delivery)This skill costs nothing — it only reads session metadata that OpenClaw already tracks. No external API calls.
# OpenClaw Daily Cost Report 🐈⬛
**Date:** 2026-03-18
**Generated:** 2026-03-19 08:00:00 PDT
---
## Summary
| Metric | Value |
|--------|-------|
| **Total Cost** | $2.4567 |
| **Total Tokens** | 1,234,567 |
| **Input Tokens** | 987,654 |
| **Output Tokens** | 246,913 |
| **Cache Write Tokens** | 123,456 |
| **Cache Read Tokens** | 456,789 |
| **Cache Savings** | $0.3245 |
---
## Cost by Agent
| Agent | Cost | Tokens | Input | Output |
|-------|------|--------|-------|--------|
| main | $1.2345 | 654,321 | 543,210 | 111,111 |
| worker | $0.8901 | 400,000 | 320,000 | 80,000 |
| research | $0.3321 | 180,246 | 124,444 | 55,802 |
...