ccstats is a fast CLI for token and cost usage analytics for Claude Code, OpenAI Codex, and Cursor logs.
Search keywords: claude code usage stats, codex usage stats, cursor usage stats, token usage cli, ai token cost tracker.
- Fast local analysis of usage JSONL logs
- Claude Code support (
~/.claude/projects/) - OpenAI Codex support (
~/.codex/sessions/) - Experimental Cursor support (
Cursor/User/globalStorage/state.vscdb) - Daily/weekly/monthly/project/session views
- Optional model-level token and cost breakdown
brew install majiayu000/tap/ccstatscargo binstall ccstatscargo install ccstatscurl -fsSL https://raw.githubusercontent.com/majiayu000/ccstats/main/install.sh | sh
# Install a specific version
curl -fsSL https://raw.githubusercontent.com/majiayu000/ccstats/main/install.sh | VERSION=v0.2.61 shDownload from GitHub Releases.
# Install
brew install majiayu000/tap/ccstats
# Today
ccstats codex today
# Daily trend
ccstats codex daily
# Same result via unified source flag
ccstats daily --source codexCursor support is experimental because Cursor's local database schema is not a public API. ccstats reads local SQLite tokenCount fields only and does not estimate missing usage.
# Install
brew install majiayu000/tap/ccstats
# Today
ccstats today --source cursor
# Daily trend
ccstats daily --source cursor
# Same source via alias
ccstats daily --source cur- docs.rs: https://docs.rs/ccstats/latest/ccstats/
- crates.io: https://crates.io/crates/ccstats
- The crate-level Rustdoc in
src/main.rsexplains supported sources and common commands.
# Today's usage
ccstats today
# Daily breakdown
ccstats daily
# Weekly summary
ccstats weekly
# Monthly summary
ccstats monthly
# By project
ccstats project
# By session
ccstats session
# 5-hour billing blocks
ccstats blocks
# With model breakdown
ccstats today -b
# JSON output
ccstats today -j
# Debug mode (timing info)
ccstats today --debug# Codex subcommand mode
ccstats codex daily
# Or use unified source flag
ccstats daily --source codex
# Today's Codex usage
ccstats codex today
# Daily Codex breakdown
ccstats codex daily
# Weekly Codex summary
ccstats codex weekly
# By session
ccstats codex session
# With model breakdown
ccstats codex today -bCursor uses the unified source flag rather than a dedicated subcommand.
# Today's Cursor usage
ccstats today --source cursor
# Daily Cursor breakdown
ccstats daily --source cursor
# Weekly Cursor summary
ccstats weekly --source cursor
# By session/conversation
ccstats session --source cursor
# Cursor alias
ccstats daily --source curBy default, ccstats checks these local Cursor databases:
- macOS:
~/Library/Application Support/Cursor/User/globalStorage/state.vscdb - Linux:
~/.config/Cursor/User/globalStorage/state.vscdb workspaceStorage/*/state.vscdbunder the same Cursor user directory
You can override the Cursor user directory with CURSOR_HOME:
CURSOR_HOME="/path/to/Cursor/User" ccstats daily --source cursorCurrent limitations:
- Only explicit
tokenCount/usage fields are counted. - Project aggregation and 5-hour billing blocks are not supported for Cursor.
- Cache creation, cache read, and reasoning token fields are reported as zero unless Cursor exposes them directly in a supported local record.
# Bucket by timezone
ccstats daily --timezone UTC
# Locale-aware number formatting
ccstats monthly --locale de
# Filter by date
ccstats daily --since 20260101 --until 20260131
# Monthly budget forecast (uses --until as the as-of date when present)
ccstats monthly --monthly-budget 25 --until 20260415
# Select data source explicitly (supports aliases)
ccstats daily --source codex
# Combine all supported data sources
ccstats monthly --source all
# Experimental Cursor source (reads local SQLite tokenCount fields)
ccstats daily --source cursor
# Cursor alias
ccstats daily --source cur
# Offline mode (use cached pricing)
ccstats today -O
# Compact output
ccstats today -c
# Hide cost column
ccstats today --no-costccstats session --csv now includes:
reasoning_tokenscache_creation_tokenscache_read_tokens
When malformed JSONL records are encountered, ccstats reports them in stderr:
Warning: ignored <N> malformed records
| Source | Directory | Features |
|---|---|---|
| Claude Code | ~/.claude/projects/ |
Projects, Billing Blocks, Deduplication |
| OpenAI Codex | ~/.codex/sessions/ |
Reasoning Tokens |
| All Sources | Multiple | Combined daily/weekly/monthly/today/statusline summaries |
| Cursor (experimental) | Cursor User/globalStorage/state.vscdb |
Local SQLite tokenCount fields only |
See docs/ARCHITECTURE.md for:
- Adding new data sources
- Data flow and processing pipeline
- Caching mechanism
- Architecture and module boundaries
See docs/algorithm/authoritative-token-accounting.md for:
- Token accounting rules
- Source-specific normalization
- Deduplication semantics
MIT. See LICENSE.
