Skip to content

Nomlings/statusline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pip the fox, idling Nomlings Statusline

A tiny pixel pet that lives in your Claude Code statusline and eats your tokens.

One file, zero dependencies. Your pet shows the session's real numbers (context, cost, tokens, time), munches while you work, celebrates your approved PRs, gets grumpy when the context window fills up, and falls asleep when you wander off. It levels up for life: every session, every project, one pet.

Axel the axolotl eating tokens next to live session stats in the Claude Code statusline

Setup

Needs Node ≥ 18 and Claude Code.

git clone https://github.com/Nomlings/statusline
node statusline/nomling-statusline.mjs install

That's it: install writes the statusLine entry into ~/.claude/settings.json for you (and uninstall removes it). Restart Claude Code and say hi to the egg. No signup, no tokens, nothing leaves your machine.

Prefer to edit settings.json yourself?

Add this to ~/.claude/settings.json (forward slashes, even on Windows):

{
  "statusLine": {
    "type": "command",
    "command": "node C:/path/to/statusline/nomling-statusline.mjs",
    "refreshInterval": 1
  }
}

refreshInterval: 1 is what makes it animate; without it the sprite only redraws when Claude Code pushes a status update.

Meet the five

Your species is hatched from your session, or pick one with node nomling-statusline.mjs character <name>.

Pip Axel Nib Bumo Krib
Pip the fox Axel the axolotl Nib the wyrm Bumo the owl Krib the crab
pip axo nib bumo krib

They render in 24-bit truecolor with two animation frames per second of session time, exactly like the previews below (these gifs run at the statusline's real cadence).

Every mood, every character

Pip the fox

idle working eat sleeping celebrate grumpy alert hungry egg
idle working eat sleeping celebrate grumpy alert hungry egg

Axel the axolotl

idle working eat sleeping celebrate grumpy alert hungry egg
idle working eat sleeping celebrate grumpy alert hungry egg

Nib the wyrm

idle working eat sleeping celebrate grumpy alert hungry egg
idle working eat sleeping celebrate grumpy alert hungry egg

Bumo the owl

idle working eat sleeping celebrate grumpy alert hungry egg
idle working eat sleeping celebrate grumpy alert hungry egg

Krib the crab

idle working eat sleeping celebrate grumpy alert hungry egg
idle working eat sleeping celebrate grumpy alert hungry egg

What the pet is telling you

Every refresh, Claude Code pipes session JSON to the script (see the statusline docs) and the pet turns it into a mood, highest priority first:

Mood Trigger
🎉 celebrate the current branch's PR is approved
⚠️ alert context window ≥ 90%
😾 grumpy context window ≥ 75% ("so full...")
😰 hungry 5-hour rate limit ≥ 90% (the food is running out)
😋 eat tokens grew since the last refresh (nom)
⌨️ working mid-task, waiting on the model
💤 sleeping no tokens eaten for 5 minutes (sleepy at 2)
🙂 idle otherwise

XP is tokens eaten, 1 xp per 1k, and it persists for life in ~/.nomling/statusline.json: every session across every project feeds the same pet. It starts as an egg and hatches at 20 xp.

Commands and options

The script doubles as its own CLI:

node nomling-statusline.mjs character axo    # pick a species
node nomling-statusline.mjs character auto   # per-session species (default)
node nomling-statusline.mjs list             # level, lifetime tokens, roster

Environment variables override the saved choices:

Variable Values Default
NOMLING_CHARACTER pip axo nib bumo krib picked per session
NOMLING_TRUECOLOR 1 force 24-bit, 256 force 256-color, 0 force monochrome auto-detected
NOMLING_COLOR ANSI SGR code for the monochrome silhouette, e.g. 96 92, mood-tinted

Try it without Claude Code

echo '{"session_id":"demo","model":{"display_name":"Opus"},"context_window":{"used_percentage":45},"cost":{"total_cost_usd":1.20,"total_duration_ms":600000}}' | node nomling-statusline.mjs

FAQ

Is it free? Yes.

Does it phone home? No. It reads the JSON Claude Code gives it and a small state file in ~/.nomling. Nothing is sent anywhere.

My pet is a flat green silhouette. Your terminal advertised neither truecolor nor 256 colors. If it can actually do better, force it with NOMLING_TRUECOLOR=1 (24-bit) or NOMLING_TRUECOLOR=256. Terminals that only do 256 colors (like Apple Terminal) get the pets in nearest-color approximation automatically.

Where do Nomlings come from? They are the desktop pets that live next to your terminal and eat your Claude Code tokens. Meet the full 3D version at Nomlings/app, or put one in your GitHub README.

Something is broken / I have an idea. Open an issue. The pet's home page, with every mood and species, is at nomlings.cc/statusline.

License

The code is MIT: fork it, tweak it, ship your own statusline. The Nomlings themselves are not: the species designs, the pixel artwork in assets/, and the sprite data in pixel-pets.mjs are © 2026 Francesco Gruosso, all rights reserved, and may not be reused outside this statusline and the official Nomlings apps. Details in LICENSE.


Nomling species designs and artwork © Nomlings. All rights reserved.

About

A tiny pixel pet that lives in your Claude Code statusline and eats your tokens. Five species, real session stats, one line of config.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Contributors