ccostp
v0.1.0
Published
Per-project Claude Code cost reporter — analyzes ~/.claude/projects/*/*.jsonl and prices token usage from LiteLLM.
Maintainers
Readme
ccostp
Per-project cost reporter for Claude Code. Reads the session JSONL logs in ~/.claude/projects/ and prices token usage against current Anthropic rates from LiteLLM.
$ ccostp
Project: /Users/refik.onal/Developer/refo/ccostp
Sessions: 1
Models: claude-opus-4-7
Metric Tokens Cost
Input 712 $0.0036
Output 38,263 $0.9566
Cache read 2,723,553 $1.3618
Cache write (5m) 0 $0.0000
Cache write (1h) 217,851 $2.1785
────────────────────────────────────
Total 2,980,379 $4.5004Install
Requires Bun ≥ 1.0.
bun add -g ccostp
# or run without installing:
bunx ccostpUsage
ccostp Cost report for the current directory
ccostp <path-or-folder> Cost report for a specific project
<path>: absolute or relative filesystem path
<folder>: encoded folder under ~/.claude/projects/
ccostp -r [<path>] Recursive: aggregate cost across all tracked
projects under the given path (or cwd)
ccostp -l | --list List all known projects (sorted by recent activity)Flags
| Flag | Effect |
|---|---|
| --json | Emit JSON instead of a table |
| --by-model | Add per-model token columns |
| --by-project | Add per-project breakdown (recursive mode) |
| --refresh | Force re-fetch of pricing data (24h cache otherwise) |
| -r, --recursive | Aggregate across descendant projects |
| -y, --yes | Skip the confirmation prompt at 20+ matched projects |
| -l, --list | List projects instead of showing a cost report |
| -h, --help | Help |
Examples
# Cost for current project
ccostp
# Cost for a specific project, with per-model breakdown and JSON output
ccostp ~/Developer/myproject --by-model --json
# Aggregate cost across everything under ~/Developer/
ccostp -r ~/Developer --by-project
# Just list every tracked project
ccostp -lHow it works
- Scans
~/.claude/projects/<encoded-folder>/*.jsonl, where Claude Code stores session logs. - For each assistant message line, extracts
message.usagetoken counts and the model name. Deduplicates bymessage.idto handle resumes/branching. - Buckets tokens into input, output, cache read, cache write (5m), and cache write (1h).
- Multiplies each bucket by the per-token rate from LiteLLM's
model_prices_and_context_window.json, cached locally for 24h.
Development
bun install
bun test
bun run index.ts # equivalent to `ccostp` with current cwdLicense
Apache-2.0
