token-monitor README

The project's README from github.com/Javis603/token-monitor. As one markdown file: README.md.

EN | 简 | 繁 | KO | JA | PT

Token Monitor logo

Token Monitor

One live dashboard for every AI coding tool, synced across every machine.

Latest release Total downloads Windows 10 or later macOS 12 or later Linux x64 Discord License: MIT

What is Token Monitor?

A desktop widget that shows live token usage and AI Tool Limits across 44+ AI coding tools — Claude Code, Codex, Cursor, GitHub Copilot, Cherry Studio, and more — with real-time multi-device sync, historical usage trends, and breakdowns by tool, device, model, session, or project.

Supported Tools

Token Monitor supports token usage, account-limit checks, and session details separately:

Logo Tool Data path Token Usage AI Tool Limits Session Details
Claude Code Claude Code ~/.claude/projects/, ~/.claude/transcripts/ ✅ ✅ ✅
Codex Codex ~/.codex/ (sessions/, archived_sessions/) ✅ ✅ ✅
OpenCode OpenCode ~/.local/share/opencode/ (opencode*.db, storage/message/) ✅ ✅ ✅
Hermes Agent Hermes Agent ~/.hermes/state.db ✅ — —
OpenClaw OpenClaw ~/.openclaw/agents/ ✅ — —
Cursor Cursor IDE / Cursor CLI / Grok Bot ~/.config/tokscale/cursor-cache/ (account-level usage export) ✅ ✅ —
Antigravity Antigravity ~/.gemini/ (antigravity/, antigravity-ide/, antigravity-backup/, antigravity-cli/conversations/) ✅ ✅ —
Cline Cline VS Code globalStorage tasks (.../saoudrizwan.claude-dev/tasks/), ~/.cline/data/sessions/ ✅ ✅ —
Amp Amp ~/.local/share/amp/threads/ ✅ — —
Factory Droid Factory Droid ~/.factory/sessions/ ✅ ✅ —
Kimi Kimi CLI / Kimi Code / Kimi Work ~/.kimi/sessions/, ~/.kimi-code/sessions/, <platform-app-data>/kimi-desktop/ ✅ ✅ —
Qwen Qwen CLI ~/.qwen/projects/ ✅ — —
Grok Build Grok Build ~/.grok/ (sessions/, logs/unified.jsonl) ✅ ✅ —
GitHub Copilot GitHub Copilot VS Code workspaceStorage/*/chatSessions/, ~/.copilot/ (otel/, data.db, session-store.db) ✅ ✅ —
Pi Pi ~/.pi/agent/sessions/ ✅ — —
Oh My Pi Oh My Pi ~/.omp/agent/sessions/ ✅ — —
Zed Zed ~/.local/share/zed/threads/threads.db ✅ ✅ —
Kilo Kilo ~/.local/share/kilo/kilo.db; VS Code globalStorage tasks (.../kilocode.kilo-code/tasks/) — extension logs on Linux & remote/WSL only ✅ — —
Command Code Command Code ~/.commandcode/projects/**/*.jsonl ✅ ✅ —
MiMo MiMo Code / MiMo Desktop ~/.local/share/mimocode/mimocode.db ✅ ✅ —
Muse Code Muse Code ~/.local/share/muse/sessions/ ✅ — —
ZCode ZCode / GLM ~/.zcode/ (projects/, cli/db/db.sqlite) ✅ ✅ —
Kiro Kiro ~/.kiro/sessions/cli/, Kiro IDE globalStorage & kiro-cli DB ✅ ✅ —
CodeBuddy CodeBuddy ~/.codebuddy/projects/ + IDE / VS Code extension logs ✅ — ✅
WorkBuddy WorkBuddy ~/.workbuddy/projects/, ~/.workbuddy/workbuddy.db ✅ ✅ ✅
Proma Proma ~/.proma/agent-sessions/*.jsonl ✅ — —
CatPaw CatPaw <platform-app-data>/ (catpaw-moon/, catpaw-overseas/, catpaw-memory-*.db) ✅ — —
Qoder Qoder ~/.qoder-cn/projects/**/*.jsonl, legacy <platform-app-data>/QoderCN/SharedClientCache/cache/db/local.db (CN only) ✅ ✅ —
Reasonix Reasonix ~/.reasonix/ (stats/, sessions/, projects/*/sessions/) ✅ — —
DeepSeek DeepSeek / DeepSeek Harness ~/.dsh/sessions/ (session.jsonl, session.jsonl.zstd) ✅ ✅ ✅
Cherry Studio Cherry Studio <platform-app-data>/CherryStudio/ (Data/Agents/.claude/projects/ V2, .claude/projects/ legacy) ✅ — —
LM Studio LM Studio ~/.lmstudio/server-logs/**/*.log ✅ — —
Unsloth Unsloth Studio ~/.unsloth/studio/studio.db ✅ — —
Devin Devin CLI / Devin Desktop ~/.local/share/devin/cli/sessions.db, <platform-app-data>/Devin/User/acp-events/ ✅ ✅ —
fx fx ~/.fx/sessions/ ✅ — —
MiniMax MiniMax / MiniMax Code ~/.minimax/v2/sessions/ ✅ ✅ —
TypeSafe TypeSafe TypeSafe Console Cookie (billing balance and estimated token spend via usage data) — ✅ —
OpenRouter OpenRouter OpenRouter API key (usage/key limit; balance when credits access is authorized, documented for Management keys) — ✅ —
Volcengine Volcengine Ark API key or Volcengine AK/SK (Ark Coding Plan & Agent Plan quota via Volcengine API) — ✅ —
Ollama Ollama Ollama Cloud cookie (session/weekly usage via ollama.com/settings) — ✅ —
Trae CN Trae CN Trae CN access token (Trae CN / SOLO credits via trae.cn) — ✅ —
Alibaba Cloud Alibaba Cloud Alibaba Cloud console cookie (Bailian / Model Studio Token Plan quota, Team & Personal) — ✅ —
StepFun StepFun StepFun Oasis-Token (Coding Plan / Token Plan quota) — ✅ —
Third-party APIs Third-party APIs New API / Sub2API-compatible account presets (including compatible One API forks), a New API API-key preset, and a Custom balance endpoint — ✅ —
Notes, Custom balance endpoints, and data paths overridden by environment variables
  • Paths above are the defaults. Token Monitor follows the same environment overrides Tokscale does — $XDG_DATA_HOME for the ~/.local/share/ roots, and per-tool variables such as $CODEX_HOME, $GROK_HOME, $HERMES_HOME, $KIMI_CODE_HOME, $UNSLOTH_STUDIO_HOME, $LM_STUDIO_HOME, $DSH_HOME, $REASONIX_STATE_HOME, $REASONIX_HOME and the $CLINE_* family.

  • CatPaw is off by default; enable it in Settings → tools. It reads domestic and overseas assistant databases on macOS and Windows. See CatPaw source notes for paths and verification boundaries.

  • LM Studio tracking currently covers OpenAI-compatible /v1/chat/completions and /v1/responses requests recorded in server logs. Conversations started from LM Studio's built-in Chat UI and native /api/v1/chat requests are not included.

  • Unsloth Studio tracks inference usage from studio.db: Studio chats and its local API. Local inference has zero API cost; recognized metered providers use Tokscale's price estimates. Training tokens are not included. See Unsloth source notes.

  • Devin tracks Devin CLI sessions from the local sessions.db and Devin Desktop agent sessions from acp-events ACP logs; where both cover the same session the CLI database is authoritative. Desktop coverage depends on the connected ACP agent: only agents that write usage_update events locally are counted, and Devin Desktop's default devin-cloud agent meters its usage server-side, so a default Desktop setup reports no Desktop tokens. Session titles and project attribution come from the CLI database. See Devin source notes.

  • MiniMax Code reads the local session history the CLI writes, under ~/.minimax or MINIMAX_DATA_DIR / MAVIS_DATA_DIR (also ~/.mavis and ~/.minimax-<profile> / ~/.mavis-<profile>), plus runs captured with tokscale headless mcode; a turn found in both counts once.

  • Command Code transcripts do not contain actual token counts or per-message model metadata. Token usage is estimated from transcript text, while model attribution and derived cost may reflect the currently configured model rather than the model historically used for each request.

  • The Cursor cache comes from Cursor's account-level usage export, so it covers usage from Cursor IDE, Cursor CLI, and Grok Bot. Token Monitor automatically detects accounts signed in through the Cursor desktop app and also supports adding accounts manually in Settings. The cache re-syncs automatically when stale, but newly finished sessions can take a few minutes to reach Cursor's dashboard, so recent usage may still appear with a delay.

  • Custom maps numeric JSON fields from one GET balance endpoint; OpenAI or Anthropic compatibility alone is not enough.

  • Qoder CN is off by default; enable it in Settings → tools. Current sessions are JSONL under ~/.qoder-cn/projects (TOKEN_MONITOR_QODER_CN_PROJECTS_PATH, then QODERCN_CONFIG_DIR/projects); older builds used a SQLite database, overridable with TOKEN_MONITOR_QODER_CN_DB_PATH. An unreadable source keeps its last complete read. Legacy database sessions record only a project name, so they appear without a project. Plan-billed JSONL rows that report credits but no token counts are omitted from token totals; those credits stay in AI Tool Limits, and BYOK rows with measured tokens are counted. See Qoder source notes.

Showcase

Home View
Customizable dashboard — choose which modules show and their order
Limits View
Multiple accounts side by side, one-click switch of the active Codex account
Tools View
Click any tool to expand input / output and cache-hit detail
Session View
Open a single session to break each prompt into tokens and tools used
Models View
Every model's usage and cost, aggregated across tools
Devices View
Each device's usage, cost, and sync status — expand for per-machine detail
Usage Dashboard Overview
A year of activity heatmap and streaks, aggregated across all devices
Usage Dashboard Trends
A year of daily trends, stacked by tool / model, with K-line

Why Token Monitor?

Most usage monitors are useful on the machine they run on. Token Monitor is built for multi-device work: each device watches its own local logs, sends summary updates to your hub, and every connected widget sees token changes almost immediately.

Features

Tracking usage

Multi-device & deployment

Interface & surfaces

Installation

On macOS, install through the official Homebrew Cask:

brew install --cask token-monitor

Or download from GitHub Releases.

Packaged builds check GitHub Releases automatically. When an update is available, the app shows an update indicator; supported platforms can also install from Settings → General.

First run

Local mode is the default: launch the app and it starts tracking this device. No hub, agent, or config required.

Multi-device sync

Pick ONE multi-device sync backend for your devices (and any headless agents). On each device, open the widget and pick a mode under Settings → Multi-device Sync. The widget contributes this device's usage automatically; run the headless agent only on machines without a widget. iCloud Drive is a macOS-widget-only option and does not support headless agents.

Option A — Host the hub from the widget (easiest, no CLI)

In the widget on one always-on machine, open Settings → Multi-device Sync and pick Host hub on this device. The widget generates a random secret and lists the LAN URLs other devices can connect to (Tailscale or ZeroTier addresses appear here too). On every other device, pick Connect to a hub and paste the URL + secret.

The hub runs while Token Monitor is running — quitting (not just closing the window) stops it for all connected devices.

Option B — Self-hosted Node hub (always-on headless machine)

# on the always-on machine
cp .env.example .env
# set TOKEN_MONITOR_SECRET to something private, then:
npm run hub

Option C — Cloudflare Worker hub (across networks, including iPhone)

Deploy to Cloudflare

One-click deploy — Cloudflare will prompt for the TOKEN_MONITOR_SECRET during setup. Or deploy manually:

cd worker
npm install
npx wrangler login
npx wrangler secret put TOKEN_MONITOR_SECRET
npx wrangler deploy

Paste the deployed URL into each device's widget at Settings → Multi-device Sync. See worker/README.md for the iOS widget recipe and endpoint reference, or docs/API.md for the hub HTTP API.

Option D — iCloud Drive (macOS, no Hub server)

On each Mac signed into the same Apple ID, choose iCloud Drive in Settings → Multi-device Sync. This is an opt-in macOS-only path: Token Monitor writes one atomic snapshot per device and one subscription snapshot per writer under iCloud Drive/Token Monitor/sync-v1/, then each Mac aggregates the valid files locally. It uses no Token Monitor server, CloudKit, or credentials; provider API keys, cookies, and tokens stay local. iCloud Drive is eventually consistent, so another Mac may take a moment to appear or update, and a missing or malformed file never clears the last-good aggregate.

Headless agent

Run the headless agent on servers, SSH hosts, or inside WSL — anywhere you use AI tools without the desktop widget. It collects usage on that machine and posts it to your hub (Option A, B, or C). Requires Node.js 22.15+ and git.

git clone https://github.com/Javis603/token-monitor.git
cd token-monitor
npm ci
cp .env.example .env              # set TOKEN_MONITOR_HUB_URL, TOKEN_MONITOR_SECRET, and a unique TOKEN_MONITOR_DEVICE_ID
npm run agent                     # run continuously

See docs/headless-agent.md for running it as a service, updating, uninstalling, and troubleshooting. For SQLite-backed tools inside WSL, follow the WSL SQLite setup.

App data

App state lives in the OS user-data dir — delete it along with the app to fully uninstall.

Platform Path
macOS ~/Library/Application Support/Token Monitor/
Windows %APPDATA%/Token Monitor/
Linux ~/.config/Token Monitor/

Build from source

To build your own installer, use Node.js 22.15+ on the target OS (electron-builder can't cross-build a macOS .dmg on Windows, or vice-versa).

npm install
npm run dist:mac     # macOS arm64 .dmg           → dist/
npm run dist:mac:x64 # macOS Intel x64 .dmg       → dist/
npm run dist:win     # Windows x64 installer .exe → dist/
npm run dist:linux   # Linux x64 AppImage         → dist/
npm run pack         # unpacked app dir (no installer), for quick local testing

Output lands in dist/. Windows and Linux use the matching dist:* script above on the target OS. Packaging the macOS release build requires a local Developer ID Application signing identity; use npm start for local development or unsupported platforms.

Runtime and packaging scripts explicitly ensure the pinned tokscale binary on every target with a vendored build. Other source platforms keep the npm binary and filter clients it does not support; npm install, lint, and tests do not download it.

How it works

Mode A — Local (default, no setup)
    widget (Electron) ──▶ tokscale ──▶ ~/.claude, ~/.codex, $HERMES_HOME

Mode B — Sync (opt-in, multi-device)
    device A widget ──▶
    device B widget ──▶  hub  ──▶  widget on any device
    device C agent  ──▶

The widget chooses local vs sync mode based on Settings → Multi-device Sync. The hub itself can run as a separate npm run hub process, a Cloudflare Worker, or directly inside one of the widgets (Host mode). In Hub Client and Host modes, the hub pushes aggregated stats to every connected widget over Server-Sent Events, so updates on one device usually appear on the others within a few seconds. iCloud Drive mode syncs files directly; propagation is eventually consistent and may take longer.

Session data retention

With Preserve deleted session usage enabled (Settings → Collection), Token Monitor archives observed daily tool/model usage locally with no time limit — so even after a source tool prunes its own sessions, the heatmap and trends are unaffected.

Advanced: extend the source tool's own retention

The heatmap and sync payload use a rolling 370-day window (older observations remain available locally for future views). Claude Code keeps only 30 days of transcripts by default (cleanupPeriodDays); to keep the full rolling year before the archive kicks in, raise it in ~/.claude/settings.json before the window passes:

{
  "cleanupPeriodDays": 370
}

A larger value keeps more, at the cost of transcripts living on disk for as long as you set. tokscale's Session Data Retention table covers the other tools' defaults and config paths.

This archive only covers days Token Monitor has already observed; data deleted before it started tracking cannot be recovered.

Settings

There are two places to configure Token Monitor; day-to-day use only needs the first:

See the configuration reference for every setting and all environment variables.

Privacy

Token Monitor processes usage logs locally and sends no analytics or telemetry to the project maintainer. Network access occurs only for documented or user-enabled features. See the privacy policy for the data used by updates, provider integrations, Discord Rich Presence, and optional multi-device sync.

Star History

Star History Chart

Contributing

Issues and PRs are welcome. Project conventions, architecture notes, and the command reference live in AGENTS.md — written for coding agents, but it doubles as the contributor guide.

Acknowledgments

License

MIT © @Javis

token-monitor (Javis603/token-monitor)

Searching Database…

这是干什么用的?一个桌面小组件,实时显示 44 款以上 AI 编程工具的 token 用量和 AI 工具额度——包括 Claude Code、Codex、Cursor、GitHub Copilot、Cherry Studio 等——支持多设备实时同步、历史用量趋势,并可按工具、设备、模型、会话或项目分别查看。
它是本地应用还是云服务?它是本地优先的桌面小组件,不是云服务:它直接读取你电脑上的本地日志文件和数据库,只有通过自建 hub 才会在你自己的设备之间同步(可选)。
怎么让它跑起来?启动桌面小组件后,它会自动扫描各支持工具的默认本地数据路径,比如 ~/.claude/projects/ 或 ~/.codex/;只用本地记录功能时无需登录。如果你的会话文件夹不在默认位置,也可以手动指定额外的文件夹。
用之前需要 API key 或账号吗?读取 Claude Code、Codex 这类工具的本地用量不需要任何账号;但有些服务商层面的额度查询(OpenRouter、Volcengine、Ollama Cloud、Trae CN、Alibaba Cloud、StepFun)需要对应服务商的 API key 或会话 cookie。
对每个工具的统计都一样准吗?不是——部分集成只能估算用量:Command Code 的会话记录里没有真实的 token 数,所以用量是根据记录文本估算的,模型归属也可能按当前配置的模型来算,而不是每次请求实际使用的那个。
支持哪些操作系统?支持 macOS、Windows 和 Linux;在 Windows 上还能自动检测正在运行的 WSL 发行版,并合并其中基于文件的用量数据。
我的会话数据会被上传到哪里吗?不会——每次会话的详细数据都是按需直接从你本地的会话记录或数据库读取的,永远不会同步;只用单设备的话甚至完全不需要服务器。
多设备同步具体是怎么实现的?每台设备监控自己的本地日志,并通过 Server-Sent Events 把汇总更新推送到自建的 hub,所有已连接的小组件几秒内就能看到 token 变化;也支持 iCloud Drive 同步,但那种方式只能做到最终一致。
如果工具删掉了旧的会话文件会怎样?很多工具(比如 Claude Code)默认会在 30 天后清理会话记录。Token Monitor 可以在本地保存观察到的每日用量,这样即使源文件被删了,热力图和趋势数据依然保留。
我能导出自己的用量数据吗?可以。用量能导出为不依赖具体工具的 CSV 和 JSON,可以手动导出,也可以自动写入指定文件夹,方便在电子表格、Obsidian 或 Grafana 中使用。
能按我自己使用的货币显示费用吗?费用支持以 USD、TWD、HKD 或 CNY 显示,汇率每天自动更新,也可以在设置里手动修改。
Creator
Javis603
Size
57.5 MB
Stars
3.2K
Age
5mo
Commits · 90 Days