Skip to main content

Local token & cost dashboard for AI coding tools

Project description

English | 中文

Tokdash

Local token & cost dashboard for AI coding tools (Codex, OpenCode, Claude Code, Gemini CLI, OpenClaw, Kimi CLI, etc.).

FastAPI Python License

Features

  • Hierarchical breakdown: app -> model with full token precision
  • Multiple data sources: local session files + optional tokscale fallback
  • Exact token counts: Input/Output/Cache token breakdowns
  • Custom date ranges: Flatpickr date picker + quick range buttons (Today, Last 7 Days, This Month, etc.)
  • Contribution calendar: 2D heatmap + 3D isometric view with Tokens/Cost/Messages metrics
  • Session explorer: per-session drill-down for Codex, Claude Code, and OpenCode
  • 10 style themes: Elevated, Classic, Vibrant, Midnight, Paper, Liquid, Terminal, Brutalist, Arcade, Studio
  • Light & dark mode: auto-detects system preference, manual toggle
  • PWA support: installable as a progressive web app

Tokdash dashboard

Tokdash stats & heatmap

Supported clients

  • OpenCode: ~/.local/share/opencode/
  • Codex: ~/.codex/sessions/
  • Claude Code: ~/.claude/projects/
  • Gemini CLI: ~/.gemini/tmp/*/chats/session-*.json
  • OpenClaw: ~/.openclaw/agents/*/sessions/
  • Kimi CLI: ~/.kimi/sessions/*/*/wire.jsonl

Platform support

  • Linux (including WSL2): supported
  • macOS: experimental

Quick start

Prerequisites

  • Python 3.10+
  • One or more supported clients installed (above)

Install (pip)

pip install tokdash
tokdash serve

Open: http://localhost:55423

Run (from source)

pip install -e .

# Option A: run directly
python3 main.py

# Option B: CLI wrapper (same server)
./tokdash serve

Open: http://localhost:55423

If port conflicts:

  • python3 main.py --port <port>
  • ./tokdash serve --port <port>

If you want to access Tokdash from another device (recommended):

  • Tailscale Serve (private to your tailnet): tailscale serve 55423
  • SSH port-forward: ssh -L 55423:127.0.0.1:55423 <user>@<host>

Binding to 0.0.0.0 is possible, but not recommended: it listens on all interfaces and can expose the dashboard beyond your LAN (VPN/Wi-Fi/etc.). Only do this if you understand the risk and have firewall/auth in place.

Run in background

See docs/agents/systemd/BACKGROUND_RUN.md for:

  • Linux systemd (user service) template
  • macOS launchd (LaunchAgent) template

For Humans

Copy and paste this prompt to your LLM agent (Claude Code, AmpCode, Cursor, etc.):

Install and configure Tokdash to run in the background by following the instructions here:
https://raw.githubusercontent.com/JingbiaoMei/Tokdash/main/docs/agents/systemd/AGENTS.md

Or read the Background Run guide, but seriously, let an agent do it.

For LLM Agents

Fetch the installation guide and follow it:

curl -s https://raw.githubusercontent.com/JingbiaoMei/Tokdash/main/docs/agents/systemd/AGENTS.md

Updating Tokdash

If you installed Tokdash with pip and are running it via systemd:

# 1. Upgrade the package
pip install --upgrade tokdash

# 2. Restart the systemd service to pick up changes
systemctl --user daemon-reload
systemctl --user restart tokdash

# 3. Verify the new version
pip show tokdash | grep Version
systemctl --user status tokdash --no-pager

# 4. Test the API is responding
curl 'http://127.0.0.1:55423/api/usage?period=today'

View logs if needed:

journalctl --user -u tokdash -f

OpenClaw digest (scheduled reports)

Tokdash can power daily/weekly/monthly OpenClaw usage reports by querying the local API on a schedule.

For Humans

Copy and paste this prompt to your LLM agent (Claude Code, AmpCode, Cursor, etc.):

Install and configure scheduled Tokdash usage reports for OpenClaw by following the instructions here:
https://raw.githubusercontent.com/JingbiaoMei/Tokdash/main/docs/agents/openclaw_reporting/AGENTS.md

Or read the guide yourself, but seriously, let an agent do it.

For LLM Agents

Fetch the installation guide and follow it:

curl -s https://raw.githubusercontent.com/JingbiaoMei/Tokdash/main/docs/agents/openclaw_reporting/AGENTS.md

