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.1.tar.gz (29.6 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.1-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ccmeter-0.1.1.tar.gz
  • Upload date:
  • Size: 29.6 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.1.tar.gz
Algorithm Hash digest
SHA256 ca764e78a33979525bd02d6ddee2e17fb7c27363c9efd8f70b251ac254d247d7
MD5 8d5c82308f96a4a79f30ea5c2d0582b4
BLAKE2b-256 08ccb0afc10911e02cff44a19ec4c63381a1978c172d271e43c07077eb2c8ec6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ccmeter-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 24.8 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ae9517db609a440363f47a1ff403074e0a314eeb5d7551e28180668f354583e9
MD5 621bfea18705b65bae73d24478f847cd
BLAKE2b-256 ec8ed999d61a4bcef939e8d7adeb920de6241de8313891d8ce22c1ee6d0546a1

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