Skip to main content

openclaw-cost-diff

Compare OpenClaw token usage and API cost across two time windows, agents, models, or channels.

The goal is a small, decision-friendly CLI: what changed, by how much, and which model, agent, or channel contributed most.

Install

pipx install openclaw-cost-diff

For local development:

python -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[dev]"

Examples

openclaw-cost-diff --last 7d --prev 7d
openclaw-cost-diff --agent main --last 30d --json
openclaw-cost-diff --model openai-codex/gpt-5.4 --last 14d --prev 14d
openclaw-cost-diff --from 2026-04-01 --to 2026-04-15 --prev-from 2026-03-17 --prev-to 2026-04-01
openclaw-cost-diff --channel analysis --last 7d --markdown
openclaw-cost-diff --last 7d --top 10 --fail-on-cost-increase 25

Compare different filter sets by applying --prev-agent, --prev-model, or --prev-channel:

openclaw-cost-diff --agent main --prev-agent worker --last 7d --prev 7d

Read a specific fixture or exported transcript directory:

openclaw-cost-diff --data ./fixtures --last 30d
openclaw-cost-diff --data ~/.openclaw/sessions --data ~/.openclaw/transcripts --last 7d

Data Discovery

By default the CLI scans:

  • ~/.openclaw/agents
  • ~/.openclaw/sessions
  • ~/.openclaw/transcripts
  • ~/.openclaw

Set OPENCLAW_DATA_DIR to override the defaults. Multiple paths can be separated with your platform path separator, or you can pass repeated --data arguments.

The loader accepts .json, .jsonl, .ndjson, .log, .txt, and extensionless files. It supports flat records, arrays, sessions, records, and common nested transcript containers such as events, messages, turns, and requests.

For current OpenClaw agent session data, the loader also handles wrapper records where timestamps and channels live on the outer event while model, usage, and cost live under nested objects such as payload.response.usage or message.usage.cost.total. Numeric timestamps may be seconds, milliseconds, microseconds, or nanoseconds, and out-of-range numeric timestamp candidates are ignored instead of crashing the scan.

When usage.input and usage.output are token counts, they are never treated as cost components unless they appear inside an explicit nested cost object.

Cost Field Assumptions

openclaw-cost-diff intentionally avoids pricing tables. It compares cost data that is already present in local OpenClaw records.

Recognized timestamp fields:

  • timestamp
  • created_at
  • started_at
  • ended_at
  • time
  • date

Recognized token fields:

  • Input: input_tokens, prompt_tokens, tokens_in, input
  • Output: output_tokens, completion_tokens, tokens_out, output

Recognized cost fields:

  • cost
  • cost_usd
  • total_cost
  • total_cost_usd
  • api_cost
  • api_cost_usd
  • nested cost.usd
  • nested cost.amount
  • nested cost.total
  • nested message.usage.cost.total

Recognized dimensions:

  • Model: model, model_id, provider_model
  • Agent: agent, agent_id, agentId, session_agent
  • Channel: channel, role, stream, conversation_channel

Records with missing cost are included in token totals and counted as missing cost records, but they contribute $0.00 to cost totals.

Output

Default terminal output includes:

  • total input tokens
  • total output tokens
  • total cost
  • delta amount and percent
  • top contributors by model, agent, and channel
  • a small cost sparkline
  • regression warnings when cost jumps beyond --regression-threshold

Machine-readable JSON is available with --json. Markdown is available with --markdown.

Limitations

  • This tool is a cost comparison utility, not a full observability system.
  • It does not infer costs from model pricing tables.
  • Month and year relative durations are approximate: 1m is 30 days and 1y is 365 days.
  • Unknown or unsupported transcript shapes may need export normalization before analysis.
  • Naive datetimes are treated as UTC.

Release

Tags matching v* run the release workflow:

  1. Run tests.
  2. Build the Python package.
  3. Publish to PyPI using PYPI_API_TOKEN or PyPI trusted publishing.
  4. Create a GitHub release.
  5. Bump the Homebrew formula in pfrederiksen/homebrew-tap using HOMEBREW_TAP_TOKEN.

Do not commit PyPI tokens. Store release credentials as GitHub Actions secrets or use PyPI trusted publishing.

Development

python -m pip install -e ".[dev]"
pytest
openclaw-cost-diff --data fixtures --from 2026-04-13 --to 2026-04-20 --prev-from 2026-04-06 --prev-to 2026-04-13

Metadata

Release files for openclaw-cost-diff 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openclaw-cost-diff 0.1.5
File Size Uploaded
openclaw_cost_diff-0.1.5.tar.gz 22.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openclaw-cost-diff 0.1.5
File Interpreter ABI Platform
openclaw_cost_diff-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 37.0 kB

Release files / openclaw_cost_diff-0.1.5.tar.gz

Download URL openclaw_cost_diff-0.1.5.tar.gz
Size 22.6 kB
Tags Source
SHA-256 checksum
How to use checksums
4f47cbfcfc64b7e99644d134e4c8fd0ee7ab79de4562fd2bc363c06d8f9891a5
BLAKE2b-256 checksum
How to use checksums
5184bc502d0ec56d8d642c24c5d196932d4aa484dee05fd5d859002e62c5e790
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / openclaw_cost_diff-0.1.5-py3-none-any.whl

Download URL openclaw_cost_diff-0.1.5-py3-none-any.whl
Size 14.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ae9bcc103a677b449125a10d52bd49273adc2e27d6c34f300af74f9f26f5588
BLAKE2b-256 checksum
How to use checksums
f5e58c51061a8276fc358cd21f61d4bff765ff0f50e7dc9fb5f2a3d6b80009d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page