macOS menu bar · free & open source

Your AI coding tokens, hatched into Pokémon.

Turn the tokens you're already burning into a Pokémon that hatches, evolves, and fills a Pokédex — with today's spend and official limits right underneath.

Download from Releases ↗

macOS 14+Apple silicon & IntelSwift 6MIT

Menu bar showing an animated companion and today's total tokens
PokeTokenBar popover: animated Lapras companion, provider tabs (Claude Code / Codex / Gemini / OpenCode / Hermes / Cursor), today's combined tokens and official limit bars
Works with Claude Code Codex Gemini CLI Antigravity OpenCode Hermes Agent Cursor Grok CLI Copilot CLI Kiro CLI Pi Agent PokéAPI

Everything you need, in the menu bar

A glanceable usage tracker for AI coding — no dashboard, no browser tab — with a reason to actually open it.

📊

Live token usage

Today's Claude Code + Codex + Gemini + Antigravity + OpenCode + Hermes + Cursor + Grok + Copilot + Kiro + Pi tokens (compact, e.g. 253.4M) — combined total in the menu bar, per-service tabs in the popover.

🛑

Official limits

Claude, Codex & Antigravity 5-hour / weekly utilization with live reset countdowns, color-coded as you approach the cap.

📈

Burn-rate forecast

Projects when your current 5-hour window will hit 100% at the current spend rate — so a wall never surprises you.

🥚

Growth companion + Pokédex

Your usage raises a Pokémon that hatches — sometimes, by a rare stroke of luck, Shiny ✨ — evolves through its real line with natures and little celebrations, and fills a Pokédex.

🌐

Localized

Full Korean / English / Japanese / Spanish / French / Portuguese UI — and Pokémon names in your language, straight from PokéAPI.

🔔

Notifications

Alerts when a limit crosses your warning / critical thresholds — and when your companion hatches, evolves, or graduates.

🛒

Token Shop

The tokens you've already used become spendable currency — buy Rare Candy to grow your Pokémon, a Mint to re-roll its nature, a Shiny Charm that permanently raises your shiny odds, or an egg to send off your companion and start fresh — plain, Uncommon-guaranteed, or Rare-guaranteed.

🐾

Floating desktop pet

Let your companion live on the desktop instead of the menu bar — hover for today's usage, click to open the popover, right-click for a menu, drag to place it. Notifications can appear as a speech bubble above it.

📌

Representative Pokémon

Pin any species you already own to the menu bar and floating pet, independently of the one you're raising — while pinned, the menu bar stops following egg, hatch, and evolution changes, and raising progress stays on Home.

📁

Additional scan folders

Logs outside the built-in paths? Add extra scan roots per provider — comma or newline separated, * wildcards, with a live count of what currently matches. Each provider keeps its own list, and custom roots are added to the defaults rather than replacing them.

The companion

Code more, raise a Pokémon

Tokens spent since install grow a Pokémon through its real evolution tree — fetched live from PokéAPI, animated with Gen-V sprites.

🥚

Hatch

Spend ~5M tokens and your egg hatches into a rarity-weighted Pokémon — one of 25 natures, and once in a rare while, Shiny ✨.

Evolve

Keep coding to evolve it through its 1 / 2 / 3-stage line, branches included.

🎓

Graduate

Reach the final form + threshold and it graduates — a fresh egg arrives.

📖

Collect

Every species you've owned folds into one Pokédex cell — and the catch log keeps each individual.

🍬

Rare Candy

Max out a 5-hour or weekly limit and you earn Rare Candy — spend it from the Bag to grow your current Pokémon.

Pokédex view: one cell per species owned, in dex-number order
Pokédex — one cell per species you've owned, in dex-number order, ✨ on the shinies.
Normal Lapras next to its shiny purple variant, both animated
Once in a rare while, an egg hatches Shiny ✨ — distinct colors, kept through every evolution.
Bag tab showing a Rare Candy item earned from filling a usage limit
Fill a usage limit and earn Rare Candy — spend it from the Bag to grow your Pokémon.
The floating desktop pet with a hover callout showing today's tokens and a right-click menu
Move the pet onto your desktop — hover for today's usage, right-click for a menu, drag it anywhere.
Common · hatches often Uncommon Rare Legendary · rarely

Rarer Pokémon take more tokens to graduate — roughly 3 days (common) to 24 days (legendary) at heavy use.

Field guide

How it grows — all the numbers

How long it takes, what you'll see along the way, and what there is to collect — before you install.

Tokens per evolution

The rarer the Pokémon, the longer it stays with you. Later stages cost more (3-stage line shown).

RarityStage 1Stage 2Stage 3 (graduate)Total
Common125M250M375M750M
Uncommon312.5M625M937.5M1.875B
Rare500M1B1.5B3B
Legendary1B2B3B6B
How long on my pace?

How many AI-coding tokens do you burn per day? (total, including cache reads)

Every number on this page is hard-coded in the app. No server, no purchases, no shortcuts — just code.

The companion in your menu bar isn't a decoration — it lives your coding rhythm, switching sprites and captions in real time.

💤no tokens todayFast asleep

When you rest, it rests. Weekend menu bars are quiet.

🧍light useLoafing around

A few questions here and there — it idles beside you.

🚶coding steadilyWorking along

Your normal pace. It keeps busy too.

🔥100k+ tokens/minIn the zone

Agents running hot — so is your partner.

😮‍💨limit almost reachedWorn out

When a usage limit is close, it tires before you do. Take the hint.

🎉evolution · graduationCelebrating

Evolution moments and a graduation send-off — a few seconds worth catching.

Hatching has its own animation — and a Shiny hatch announces itself.

🥚🐣⚡️🎓🥚

Not an ending — a loop. Every graduation fills a Pokédex slot and a new egg arrives.

To collectHow it works
Species329 from Generations I–V — every hatch is random. You won't know until it cracks.
RaritiesFour tiers, Common to Legendary — the rare ones hatch rarely and stay longest.
✨ ShinyA rare stroke of luck at hatch — distinct colors, kept through every evolution.
NaturesOne of 25 per hatch — the same species never feels quite the same.
BranchesBranching lines prefer a branch you haven't collected — the Pokédex fills itself as you keep raising.
PokédexRecorded as (starter → final form) pairs with the full line — same starter, different branch, different entry.

Install in a minute

macOS 14+ (Apple Silicon or Intel). The Homebrew cask handles everything.

Install PokeTokenBar

One Homebrew command — ad-hoc/self-signed; the cask strips the quarantine attribute on install.

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

Prefer building yourself? swift build · swift test · ./scripts/build-app.sh/Applications. See the README.

Downloading directly instead? It's ad-hoc/self-signed, so on first launch right-click PokeTokenBar.appOpen, or run xattr -dr com.apple.quarantine /Applications/PokeTokenBar.app. (Homebrew does this for you.)

Requirements

  • macOS14+ (Apple Silicon or Intel)
  • Claude / Codex / Gemini / Antigravity / OpenCode / Hermes / Cursor / Grok / Copilot / Kiro / Piat least one, for usage to show
  • Keychainoptional — only for official limit %

Your usage stays on your Mac. The app reads your local Claude Code / Codex / Gemini CLI / Antigravity / OpenCode / Hermes / Cursor / Grok CLI / Copilot CLI / Kiro CLI / Pi Agent logs, never uploads them, and never runs claude/codex model turns. It does use the network — for Pokémon data & sprites (PokéAPI, cached locally), official limits, service status, and update checks — and none of those requests carry your usage. No Pokémon assets are bundled in the app.