Your AI work style, as a cat in your terminal. トークンで育つターミナルの猫 — 日本語 README はこちら
A tiny pet that lives in your Claude Code statusline and feeds on your local usage logs. Tokens become body weight. Your work style becomes its personality — and every Monday it evolves into a new generation based on how you actually worked.
- ⚖ Tokens = weight, cost = feed bill. "My cat ate $87 this month" hurts less than an invoice
- 🌙 Work style = personality. Night sessions make it nocturnal; two nocturnal generations in a row and it evolves into an owl-cat. Cache-efficient work gives it a glossy coat
- 📅 Weekly generations. Every Monday 0:00 the week is finalized into a dex record and a share card (SVG/PNG, generated locally)
- 🔊 Fully synthesized sounds. A purr when your agent finishes, a chime when it needs input. No audio files — everything is rendered from JSON parameters
- 🛰 Multi-tool. Claude Code and Codex out of the box; more adapters welcome
- 🔒 Zero network. No telemetry, no uploads. Reads only token counts, timestamps and model names — never your prompts. Enforced by lint + CI, not just promised
Requires Node.js ≥ 20 and Claude Code (or Codex).
npm install -g tokineko
tokineko init # wires statusline + hooks (backup + diff shown first)
tokineko doctor # check everything, play a test purrThat's it. Work as usual — the cat appears at the bottom of your next Claude Code session.
| Command | What it does |
|---|---|
tokineko |
Current cat + usage card |
tokineko dex |
Generation history (the collection) |
tokineko card --open |
Share card for the latest generation (SVG → PNG) |
tokineko achievements |
Badge list |
tokineko doctor |
Diagnostics |
~/.config/tokineko/config.json (all optional):
Every game coefficient (weight curve, mood, coat) is also tunable — see SPEC.md.
tokineko never connects to the network. Its runtime code cannot import http/net/dns/tls (CI-enforced). From your local logs it extracts only token counts, timestamps, session-id hashes and model names; prompt bodies are discarded at parse time and never stored. Share cards are plain local files — nothing is auto-posted anywhere.
One contribution = one file. This JSON is a complete, valid pet:
{ "id": "shiba", "name": { "en": "shiba", "ja": "しば" }, "author": "you", "face": { "idle": "(・ᴥ・)" } }Species, sounds (parametric synth), achievement badges, translations, adapters — all are single-file PRs with automated CI checks and a bot preview. Every entry keeps its author credit in the gallery. See CONTRIBUTING.md.
MIT © ma0 — ma0 = māo = 猫 = cat
{ "mode": "meter", // tired of the cat? plain usage meter "locale": "en", // "auto" | "ja" | "en" "sound": { "enabled": true, "volume": 0.8, "quietHours": [[0, 7]] }, "statusline": { "maxWidth": 0 } }