Configuration

Tokdash is localhost-only by default.

  • TOKDASH_HOST (default: 127.0.0.1)
  • TOKDASH_PORT (default: 55423)
  • TOKDASH_CACHE_TTL (default: 120 seconds)
  • TOKDASH_ALLOW_ORIGINS (comma-separated, default: empty)
  • TOKDASH_ALLOW_ORIGIN_REGEX (default allows only localhost/127.0.0.1)

Example (remote access via Tailscale Serve; recommended):

tokdash serve --bind 127.0.0.1 --port 55423
tailscale serve --bg 55423

Privacy & security

  • No telemetry: Tokdash does not intentionally send your data anywhere.
  • Local parsing: usage is computed from local session files (see "Supported clients" paths above).
  • Server exposure: Tokdash binds to 127.0.0.1 by default. Prefer Tailscale Serve or SSH tunneling for remote access; avoid --bind 0.0.0.0 unless you understand it listens on all interfaces and have firewall/auth in place.

API (local)

Tokdash is a local HTTP server. Common endpoints:

  • GET /api/usage?period=today|week|month|N
  • GET /api/usage?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD
  • GET /api/tools?period=... (coding tools only)
  • GET /api/openclaw?period=... (OpenClaw only)
  • GET /api/sessions?tool=codex|claude|opencode&period=...
  • GET /api/stats (contribution calendar & statistics)

Example:

curl 'http://127.0.0.1:55423/api/usage?period=today'

Cost Accuracy Note

Token counts depend on what each client logs locally. Costs are computed from src/tokdash/pricing_db.json and may lag real provider pricing — use as an estimate and verify against your billing source if it matters.

Roadmap

See docs/ROADMAP.md.

Contributing / security

  • Contributing guide: docs/CONTRIBUTING.md
  • Security policy: docs/SECURITY.md

Project structure

tokdash/
├── main.py                 # Source entrypoint (python3 main.py)
├── tokdash                 # Source CLI wrapper (./tokdash serve)
├── src/
│   └── tokdash/
│       ├── cli.py
│       ├── api.py                # FastAPI routes/app
│       ├── compute.py            # Aggregation/merging logic
│       ├── dateutil.py           # Shared date-range parsing
│       ├── sessions.py           # Session explorer logic
│       ├── pricing.py            # PricingDatabase wrapper
│       ├── assets.py             # Static asset management
│       ├── model_normalization.py
│       ├── pricing_db.json
│       ├── sources/
│       │   ├── openclaw.py       # OpenClaw session log parser
│       │   └── coding_tools.py   # Local coding tools parsers
│       └── static/
│           ├── index.html        # Single-page dashboard
│           ├── theme-config.js   # Theme palettes & heatmap colors
│           └── themes.css        # Per-theme CSS overrides
└── docs/                   # Roadmap + background-run docs + agent prompts

License

MIT License - 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

tokdash-0.2.2.tar.gz (94.3 kB view details)

Uploaded Source

Built Distribution

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

tokdash-0.2.2-py3-none-any.whl (90.5 kB view details)

Uploaded Python 3

File details

Details for the file tokdash-0.2.2.tar.gz.

File metadata

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

File hashes

Hashes for tokdash-0.2.2.tar.gz
Algorithm Hash digest
SHA256 887c003e179cb2e3c8fb921cd3f7ca1a2339980a77a77f5c17d4d96971f6f4ab
MD5 d2b28b9c610a95017db11c34adbc7b42
BLAKE2b-256 6c8b761ddc46ae6270217d5cee2ce70d985c3268638f091e6cafa8a4e68a33c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for tokdash-0.2.2.tar.gz:

Publisher: publish-pypi.yml on JingbiaoMei/Tokdash

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

File details

Details for the file tokdash-0.2.2-py3-none-any.whl.

File metadata

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

File hashes

Hashes for tokdash-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8409516c93e25314b8f35b62552c82b5a1ca1203c32c02e739d5ee3fca5431ea
MD5 50bd841504289afccc51144e643dc4c8
BLAKE2b-256 d69fa226a0541ffbb8a990afd188f29ec7ea298ecf53887e76e40228d7359658

See more details on using hashes here.

Provenance

The following attestation bundles were made for tokdash-0.2.2-py3-none-any.whl:

Publisher: publish-pypi.yml on JingbiaoMei/Tokdash

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