Claude Code usage dashboard across multiple devices
Project description
claude-multi-usage (cmu)
CLI dashboard for Claude Code usage tracking across multiple devices.
Parses local ~/.claude data and displays usage stats in your terminal — sessions, tokens, projects, models, and more. Supports multi-device sync via a central server.
Install
Homebrew (macOS)
brew tap hunknownn/tap
brew install claude-multi-usage
pipx
pipx install claude-multi-usage
Usage
cmu # Full dashboard (last 14 days)
cmu today # Today's realtime usage
cmu projects # Usage by project (sorted by output tokens)
cmu projects -n 5 # Top 5 projects only
cmu models # Usage by model
cmu cost # Monthly cost breakdown
cmu dashboard -d 30 # Last 30 days
cmu dashboard --from 2026-03-01 --to 2026-03-07 # Date range
cmu diff # All devices (per-device view, via sync server)
cmu diff --merged # All devices (merged into one view)
cmu diff --key my-key # Filter by specific key
cmu config show # Show current configuration
claude-multi-usage also works as a command alias.
Multi-Device Sync
Collect usage data from multiple machines into a central server.
Server Setup
Choose one of the following:
Docker (recommended)
docker run -d -p 8000:8000 -v cmu-data:/data ghcr.io/hunknownn/claude-multi-usage:latest
Kubernetes
kubectl create namespace cmu-server
kubectl apply -k https://github.com/hunknownn/claude-multi-usage/deploy/k8s/ -n cmu-server
To expose via Ingress (optional):
curl -O https://raw.githubusercontent.com/hunknownn/claude-multi-usage/main/deploy/k8s/ingress.example.yaml
# Edit the file — replace your-domain.example.com with your domain
kubectl apply -f ingress.example.yaml -n cmu-server
pip
pip install claude-multi-usage[server]
cmu server start --host 0.0.0.0 --port 8000
Client Setup
# Set server URL and key (once per device)
cmu config server https://your-server.com
cmu config key add my-key "personal usage"
# Set device alias (optional, for readable display names)
cmu config alias macbook-air
# Sync usage data
cmu sync
# View all devices' usage
cmu diff # Per-device view
cmu diff --merged # Merged into one view
cmu diff --key my-key # Filter by specific key
Keys are used to group devices. Only devices with the same key can see each other's data. Local commands (
cmu dashboard,cmu today,cmu cost, etc.) work without keys.
Auto Sync
Add to ~/.zshrc to sync automatically when using Claude:
cc() {
cmu sync --quiet &>/dev/null &
command claude "$@"
cmu sync --quiet &>/dev/null &
}
The function name
ccis just an example — you can use any name you prefer (e.g.,cl,claude-sync). If you already havealias cc="claude"in your shell config, replace it with the function above and remove the alias line to avoid conflicts.
Dashboard Preview
cmu dashboard (local)
── Claude Usage Dashboard ── my-macbook.local ── 2026-03-07 ──
╭──────────── Summary ────────────╮ ╭──────────── Model Usage ─────────────────────╮
│ Hostname my-macbook │ │ Model Output Cache Read Cost │
│ Total Sessions 132 │ │ claude-opus-4-6 780K 519M $1,200 │
│ Total Messages 35,330 │ │ claude-sonnet 867K 424M $348 │
│ First Session 2026-01-15 │ ╰──────────────────────────────────────────────╯
│ Output Tokens 1.6M │
│ Estimated Cost $1,548 │
╰─────────────────────────────────╯
╭──────────────── Daily Tokens (last 14 days) ─────────────────╮
│ 02-23 ████░░░░░░░░░░░░░░░░ 60.3K (1233 msgs, 9 sess) │
│ 02-24 █░░░░░░░░░░░░░░░░░░░ 24.8K (909 msgs, 4 sess) │
│ 03-03 ███████░░░░░░░░░░░░░ 96.6K (633 msgs, 4 sess) │
╰──────────────────────────────────────────────────────────────╯
╭──────────────── Hourly Sessions (all time) ──────────────────╮
│ 00 01 02 .. 09 10 .. 16 17 18 19 20 21 22 23 │
│ ▒▒ ░░ ░░ ░░ ▒▒ ▓▓ ▒▒ ░░ ▒▒ ▓▓ ▓▓ ██ ▓▓ │
╰──────────────────────────────────────────────────────────────╯
╭──────────────── Top Projects ──────────────────────────────────────╮
│ 1. apr-backend-assignment 45 sessions 120.5K out 2026-02-10 │
│ 2. wemade-assignment 23 sessions 85.2K out 2026-03-04 │
│ 3. url-jarvis 17 sessions 42.1K out 2026-03-07 │
╰────────────────────────────────────────────────────────────────────╯
cmu diff (multi-device, per-device view)
── Claude Diff Dashboard ── 2 devices ── 2026-03-07 ──
────────────── donghun (macbook-air.local) ──────────────────
╭──── Summary ────╮ ╭──── Model Usage ────╮
│ Hostname ... │ │ Model Output .. │
│ Sessions 132 │ │ opus 780K .. │
╰─────────────────╯ ╰────────────────────╯
╭──── Daily Tokens (last 14 days) ────╮
│ 03-03 ████████████████████ 96.6K │
╰─────────────────────────────────────╯
╭──── Top Projects ───╮
│ ... │
╰──────────────────────╯
──────────────────── office-desktop.local ───────────────────
╭──── Summary ────╮ ╭──── Model Usage ────╮
│ ... │ │ ... │
╰─────────────────╯ ╰────────────────────╯
╭──── Daily Tokens ───╮
╭──── Top Projects ───╮
Devices with an alias show as
alias (hostname). Devices without an alias show hostname only. Hourly heatmap is omitted in diff view (cumulative data is not synced).
Cost Estimation
Calculates estimated API costs using LiteLLM's pricing DB (2,600+ models). Pricing is auto-fetched and cached locally for 24 hours.
- Supports tiered pricing (200K+ token extended context)
- Subagent (haiku) usage included
- Deduplicates streaming message blocks
- Falls back to last cached pricing when offline
╭──────────── Cost Breakdown (by month) ────────────╮
│ Month Model Cost │
│ 2026-02 claude-opus-4-6 $236.27 │
│ claude-sonnet-4-5 $50.66 │
│ subtotal $286.93 │
│ │
│ 2026-03 claude-opus-4-6 $30.21 │
│ subtotal $30.21 │
│ │
│ Total $317.14 │
╰────────────────────────────────────────────────────╯
How It Works
Reads local Claude Code data from ~/.claude/:
stats-cache.json— daily activity, model tokens, hourly countsprojects/**/*.jsonl— session files per project (including subagents)
No API keys required. Local data stays local unless you opt in to sync.
Roadmap
- Multi-device sync via central server (#2)
- Accurate cost estimation with incremental caching (#5)
- Key-based device grouping with alias support (#8, #11)
-
cmu diff— multi-device per-device/merged view (#11) - Homebrew support
- Web dashboard (#3)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claude_multi_usage-0.7.1.tar.gz.
File metadata
- Download URL: claude_multi_usage-0.7.1.tar.gz
- Upload date:
- Size: 26.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdfece9cb84939322a1a2eb3e8e4f0ceddaf1c2034aef75b0a58db97f36867c7
|
|
| MD5 |
352a241a520ac111f5167b708c24120b
|
|
| BLAKE2b-256 |
45025fd678b739040cdf5333bb83787492cd6f67dfda87fedc3be4290f0f28d8
|
Provenance
The following attestation bundles were made for claude_multi_usage-0.7.1.tar.gz:
Publisher:
release.yml on hunknownn/claude-multi-usage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claude_multi_usage-0.7.1.tar.gz -
Subject digest:
fdfece9cb84939322a1a2eb3e8e4f0ceddaf1c2034aef75b0a58db97f36867c7 - Sigstore transparency entry: 1057014061
- Sigstore integration time:
-
Permalink:
hunknownn/claude-multi-usage@e3a05c579114833b737a94e26fabca9100f43f12 -
Branch / Tag:
refs/tags/v0.7.1 - Owner: https://github.com/hunknownn
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e3a05c579114833b737a94e26fabca9100f43f12 -
Trigger Event:
push
-
Statement type:
File details
Details for the file claude_multi_usage-0.7.1-py3-none-any.whl.
File metadata
- Download URL: claude_multi_usage-0.7.1-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1e28356794f7f98999cee7d71d910a9d115ef30fe1d33bf2820062601fac338
|
|
| MD5 |
c7bc16f9b26847687549e0210f5844ef
|
|
| BLAKE2b-256 |
e0650dc22800159a06090fddb144270a41a1145e803d47651d0ea05f7a8d8b21
|
Provenance
The following attestation bundles were made for claude_multi_usage-0.7.1-py3-none-any.whl:
Publisher:
release.yml on hunknownn/claude-multi-usage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claude_multi_usage-0.7.1-py3-none-any.whl -
Subject digest:
c1e28356794f7f98999cee7d71d910a9d115ef30fe1d33bf2820062601fac338 - Sigstore transparency entry: 1057014062
- Sigstore integration time:
-
Permalink:
hunknownn/claude-multi-usage@e3a05c579114833b737a94e26fabca9100f43f12 -
Branch / Tag:
refs/tags/v0.7.1 - Owner: https://github.com/hunknownn
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e3a05c579114833b737a94e26fabca9100f43f12 -
Trigger Event:
push
-
Statement type: