Skip to main content

Local dashboard for Claude Code token usage, sessions, and cost estimates. Dark UI.

Project description

claudepulse

License: MIT claude-code PyPI

A live pulse on your Claude Code usage. Tokens, sessions, cost — in a dark dashboard that actually reads well.

Claude Code writes detailed usage logs locally — token counts, models, sessions, projects — regardless of your plan. claudepulse reads those logs and turns them into charts and cost estimates. Works on API, Pro, and Max plans.

claudepulse dashboard


What this tracks

Works on API, Pro, and Max plans — Claude Code writes local usage logs regardless of subscription type. claudepulse reads them and gives you visibility the official UI does not.

Captures usage from:

  • Claude Code CLI (claude command in terminal)
  • VS Code extension (Claude Code sidebar)
  • Dispatched Code sessions (sessions routed through Claude Code)

Not captured:

  • Cowork sessions — these run server-side and do not write local JSONL transcripts

Requirements

  • Python 3.8+
  • No third-party packages — uses only the standard library (sqlite3, http.server, json, pathlib)

Anyone running Claude Code already has Python installed.

Install

Pick one. All three give you a working claudepulse command.

1. One-liner installer (macOS / Linux) — recommended

curl -fsSL https://raw.githubusercontent.com/ColdDesertLab/claudepulse/main/install.sh | bash
claudepulse

Clones to ~/.claudepulse, drops a launcher in ~/.local/bin/claudepulse, and auto-pulls origin/main on every run. Disable auto-update with CLAUDEPULSE_NO_UPDATE=1. Override paths with CLAUDEPULSE_HOME and CLAUDEPULSE_BIN.

2. pipx (cross-platform)

pipx install claudepulse
claudepulse

Or straight from GitHub:

pipx install git+https://github.com/ColdDesertLab/claudepulse

Upgrade with pipx upgrade claudepulse.

3. Manual clone (no install)

git clone https://github.com/ColdDesertLab/claudepulse
cd claudepulse
python3 cli.py dashboard      # macOS / Linux
python  cli.py dashboard      # Windows

No third-party packages required — pure Python stdlib.


Usage

claudepulse                # scan + open browser dashboard at http://localhost:8080
claudepulse scan           # scan JSONL files and update database
claudepulse today          # today's usage summary by model
claudepulse stats          # all-time statistics
claudepulse --version

The scanner is incremental — it tracks each file's path and modification time, so re-running scan is fast and only processes new or changed files.


Design

The dashboard uses a Linear-inspired dark theme — near-black canvas (#08090a), semi-transparent white borders, Inter Variable at weight 510, indigo-violet accent for interactive elements only. Built to be read for long stretches.


How it works

Claude Code writes one JSONL file per session to ~/.claude/projects/. Each line is a JSON record; assistant-type records contain:

  • message.usage.input_tokens — raw prompt tokens
  • message.usage.output_tokens — generated tokens
  • message.usage.cache_creation_input_tokens — tokens written to prompt cache
  • message.usage.cache_read_input_tokens — tokens served from prompt cache
  • message.model — the model used (e.g. claude-sonnet-4-6)

scanner.py parses those files and stores the data in a SQLite database at ~/.claude/usage.db.

dashboard.py serves a single-page dashboard on localhost:8080 with Chart.js charts (loaded from CDN). It auto-refreshes every 30 seconds and supports model filtering with bookmarkable URLs.


Cost estimates

Costs are calculated using Anthropic API pricing as of April 2026 (claude.com/pricing#api).

Only models whose name contains opus, sonnet, or haiku are included in cost calculations. Local models, unknown models, and any other model names are excluded (shown as n/a).

Model Input Output Cache Write Cache Read
claude-opus-4-6 $6.15/MTok $30.75/MTok $7.69/MTok $0.61/MTok
claude-sonnet-4-6 $3.69/MTok $18.45/MTok $4.61/MTok $0.37/MTok
claude-haiku-4-5 $1.23/MTok $6.15/MTok $1.54/MTok $0.12/MTok

Note: These are API prices. If you use Claude Code via a Max or Pro subscription, your actual cost structure is different (subscription-based, not per-token).


Files

File Purpose
scanner.py Parses JSONL transcripts, writes to ~/.claude/usage.db
dashboard.py HTTP server + single-page HTML/JS dashboard
cli.py scan, today, stats, dashboard commands
install.sh One-liner installer + auto-updating launcher
pyproject.toml Packaging metadata for pip / pipx / PyPI

License

MIT — see LICENSE.

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

claudepulse-1.1.0.tar.gz (29.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claudepulse-1.1.0-py3-none-any.whl (30.5 kB view details)

Uploaded Python 3

File details

Details for the file claudepulse-1.1.0.tar.gz.

File metadata

  • Download URL: claudepulse-1.1.0.tar.gz
  • Upload date:
  • Size: 29.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for claudepulse-1.1.0.tar.gz
Algorithm Hash digest
SHA256 6e7b391cb9d8e38ae42a7d3a565f7e1b21a3d60bf92570a0727f6bd239b1f103
MD5 80f58600ccceb5a45973b00616e12ffe
BLAKE2b-256 a79eb7826b4e91fdaff22964cce19a47aa8e0f2129f48124cd6f7382c26e872d

See more details on using hashes here.

Provenance

The following attestation bundles were made for claudepulse-1.1.0.tar.gz:

Publisher: release.yml on ColdDesertLab/claudepulse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file claudepulse-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: claudepulse-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 30.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for claudepulse-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 99a63916ab82e87fa76dfb5afdefec0d02e999c6e2839f02dc64d1dcd26d4b53
MD5 e877edadba2b2c9c372e8e2a3fc9a14b
BLAKE2b-256 dea5c6a32b22ae7f670f8d27539e8e9a5eeb16cfd04e0f9fce5c6eb297cb01e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for claudepulse-1.1.0-py3-none-any.whl:

Publisher: release.yml on ColdDesertLab/claudepulse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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