Install in one line
Run it
Screenshots
Why tokenusage
| Problem | tokenusage solution |
|---|---|
| Hit rate limits mid-refactor, no warning | tu live shows usage in real-time |
| No idea what AI coding costs per day | tu gives daily cost breakdown in 0.08s |
| Codex + Claude logs in separate places | One merged dashboard across all sources |
| Existing tools are slow on large logs | 214x faster than ccusage (Rust + parallel scan + cache) |
| Don't want to upload logs to a cloud | 100% local parsing, no data leaves your machine |
| Want coding-time context, not just raw tokens | tu keeps the classic token table by default; --with-activity opt-in adds coding time and tokens/hour |
| Want to share usage stats | tu img generates shareable image cards |
Install
npm (recommended)
cargo (crates.io)
pip (PyPI)
cargo-binstall (prebuilt binary)
Quick Start
# Daily report (default)
# Source-specific
# Date filter
# Weekly / monthly
# Native time views inferred from local AI usage
# Add locally inferred coding activity columns (Coding / Tok/hr)
# Native local heartbeat collector
# Live monitor (tabs: Codex / Claude / Antigravity)
# Real-time per-session viewer (htop for tokens)
# GUI dashboard
# Share image card (for social posting)
Benchmark Details
Setup:
- Machine: Apple M3 Max, macOS 15.6.1
tuversion:1.2.6·ccusageversion:18.0.8·@ccusage/codexversion:18.0.8- Default mode (no date filters, online pricing, network enabled)
Codex — 91 JSONL files, 1.7 GB (~/.codex/sessions)
tu codex |
bunx @ccusage/codex |
Speedup | |
|---|---|---|---|
| Cold (rebuild cache) | 0.92s | 20.76s | 22.6x |
| Warm (best of 5 / avg of 3) | 0.15s | 20.76s | 138x |
Claude — 1 521 JSONL files, 2.2 GB (~/.claude/projects)
tu claude |
bunx ccusage |
Speedup | |
|---|---|---|---|
| Cold (rebuild cache) | 0.73s | 17.15s | 23.5x |
| Warm (best of 5 / avg of 3) | 0.08s | 17.15s | 214x |
Results vary by hardware, filesystem cache state, and log volume.
For a detailed feature comparison, see tokenusage vs ccusage.
FAQ
Where does the data come from?
From local log directories and IDE probes:
- Claude:
~/.config/claude/projects,~/.claude/projects - Codex:
~/.codex/sessions,~/.config/codex/sessions - Antigravity: probed from running IDE language server (no log files needed)
You can override with --claude-projects-dir and --codex-sessions-dir.
How is cost estimated?
tu uses OpenRouter pricing when available, caches it for 6 hours, and falls back to built-in offline rates when network pricing is unavailable.
How does --with-activity work?
tu infers coding activity locally from your machine. By default it clusters nearby AI usage events into active windows. If you enable the native heartbeat collector (tu heartbeat watch ...), tu will prefer heartbeat-backed activity on days with sufficient heartbeat coverage and fall back to token-event inference elsewhere.
From that local activity signal, tu derives:
- coding time
- tokens per coding hour
- cost per coding hour
- project / language / source breakdowns
The dedicated time views (tu today, tu activity) enable this automatically. --with-activity adds the same local activity context to daily/weekly/monthly reports and tu live.
By default, tu keeps the original merged token report layout. The extra Coding / Tok/hr columns only appear when activity context is explicitly enabled with --with-activity, or when you use the dedicated time views.
Is my data private?
Yes for usage logs: parsing is local. tu only requests pricing metadata unless you run --offline.
Command Overview
tu [daily|today|activity|heartbeat|codex|claude|antigravity|monthly|weekly|img|session|blocks|live|top|statusline|gui]
Useful commands:
tu --tuitu --with-activity --tuitu daily --tuitu daily --jsontu daily --jq '.rows[0]'tu todaytu activity --days 14tu heartbeat watch .tu heartbeat statstu blocks --activetu blocks --livetu livetu img --output tokenusage-share.png(today, hourly)tu img --period weekly --output tokenusage-week.png(7 days, daily)tu img --logo ./logo.png --brand-url tokenusage.devtu statusline
Config File
Config search order:
./.tu/tu.json~/.config/tu/tu.json~/.config/tokenusage/tokenusage.json
Use an explicit config file:
Example:
Pricing
Offline-only mode:
Demo Dataset (No Real Data)
Development
License
MIT. See LICENSE.