Where it lives
Any terminal, any agent, same creature
Five agents draw it natively, inside their own statusline. Six more have no statusline, so they show a one-line card after each turn, credited to the same creature. Every other agent gets it through tmux or your shell prompt, sitting right beside the conversation. And it eats memory from nearly all of them. Honest tiers, checked against each host's own docs.
Agents
Terminals, prompts and multiplexers
Meet the eight
Which one is in your egg?
Species and rarity are rolled from the egg's seed the moment it's laid, and the egg gives nothing away until it cracks. Click a card to see its shiny.
Evolution
Five forms, earned one note at a time
The egg, then five sprites that gain detail at every step. Level 100 is fully grown, and the answer to "what now" is a new egg.
+
Rare 10% *
Epic 4% **
Legendary 1% ***
Shiny 1% on top of any tier
Try the curve
How many notes is a Sage?
XP is a weighted count of markdown files. Levelling follows a square root, so early notes move the needle hard and later ones don't. Drag the slider.
level = min(100, floor(100 · sqrt(xp / xp_max)))
The one pace dial is xp_max. Default 1500 puts a well-kept vault around 65. Want the climb to last? config xp_max 5000.
Pick your source
What does it get to eat?
Four providers. Pick one and the command updates live. Fresh installs default to auto: every agent when it finds more than one on the machine, Claude Code alone otherwise. The first hatch asks the same question, with a file count for everything it finds.
terminalcreature doctor names the cause, and the hatch flow offers to set a memory system up. XP follows on the next render once files start landing. terminalcreature sources lists which agents it found and how many files each has, never a path.
The lifecycle
Only two steps need you
Hatching the egg, and eventually starting another. Levelling and evolutions happen on their own as your notes pile up.
Install lays an egg
The installer wraps whatever statusline you already have instead of replacing it, then leaves an egg in it. One command wires every host it finds: the statusline in Claude Code, Cursor, Copilot, Qwen and Droid, a one-line card after each turn in Codex, Gemini, Vibe, auggie, opencode and Amp. tmux and your prompt take a paste-in from snippet, and doctor lists what got wired. The egg banks XP from the moment it exists, including everything you'd written before.
Hatch is a reveal, not a blank slate
A short guided setup the first time: where your notes live, whether the existing pile counts, and what to call it. Then the egg opens at whatever level your writing has already earned.
/creature-hatch Zask, a Legendary Nim (shiny) · Lv41 AdeptWrite notes, watch it evolve
Every durable memory is XP, from whichever agent wrote it. The caption shows what it ate this session, and the sprite changes shape at levels 20, 40, 60 and 80. Deleting notes never de-levels anyone: the high-water mark only rises.
🥚 Zask · Adept Lv44 ███░░░ +12 XPFully grown? Lay another
Level 100 is the end of the curve. --replace retires the current buddy and keeps its record; --add keeps it around and focuses a new egg. Nothing is ever deleted.
Built for the statusline
Light, quiet, and easy to remove
It runs every time a statusline or prompt redraws, so it stays small: plain Python and one cached read, whichever host is asking.
Never edits your statusline
Your existing statusline keeps running as it is, in every host. The creature is drawn beside it, and --uninstall puts the original settings back byte for byte.
One roster everywhere
Claude Code, Cursor, Copilot, Qwen, Droid, tmux and your prompt all read the same state, and the turn-end card in Codex, Gemini, Vibe, auggie, opencode and Amp credits the same creature. Level up in one, and it is that level in the others.
Nothing to install but Python
Python 3.9 or newer and bash. No packages, no accounts. macOS, Linux, and Windows through WSL or Git Bash.
XP only goes up
Deleting or merging notes never lowers your creature's level. It remembers the most you have ever had.
Fast enough for a prompt
The render reads one cached line and never measures on the hot path, so it fits inside Starship's 500 ms budget and Qwen's 5 s cutoff with room to spare.
Updates are opt-in
Say yes once and a small chip appears when a new version is out. Say no and it never touches the network.
Privacy promise
It never has your data
Short enough to check yourself, and every line is enforced by a test that fails the build.
glob and stat, for every agent's memory it counts. It never reads a byte of a note, a session log, or a rules file, and never parses frontmatter.metric.py and fails if a reader appears at all.doctor reports a home-relative root and counts, not filenames.~/.claude/terminalcreature/. Nothing else, nowhere else.update and doctor --check by hand, and the once-a-day version check if you opted in.Provenance. Anthropic shipped a terminal pet in Claude Code (/buddy, April 2026). Nice idea, no progression. terminalcreature is a clean-room rebuild of the concept with the missing half added: growth you actually earn. No code, art, names, or hashing details were taken from it. Not affiliated with or endorsed by Anthropic.
Ready to hatch?
One command. Wraps the statusline you already have, wires every agent it finds, lays an egg, and tells you how to open it. Curious what it looks like in your tool? Pick it up top.
curl -fsSL https://raw.githubusercontent.com/smejkaldesign/terminalcreature/main/bootstrap.sh | bash
then /creature-hatch in Claude Code · or read the code first: github.com/smejkaldesign/terminalcreature