Skip to main content

cctrack

A lightweight CLI tool that scans Claude Code JSONL logs and reports token usage and estimated cost. Zero dependencies, runs anywhere Python 3.10+ is available.

Install

# Run directly (no install needed)
uvx cctrack

# Or install globally
uv tool install cctrack

Usage

# Scan local logs and print report
cctrack

# Last 7 days only
cctrack --days 7

# Aggregate with remote machines via SSH
cctrack --remote dgx macbook-air

# Custom log directories
cctrack --dirs ~/.claude/projects ~/.sandy/sandboxes

Example output

cctrack — Claude Code Cost Report
══════════════════════════════════

April 2026 — month to date (day 1, 1 active)
───────────────────────────────────────
  Input tokens:            23,381
  Output tokens:          199,069
  Cache read:          30,862,977
  Cache write:          1,051,023
  Total tokens:        32,136,450
  Total cost:     $25.85
  Avg/day:        $25.85
  Projected/mo:   $775.50 (based on 1-day avg)

Daily breakdown:
  Date                Input       Output      Cache R      Cache W       Cost
  ──────────── ──────────── ──────────── ──────────── ──────────── ──────────
  2026-04-01         23,381      199,069   30,862,977    1,051,023 $   25.85

What it does

  1. Walks ~/.claude/projects/ and ~/.sandy/sandboxes/ for JSONL log files
  2. Parses assistant events with token usage
  3. Deduplicates by requestId (last event wins, matching Claude Code's semantics)
  4. Calculates cost using Anthropic's published rates per model
  5. Prints daily breakdown with input/output/cache token splits and monthly summaries

Remote aggregation

With --remote, cctrack SSHs to each host and streams back both the JSONL logs and the host's statusline hook data (~/.claude/cctrack/) for local parsing, so authoritative hook costs from every machine are summed per day. Requires SSH key auth.

# Aggregate this machine + DGX server + laptop
cctrack --remote dgx macbook-air

# For accurate aggregate costs, install the hook on each host too
cctrack --install-hook --remote dgx macbook-air

Rate card

Prices per million tokens, from Anthropic's pricing page. Cache writes are priced per TTL: 5-minute at 1.25× input, 1-hour at 2× input.

Model Input Output Cache Read Cache Write 5m Cache Write 1h
Fable 5 / Mythos 5 $10.00 $50.00 $1.00 $12.50 $20.00
Opus 5 / 4.8 / 4.7 / 4.6 / 4.5 $5.00 $25.00 $0.50 $6.25 $10.00
Opus 4 / 4.1 $15.00 $75.00 $1.50 $18.75 $30.00
Sonnet 5 (through 2026-08-31) $2.00 $10.00 $0.20 $2.50 $4.00
Sonnet 5 (from 2026-09-01) / 4.x / 3.7 $3.00 $15.00 $0.30 $3.75 $6.00
Haiku 4.x $1.00 $5.00 $0.10 $1.25 $2.00
Haiku 3.5 $0.80 $4.00 $0.08 $1.00 $1.60
Haiku 3 $0.25 $1.25 $0.03 $0.30 $0.50

Usage is priced with the rates in effect on the day it happened, so time-limited introductory pricing is applied correctly to past usage.

Unknown models fall back to Sonnet rates and are flagged with ? in the report's Model column — a prompt to update the rate card rather than a silent guess.

Energy estimate

cctrack --energy adds an estimated inference energy column (Wh/kWh):

cctrack --energy

This is a rough estimate, not a measurement — Anthropic does not publish per-token energy figures or model sizes. It is modelled from logged tokens using the published full-stack per-prompt figures the major labs have disclosed (Google: 0.24 Wh median Gemini text prompt; OpenAI: ~0.34 Wh average ChatGPT query — both include accelerator, host, cooling and idle capacity), apportioned across token classes by relative compute cost and scaled by model tier:

  • output tokens dominate — decode is sequential and memory-bandwidth bound
  • input and cache writes are prefill: parallel, far cheaper per token
  • cache reads skip prefill entirely (~0.1× input)
  • both cache-write TTLs use the same figure — a 1-hour write costs more money but the same compute

Treat results as ±1 order of magnitude. It covers datacenter inference only: not model training, and not your own machine. Scale the whole model with CCTRACK_ENERGY_SCALE=1.5 if you have better numbers for your workload.

Origins

This is a Python rewrite of the Go-based cctrack dashboard. The Go version provides a full web dashboard with real-time updates, session explorer, and project breakdown. This Python version strips it down to the essentials: a single command that parses logs and prints a cost report. The JSONL parsing logic, deduplication strategy, and rate card are ported directly from the Go implementation.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cctrack-0.6.0.tar.gz (43.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cctrack-0.6.0-py3-none-any.whl (21.3 kB view details)

Uploaded Python 3

File details

Details for the file cctrack-0.6.0.tar.gz.

File metadata

  • Download URL: cctrack-0.6.0.tar.gz
  • Upload date:
  • Size: 43.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for cctrack-0.6.0.tar.gz
Algorithm Hash digest
SHA256 d5ba9602eb6b9d9ea9fcfac2ccc2cea6131af93366692abce58d57205969c164
MD5 9f8bb9aedfe69f5c89ebfb39f2727650
BLAKE2b-256 67fff617299566ed29431efd9139b1653eb6a07913b58c1f3af2d2a10576eab8

See more details on using hashes here.

Provenance

The following attestation bundles were made for cctrack-0.6.0.tar.gz:

Publisher: publish.yml on rappdw/cctrack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cctrack-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: cctrack-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 21.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for cctrack-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 13849e4ac6f7d1d87a444b172bf5bd72d02f00dd887a90a0ff0b72a553c235cc
MD5 1b9c6bddb1a4b8addd02960cacc86445
BLAKE2b-256 ce03e58b61ea93df8c842661b5dc06529f869d5c53c5055b3521a2dfe0ab2fe0

See more details on using hashes here.

Provenance

The following attestation bundles were made for cctrack-0.6.0-py3-none-any.whl:

Publisher: publish.yml on rappdw/cctrack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page