Skip to content

chattymin/PokeTokenBar

Repository files navigation

PokeTokenBar icon

PokeTokenBar

Your AI coding tokens, hatched into Pokémon — right in your menu bar.

Release macOS Swift Homebrew License

English · 한국어 · 日本語

PokeTokenBar shows how many AI coding tokens you've burned today — Claude Code, Codex & Gemini CLI — in your macOS menu bar, and turns that usage into a growing Pokémon companion. Spend tokens, hatch an egg, evolve it through its real evolution line, graduate it into your Pokédex, and start again.

Token usage is read directly from your local Claude Code, Codex & Gemini CLI logs (totalTokens = input + output + cache, local date) — no external CLI needed. Unofficial, non-commercial Pokémon fan project — see License & disclaimer.

Why

  • See today's token spend & cost at a glance — no dashboard, no browser tab.
  • Track official 5-hour / weekly limits with reset countdowns and a burn-rate forecast for when you'll hit them.
  • …and actually enjoy opening it: your usage raises a Pokémon that evolves, graduates, and fills a Pokédex.
Popover home — companion, today's tokens, official limits

How it works

  1. 🥚 Code as usual. The tokens you burn in Claude Code, Codex & Gemini CLI incubate an egg — nothing extra to run.
  2. 🐣 Hatch. Eggs hatch into Pokémon with real evolution lines from PokéAPI — any Gen 1–5 line (329 possible starts), weighted by the official capture rate: commons hatch often, a legendary is a 1-in-129 event. Every hatch rolls one of 25 natures — and 1 in 64 is ✨ shiny.
  3. Evolve. Keep coding and it grows through its actual evolution tree (1/2/3 stages, branching), with a little flash celebration at each step.
  4. 🎓 Graduate & collect. Final form + threshold sends it to your Pokédex — rarer takes longer (≈3 days common → ≈24 days legendary at heavy use) — and a fresh egg arrives.

Tour

In your menu bar

An animated Gen-V sprite lives next to today's total tokens (compact, e.g. 200.7M). Add today's cost ($) or official limit % — or turn everything off for a character-only bar.
Menu bar
Normal vs shiny

✨ One in 64 is shiny

Shiny hatches keep their distinct colors everywhere — menu bar, home card, evolution line, Pokédex — through every evolution. A dedicated notification makes sure you don't miss the moment.

A Pokédex worth filling

Graduated Pokémon are preserved with their full evolution line, rarity, nature, and capture date — shinies wear a ✨ badge. Sorted so your rarest catches sit on top.
Pokédex
Settings

Tune it your way

Menu-bar items, refresh interval (1–15 min or manual), launch at login, a Keychain opt-out that just hides the limits section, limit alerts with warning/critical thresholds, and companion event notifications. Full KO / EN / JA UI and Pokémon names.

Also in the box

  • Per-service tabs — with more than one CLI connected, compact tabs switch the detail & limits between Claude Code / Codex / Gemini; today's total stays combined.
  • Official limits — Claude & Codex 5-hour / weekly utilization with reset countdowns, right under today's numbers.
  • Burn-rate forecast — projects when the current 5h window hits 100%.
  • In-app updates — one-click update check; current version shown in Settings.

Install

Requirements

macOS 14+ (Apple Silicon or Intel). That's it — token usage is read directly from your local Claude Code / Codex / Gemini CLI logs, no external CLI required.

Homebrew

brew install --cask chattymin/tap/poke-token-bar

ad-hoc/self-signed; the cask strips the quarantine attribute on install.

Build from source

swift build                  # debug
swift test                   # unit tests
./scripts/build-app.sh       # release → PokeTokenBar.app → /Applications

Data sources

Source Used for Notes
~/.claude/projects/**/*.jsonl Claude Code daily/blocks/weekly/monthly read directly; deduped by message id; cached incrementally
~/.gemini/tmp/**/chats/*.json(l) Gemini CLI daily/monthly session records (tokens per message); weekly = daily sum
~/.codex/sessions/**/*.jsonl Codex daily/monthly token_count events; weekly = daily sum
Keychain → oauth/usage Claude official 5h/weekly % unofficial endpoint; single Keychain prompt, then cached
codex app-server Codex official 5h/weekly % account snapshot only; no model turn
PokéAPI Pokémon species, evolution, sprites runtime fetch; cached locally, never bundled

Privacy & permissions

  • On-device. Token usage is read directly from your local Claude Code / Codex / Gemini CLI logs; the app never runs claude/codex model turns, only reads usage.
  • Keychain (optional). To show official limits it reads the Claude OAuth credential once (a single password prompt), then caches it in the app's own Keychain item for reuse. Turn it off in Settings — the limits section simply hides.
  • Pokémon assets are fetched at runtime from PokéAPI and cached only under ~/Library/Application Support/PokeTokenBar/. Nothing copyrighted is bundled in this repository or its releases.

License & disclaimer

MIT — see LICENSE. The MIT license covers this project's source code only.

This is an unofficial, non-commercial fan project. It is not affiliated with, endorsed, sponsored, or approved by Nintendo, Game Freak, or The Pokémon Company. Pokémon and Pokémon character names are trademarks of Nintendo; Pokémon names, data, and sprites are © Nintendo / Game Freak / The Pokémon Company and are fetched at runtime for identification only.

About

Use your tokens to raise, evolve, and collect Pokémon! 🥚

Topics

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors