Skip to main content

Reverse-engineer Anthropic's opaque Claude subscription limits into hard numbers

Project description

ccmeter

Measure what Anthropic won't tell you: what your Claude subscription limits actually mean in tokens.

Why

Anthropic charges $20-$200/month for Claude but won't say what the limits actually are. The API reports utilization as a percentage — but a percentage of what? Nobody knows.

Twice in four months, Anthropic announced temporary usage boosts, then silently tightened baseline limits after. When users complained, the response was "contrast effect." See docs/evidence.md for the receipts.

Without hard numbers, users can't tell the difference between "I'm using more" and "they gave me less." ccmeter fixes that. If limits shrink, you'll see it — tokens-per-percent goes down, cost-per-percent goes down, and there's no way to hand-wave calibrated data.

One person's data is a sample. Hundreds of people's data is leverage.

How it works

  1. Poll: records utilization percentages from Anthropic's OAuth usage API every 2 minutes per bucket (five_hour, seven_day, etc.)
  2. Scan: reads per-message token counts from Claude Code's local JSONL session logs
  3. Calibrate: when utilization ticks from 15% to 16% and you used N tokens in that window — 1% = N tokens, 1% = $X at API rates

Track those numbers over time. If tokens-per-percent drops, the cap shrank. Cost-per-percent gives you the dollar value of what each plan actually buys — comparable across users regardless of cache hit ratio.

Install

pip install ccmeter

Or clone and run directly:

git clone https://github.com/iteebz/ccmeter && cd ccmeter && uv sync

Requires Python 3.12+, Claude Code installed and signed in. macOS and Linux. Zero dependencies beyond fncli.

Usage

# Install as background daemon (survives restarts)
ccmeter install

# Or run in foreground
ccmeter poll

# What does 1% actually cost?
ccmeter report

# Structured output for sharing
ccmeter report --json

# Raw usage tick history
ccmeter history

# Collection health
ccmeter status

# Remove daemon
ccmeter uninstall

What it collects

From Anthropic's API (polled every 2 min, recorded on change):

  • Utilization percentage per bucket
  • Reset timestamps
  • Your subscription tier (detected automatically from credentials)

From Claude Code's local JSONL files (scanned on report):

  • Per-message token counts: input, output, cache_read, cache_create
  • Timestamps, model, Claude Code version, session ID

Everything stays local in ~/.ccmeter/meter.db. Your OAuth token is only sent to Anthropic's own API — the same call Claude Code already makes.

Known confounds

  • Multi-surface usage: claude.ai, Claude Code, and Cowork share limits but only Claude Code has local token logs. If you use multiple surfaces simultaneously, token counts will be inflated relative to the utilization tick.
  • 1% granularity: The API reports whole percentages only. More samples over longer periods = better accuracy.
  • Bucket overlap: Some buckets may share underlying quotas in ways the API doesn't surface.

Help

The more users collecting data across different tiers (Pro, Max 5x, Max 20x) and models (Sonnet, Opus), the faster we can detect when limits change and map what every plan actually gets you.

Easiest way to help: install it, let the daemon run, share your ccmeter report output.

If you want to contribute code: see CONTRIBUTING.md.

License

MIT

Project details


Download files

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

Source Distribution

ccmeter-0.1.0.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

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

ccmeter-0.1.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file ccmeter-0.1.0.tar.gz.

File metadata

  • Download URL: ccmeter-0.1.0.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ccmeter-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5b7bba85bb0ee73935cfa2ce79f41e3f73073b68efbe16af4d045677d72fbb25
MD5 6c7168ed88afeb3fd6d4ea59ac0d0481
BLAKE2b-256 1d6349467e8235c5e5dc1fc7de9ee4f3fa4c24d4a6d1ce479df645f9e73b8751

See more details on using hashes here.

File details

Details for the file ccmeter-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ccmeter-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ccmeter-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ecc3fe6e8c57204335f671b8990a8980677c3a3730811711f9f7f20c54518c54
MD5 dde5266377699533c6809242bfd860f0
BLAKE2b-256 eed975a93fad663d0a44c958c8cb7dcf1673c34a0f450be987b4099c143189f1

See more details on using hashes here.

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