⚡ Powered by MyGo!
English · 简体中文
Install · Screenshots · Supported tools · Plan quotas · Pricing · Privacy · CLI · Contributing
What did your AI coding cost today, and how much plan quota is left? MyToken!!!!! reads the session logs your AI coding tools already write to disk, prices every request at the official API list price, and shows today's and this month's spend, your plan quotas and what is running right now — in a native desktop app, a menu-bar panel, or the command line. Everything stays on your machine.
- Thirty-three harnesses in one window — Claude Code, Codex CLI, DSH, pi, Gemini CLI, opencode, Crush, Cline, Roo Code, Kilo Code, Claude Desktop, WorkBuddy, CodeBuddy, Hermes, Qwen Code, Kimi, OpenClaude, Grok, OpenClaw, Droid, Goose, Forge, Amp, Kiro, Zed, Antigravity, Codebuff, Mux, ZCode, MiniMax Code, MiMo Code, Step Code and Trae.
- Session × provider × model — the five token classes kept apart (input, output, cache read, cache write, reasoning), with cache-hit rate, per-project and per-day breakdowns, and sub-agent trees.
- API-equivalent cost — models.dev prices with a LiteLLM fallback, labelled as what the same tokens would cost at list price. Add your own per-model prices when a plan or gateway differs; there are no provider multipliers or inferred discounts.
- Spend first — today's cost in big type, the month so far with a forecast, daily spend stacked by tool, and rankings by cost.
- Plan quotas — Codex, Claude, Cursor, Copilot, GLM, Trae, WorkBuddy, Qoder, ZCode and your DeepSeek API balance, fetched from each provider and detected automatically. Usage windows show the share used and when they reset; credit balances show what is left and how many days that buys.
- Live sessions — what is running right now, with its cost so far, spend per hour, cache hit rate and an estimated output speed.
- Menu bar — today's spend (or spend per hour, cache hit rate, quota) beside the icon; the panel shows today, the sessions running now and every quota.
- CLI for scripts —
mytokenprints today's and this month's cost;mytoken dailyprints a ccusage-style table with each cache class in its own column. - Native, small, fast — built with MyGo's native UI package: no Electron, no WebView, no cgo. A full first scan of this machine's logs takes seconds.
| Overview | Sessions |
|---|---|
![]() |
![]() |
| Ranking | Menu bar panel |
|---|---|
![]() |
![]() |
| CLI | Settings |
|---|---|
![]() |
![]() |
Download mytoken-<version>-darwin-universal.dmg from Releases, open it and drag MyToken!!!!!
into Applications. The bundle is ad-hoc signed rather than notarized, so the first launch needs
right-click → Open (or xattr -dr com.apple.quarantine /Applications/mytoken.app). The app's file
name is mytoken.app; Finder and the menu bar show MyToken!!!!!.
Download mytoken-<version>-windows-amd64-setup.exe (or -arm64-) and run it. The installer is unsigned, so SmartScreen asks
for More info → Run anyway the first time. It installs mytoken.exe, a Start Menu entry and the
uninstaller.
v=0.5.2 arch=amd64 # or arm64
curl -fLO https://github.com/zzstar101/mytoken/releases/download/v$v/mytoken-$v-linux-$arch.tar.gz
curl -fLO https://github.com/zzstar101/mytoken/releases/download/v$v/install.sh
sh install.sh mytoken-$v-linux-$arch.tar.gzInstalls per user, without root: the app in ~/.local/mytoken.app, the mytoken command in
~/.local/bin and an entry in the applications menu. sh install.sh --uninstall removes it and
keeps your data.
sudo apt install ./mytoken_<version>_amd64.debInstalls /opt/mytoken, the /usr/bin/mytoken command and a desktop entry. It depends on GTK 3,
WebKitGTK 4.1 and libayatana-appindicator3 (the tray icon).
go install github.com/zzstar101/mytoken@latestBuilds the same binary the bundles carry, including the CLI, into $(go env GOPATH)/bin/mytoken.
MyToken!!!!! reads the logs each tool already keeps. Nothing is written back: the readers are read-only and store only numbers plus a session title (the first 60 characters of the first user message). A dash in the quota column means the tool has no plan quota MyToken can read — its usage still counts toward spend.
| Tool | ID | Plan quota |
|---|---|---|
| Claude Code | claude-code |
Claude |
| Codex CLI | codex |
ChatGPT |
| DSH — DeepSeek Harness | dsh |
DeepSeek balance |
| pi / OMP / OMO-senpi | pi |
— |
| Gemini CLI | gemini |
— |
| opencode | opencode |
— |
| Crush | crush |
— |
| Cline | cline |
— |
| Roo Code | roo |
— |
| Kilo Code | kilo |
— |
| Claude Desktop | claude-desktop |
— |
| WorkBuddy | workbuddy |
WorkBuddy |
| CodeBuddy | codebuddy |
— |
| Hermes | hermes |
— |
| Qwen Code | qwen |
— |
| Kimi / Kimi Code | kimi |
— |
| OpenClaude | openclaude |
— |
| Grok | grok |
— |
| OpenClaw | openclaw |
— |
| Droid | droid |
— |
| Goose | goose |
— |
| Forge | forge |
— |
| Amp | amp |
— |
| Kiro | kiro |
— |
| Zed | zed |
— |
| Antigravity | antigravity |
— |
| Codebuff | codebuff |
— |
| Mux | mux |
— |
| ZCode | zcode |
— |
| MiniMax Code | minimax-code |
— |
| MiMo Code | mimo-code |
— |
| Step Code | step-code |
— |
| Trae | trae |
database key, see below |
Cursor, GitHub Copilot, GLM and Qoder are quota sources without a session-log reader: their local
formats report no usable tokens (Cursor's per-message tokenCount is always zero, Qoder carries
credits rather than tokens). See Plan quotas.
Some tools encrypt their local history and keep the key out of reach, so the usage inside is
readable only after that key is supplied once. Trae is one: its ModularData/ai-agent/database.db
is SQLCipher 4, and the 32-byte key exists only in the memory of the running app — not in its
settings, its keychain entry or its files.
mytoken decrypts that database itself (AES-256-CBC with a per-page HMAC-SHA512, WAL folded in),
so once the key is stored the reader behaves like every other one: offline, read-only, no network.
mytoken key trae # read it from the running app
mytoken key trae "<64 hex characters>" # or supply one yourself
mytoken key # what is stored, masked
mytoken key trae --clear # forget itThe key exists only in the memory of the running app, so mytoken key trae asks the app for it:
it starts Trae if needed, reads the key out of the process, and proves it against page 1 of the
database before storing it in a 0600 file next to the index. On macOS that takes a copy of the
app, because the installed one refuses a debugger; the installation itself is never modified.
Settings → Sources offers the same as one button (Authorize reading…), and the field beside it
takes a key recovered elsewhere, such as with
trae-db-decrypt.
Where the logs live
| Tool | ID | Where the logs live |
|---|---|---|
| Claude Code | claude-code |
~/.claude/projects/**/*.jsonl ($CLAUDE_CONFIG_DIR/projects), plus ~/.config/claude/projects when it exists |
| Codex CLI | codex |
$CODEX_HOME/sessions and $CODEX_HOME/archived_sessions (~/.codex by default) |
| DSH — DeepSeek Harness | dsh |
$DSH_HOME/sessions (~/.dsh/sessions by default) |
| pi / OMP / OMO-senpi | pi |
$PI_HOME/sessions when set; otherwise ~/.pi/agent/sessions plus detected OMP and OMO/senpi agent roots |
| Gemini CLI | gemini |
$GEMINI_CLI_HOME/tmp (~/.gemini/tmp by default) |
| opencode | opencode |
$OPENCODE_DATA_HOME, else $XDG_DATA_HOME/opencode, else ~/.local/share/opencode |
| Crush | crush |
$CRUSH_GLOBAL_DATA, else $XDG_DATA_HOME/crush, else ~/.local/share/crush |
| Cline | cline |
…/globalStorage/saoudrizwan.claude-dev/tasks, plus ~/.cline/data/tasks and ~/.cline/data/sessions |
| Roo Code | roo |
…/globalStorage/rooveterinaryinc.roo-cline/tasks |
| Kilo Code | kilo |
…/globalStorage/kilocode.kilo-code/tasks |
| Claude Desktop | claude-desktop |
…/Claude/local-agent-mode-sessions and its Claude-3p sibling (macOS: ~/Library/Application Support, Windows: %APPDATA%), plus the Cowork usage ledger |
| WorkBuddy | workbuddy |
$WORKBUDDY_HOME/projects (~/.workbuddy/projects by default) |
| CodeBuddy | codebuddy |
$CODEBUDDY_HOME/projects (~/.codebuddy/projects by default) |
| Hermes | hermes |
$HERMES_HOME (~/.hermes by default), SQLite |
| Qwen Code | qwen |
$QWEN_DATA_DIR/projects (~/.qwen/projects by default) |
| Kimi / Kimi Code | kimi |
Legacy $KIMI_SHARE_DIR/sessions (~/.kimi/sessions) plus $KIMI_CODE_HOME/sessions (~/.kimi-code/sessions) |
| OpenClaude | openclaude |
$CODEBURN_OPENCLAUDE_DIR/projects, else ~/.openclaude/projects |
| Grok | grok |
$GROK_HOME (~/.grok by default) |
| OpenClaw | openclaw |
~/.openclaw/agents, plus the ~/.moltbot, ~/.moldbot and ~/.clawdbot spellings |
| Droid | droid |
$FACTORY_DIR (~/.factory by default) |
| Goose | goose |
$GOOSE_PATH_ROOT/…, else ~/.local/share/goose/sessions (Windows: %APPDATA%\Block\goose\sessions), SQLite |
| Forge | forge |
~/.forge by default, SQLite |
| Amp | amp |
$AMP_DATA_DIR (comma-separated), else ~/.local/share/amp |
| Kiro | kiro |
$KIRO_HOME (~/.kiro by default), plus the platform Kiro globalStorage agent directory |
| Zed | zed |
…/Zed/threads/threads.db (macOS: ~/Library/Application Support, Windows: %LOCALAPPDATA%, Linux: ~/.local/share/zed), SQLite |
| Antigravity | antigravity |
$GEMINI_CLI_HOME/antigravity{,-cli,-ide}/conversations and the matching implicit dirs (~/.gemini by default), only *.db |
| Codebuff | codebuff |
$CODEBUFF_DATA_DIR, else ~/.config/manicode, ~/.config/manicode-dev and ~/.config/manicode-staging |
| Mux | mux |
$CODEBURN_MUX_DIR or $MUX_ROOT, else ~/.mux, ~/.mux-dev and ~/.cmux |
| ZCode | zcode |
$MYTOKEN_ZCODE_DIRS, else ~/.zcode/cli/db/db.sqlite, query-only SQLite |
| MiniMax Code | minimax-code |
$MINIMAX_DATA_DIR / $MAVIS_DATA_DIR, else ~/.minimax/v2/sqlite/runtime-state.sqlite (legacy ~/.mavis) |
| MiMo Code | mimo-code |
$MIMOCODE_HOME/data; otherwise $XDG_DATA_HOME/mimocode or ~/.local/share/mimocode on every OS, query-only SQLite |
| Step Code | step-code |
$STEP_CODING_AGENT_SESSION_DIR, $STEP_CODING_AGENT_DIR/sessions, else ~/.stepcode/agent/sessions |
| Trae | trae |
…/Trae CN/ModularData/ai-agent/database.db (also TRAE SOLO CN and Trae) — SQLCipher, read after mytoken key trae |
For the VS Code family extensions, …/globalStorage is resolved per platform and per editor —
editors: VS Code, VS Code Insiders, Cursor, Windsurf, VSCodium, Trae; platforms:
~/Library/Application Support/<editor>/User/globalStorage on macOS,
~/.config/<editor>/User/globalStorage (or $XDG_CONFIG_HOME/…) on Linux, and
%APPDATA%\<editor>\User\globalStorage on Windows.
Every reader can be pointed somewhere else for non-default installs, containers and archived logs:
| Variable | Effect |
|---|---|
MYTOKEN_HOME |
Where the index lives (all platforms) |
CLAUDE_CONFIG_DIR |
Claude Code config dir instead of ~/.claude |
CODEX_HOME |
Codex data dir instead of ~/.codex |
DSH_HOME |
DSH data dir instead of ~/.dsh |
PI_HOME, MYTOKEN_PI_DIRS |
pi data dir, or explicit pi-compatible session roots (path list) |
PI_CODING_AGENT_DIR, OMP_PROFILE, PI_PROFILE, PI_CONFIG_DIR |
OMP agent/profile roots reused by the pi reader |
OMO_CODING_AGENT_DIR, SENPI_CODING_AGENT_DIR |
OMO/senpi agent roots reused by the pi reader |
GEMINI_CLI_HOME, MYTOKEN_GEMINI_DIRS |
Gemini CLI data dir, or explicit dirs (path list) |
OPENCODE_DATA_HOME, MYTOKEN_OPENCODE_DIRS |
opencode data dir, or explicit dirs (path list) |
CRUSH_GLOBAL_DATA, MYTOKEN_CRUSH_DIRS |
Crush data dir, or explicit dirs (path list) |
CLINE_DIR, CLINE_DATA_DIR, CLINE_SESSION_DATA_DIR |
Cline data dirs |
MYTOKEN_CLINE_DIRS, MYTOKEN_ROO_DIRS, MYTOKEN_KILO_DIRS |
Explicit Cline / Roo / Kilo dirs (path list) |
MYTOKEN_CLAUDEDESKTOP_DIRS |
Explicit Claude Desktop session dirs (path list) |
WORKBUDDY_HOME, CODEBUDDY_HOME |
WorkBuddy / CodeBuddy home dir |
HERMES_HOME |
Hermes home dir instead of ~/.hermes |
QWEN_DATA_DIR, MYTOKEN_QWEN_DIRS |
Qwen Code data dir, or explicit dirs (path list) |
KIMI_SHARE_DIR, KIMI_CODE_HOME, MYTOKEN_KIMI_DIRS |
Kimi / Kimi Code data dirs, or explicit dirs (path list) |
CODEBURN_OPENCLAUDE_DIR, MYTOKEN_OPENCLAUDE_DIRS |
OpenClaude data dir, or explicit dirs (path list) |
GROK_HOME, MYTOKEN_GROK_DIRS |
Grok home dir, or explicit dirs (path list) |
MYTOKEN_OPENCLAW_DIRS |
Explicit OpenClaw agent dirs (path list) |
FACTORY_DIR, MYTOKEN_DROID_DIRS |
Droid home dir, or explicit dirs (path list) |
GOOSE_PATH_ROOT, MYTOKEN_GOOSE_DIRS |
Goose data root, or explicit dirs (path list) |
MYTOKEN_FORGE_DIRS |
Explicit Forge dirs (path list) |
AMP_DATA_DIR, MYTOKEN_AMP_DIRS |
Amp data dirs (comma-separated), or explicit dirs (path list) |
KIRO_HOME, MYTOKEN_KIRO_DIRS |
Kiro home dir, or explicit dirs (path list) |
MYTOKEN_ZED_DIRS |
Explicit Zed threads dirs (path list) |
MYTOKEN_ANTIGRAVITY_DIRS |
Explicit Antigravity conversation dirs (path list) |
CODEBUFF_DATA_DIR, MYTOKEN_CODEBUFF_DIRS |
Codebuff data dir, or explicit dirs (path list) |
CODEBURN_MUX_DIR, MUX_ROOT, MYTOKEN_MUX_DIRS |
Mux data dir, or explicit dirs (path list) |
MYTOKEN_ZCODE_DIRS |
Explicit ZCode database files or containing dirs (path list) |
MINIMAX_DATA_DIR, MAVIS_DATA_DIR, MYTOKEN_MINIMAX_DIRS |
MiniMax Code data root, legacy root, or explicit roots (path list) |
MIMOCODE_HOME, MIMOCODE_DB, MYTOKEN_MIMO_CODE_DIRS |
MiMo Code data root, exact database, or explicit roots (path list) |
STEP_CODING_AGENT_SESSION_DIR, STEP_CODING_AGENT_DIR, MYTOKEN_STEP_CODE_DIRS |
Step Code session root, agent root, or explicit roots (path list) |
MYTOKEN_TRAE_DIRS, MYTOKEN_TRAE_DBKEY |
Trae data directories (path list), or the database key without storing it |
Which readers have been checked against real logs, and which are conformance-only, is tracked in Harness coverage status.
Plan quota is the one thing MyToken fetches from the network, and it always asks the provider's own server with the login that tool already stored on disk. It never refreshes, rewrites or copies that login, and it never derives a quota from local usage.
| Source | What you get |
|---|---|
| Codex | ChatGPT plan usage windows, from the Codex sign-in |
| Claude | Claude plan usage windows, from the Claude Code sign-in |
| Cursor | Cursor plan usage, from the Cursor app login |
| GitHub Copilot | Copilot usage, from the Copilot sign-in |
| GLM | Z.ai / BigModel Coding Plan limits, from Z_AI_API_KEY or BIGMODEL_API_KEY |
| Trae (CN / Global) | Trae plan usage, from the app login |
| WorkBuddy | WorkBuddy plan usage, from the app login |
| Qoder | Qoder plan usage, from the app login |
| ZCode | ZCode Start Plan token grants, from the ZCode app login |
| DeepSeek | API account balance, from the DeepSeek Harness credential or DEEPSEEK_API_KEY |
A quota card only appears for a provider whose credential MyToken finds. Percentage windows show used share and reset time; credit balances show what remains, the daily burn and the runway in days. When a fetch fails the last good snapshot stays visible and the next attempt backs off; no local number is substituted.
- Prices come from models.dev, with LiteLLM's
model_prices_and_context_window.jsonas the fallback and a bundled offline snapshot for the first run. The table is cached on disk for 24 hours and the app works entirely offline with the cached copy. - Costs are API-equivalent: what the same tokens would cost at official list price. Each of the five token classes is priced separately; reasoning tokens fall back to the output rate.
- Custom prices and mappings. When a plan, gateway or negotiated rate differs, set USD prices per million tokens (input, output, cache read, cache write) for a model in Settings → Prices. Model names your own config invented can be mapped to the real model and an optional provider, so they are priced and merge into the rankings. There are no provider multipliers or inferred discounts.
- The 1-hour part of a cache write costs twice the input rate; the rest costs the catalog's cache-write price, or 1.25× input when the catalog has none.
- A cost recorded in the log itself always wins over the computed one, and requests that no price can be found for are reported as unpriced instead of silently costing nothing.
- When a log does not name the account or gateway, the provider is resolved from the log itself, then cc-switch's read-only request log, then the base URL recorded in the tool's config at the time of the request, then the model name — and your own rules win.
- Local only. The index, the price cache and the settings never leave your machine. There is no telemetry, no analytics, no crash reporting, no account and no sync.
- The complete network list: the price table (models.dev, falling back to LiteLLM), a daily update check against github.com on builds that ship the desktop updater (never the CLI), and plan-quota fetches against the provider's own service when that tool's credential is already on disk. Nothing else is contacted.
- Read-only readers. Tool logs are opened for reading; the index is a separate SQLite file that you can delete at any time to start over.
- No conversation content. Only numbers and metadata are stored. The single exception is the session title: the first 60 characters of the first user message, so the session list is readable.
| Platform | Index directory |
|---|---|
| macOS | ~/Library/Application Support/MyToken |
| Windows | %APPDATA%\MyToken |
| Linux | $XDG_DATA_HOME/mytoken (usually ~/.local/share/mytoken) |
The database is mytoken.db inside it. Set MYTOKEN_HOME to keep it elsewhere (handy for trying
the app against a scratch index); delete the directory to reset.
The app binary is also the CLI. A bare mytoken in a terminal prints the read-only cost summary;
from Finder, Explorer or a launcher it is the app, and mytoken gui always opens the window (the
login item uses --hidden). The full reference is in docs/CLI.md.
mytoken # today and this month, API-equivalent cost
mytoken daily # one row per day, last 30 days
mytoken daily --days 7 --json # scripting
mytoken quota # plan quota fetched from the providers' servers
mytoken scan # re-index now
mytoken key trae "<key>" # database key for an encrypted source
mytoken statusline # one-line status for a shell prompt
mytoken doctor # check index, sources and schema, read-only
mytoken versionsummary, daily, quota, statusline and doctor open the index read-only: they never migrate,
reprice or write to it. Run mytoken scan once after an upgrade to migrate and reprice the index.
Bug fixes, new harnesses, new quota sources and translations are welcome as a pull request. For a new feature or a UI change, open an issue first. CONTRIBUTING.md covers the development setup, tests, the conformance suite and the checklists for adding a harness or a quota provider.
- tokscale documented many of the parsing rules MyToken follows; no code was copied.
- codeburn is the source of several readers (Qwen, Kimi, OpenClaude, Claude Desktop, Grok, OpenClaw, Droid, Goose, Forge) — see THIRD_PARTY_NOTICES.
- MyGo is the native UI package.
- models.dev and LiteLLM provide the price tables.
- cc-switch defines the pricing import format and the provider request log used by attribution.
MyToken!!!!! is an unofficial fan tribute to the band MyGO!!!!!. The name, palette and decorations are affectionate references; the project is not affiliated with or endorsed by the band or its rights holders, and contains no official artwork. All trademarks belong to their owners.
MIT © 2026 zzstar101. See LICENSE.






