Every state, in order. Rendered straight from the sprite rig.
β¬οΈ Download for macOS Β Β·Β Build it yourself Β Β·Β What he never does
Claude Code tells you what it is doing inside the terminal. Switch to a browser, a design tool, or another repo and that goes away β and if you run several sessions at once, it was never visible in the first place.
Claw'd puts it back where you can see it. He sits on the desktop, always on top, and reflects your sessions continuously: which tool is running, what task is in progress, which one just finished, and which one is stuck waiting on you. No window to check, no tab to switch to. You glance at him.
He watches every running session, mirrors whichever is busiest, and clicking him opens a roster of them all.
Each state maps to something measurable. Cooking fires at 8+ tool calls a
minute or a live subagent fan-out. Why 8? A normal session runs about 4 a
minute and rarely passes 7, while a fanned-out sprint runs 22. Nudging
means an ExitPlanMode is sitting there waiting for your answer.
Thinking just shows three dots. There's no honest label for that moment,
so he doesn't pretend to have one.
![]() Jump |
![]() Stretch |
![]() Look around |
![]() Scuttle |
![]() Wave |
![]() Wiggle |
![]() Kickflip |
![]() Varial flip |
![]() Ollie |
![]() Cruise |
These run on a seven-second cycle, but only about seven cycles in ten fire, so the gaps stay irregular and he is still most of the time. The rotation leans toward the skateboard. Land a trick and he says something about it, and about one trick in fifty rides a golden board.
While he waits he shares what he knows: 76 fun facts across computer science, AI and Claude, plus 16 tips about Claude Code itself, every one checked against the installed build rather than the documentation.
Short lines sit still. Long ones scroll past, and stay up long enough to read.
Pick one from the menu bar. Each costume is its own drawing, with its own animation. Frankenstein has bolts at the temples and throws sparks. Arcade is lit from inside like a cabinet. Arctic White gets falling snow, Gundam a scanning visor, Tiger a swishing tail.
He also keeps a calendar. Some weeks of the year, the menu grows.
These sessions are made up for the screenshot. The real panel shows your actual project directories, which is why we didn't screenshot the real one.
Click a row to pin him to that session; click again to go back to following the busiest. Summon a second pet from the menu bar and the two park beside each other without their speech bubbles ever overlapping.
Every line in his speech bubble lives in one file. No strings scattered
through the codebase, no config format to learn. Open
Sources/ClaudePet/Support/vocab.swift,
change the strings, rebuild:
// π¬ Between tasks. Encouragement, mostly.
case .idle: [
"Let's build something awesome!",
"your line here", // β add as many as you like
]Rules let him say something specific when a task matches a pattern β a commit
joke for git commit, your own line for deploy. Keep lines under 28
characters and they sit still; longer ones scroll past as a ticker.
β The full guide to writing his lines
Download the latest .dmg,
open it, drag Claw'd to Applications.
Requires macOS 14 or later on Apple silicon. There is no Intel build.
First launch says "unidentified developer". That is expected, and deliberate: notarizing would publish the author's legal name and Apple Team ID inside every copy. The one command that works on every version of macOS:
xattr -dr com.apple.quarantine /Applications/ClaudePet.appIf you'd rather use the UI: open it once, dismiss the warning, then go to System Settings β Privacy & Security β Open Anyway. On macOS 14 you can also right-click β Open. macOS 15 removed that shortcut.
And if you'd rather not run someone else's binary at all, fair enough. Build it yourself in about thirty seconds.
Claw'd has no Dock icon. He lives in the menu bar: click the little crab there for size, sounds, Open at login, costumes, session pinning, a second pet, and hook installation.
This app reads your live Claude Code session data, so here is exactly what it does with it. Specifics, so you can check them yourself.
- No network. At all. There is no
URLSession, no socket, no analytics, no update check, and zero dependencies. Verifiable in one grep β which is most of why this repo is public. - Read-only on everything Claude Code owns. He never writes to
sessions/,projects/ortasks/. The file watcher opens withO_EVTONLY, a descriptor that cannot write. - He never reads a transcript whole. A bounded tail off the end. Measured on a 92 MB file: 21 events in 0.006s, 426 KB of memory.
- One writer, and you press it. "Install Claude hooksβ¦" is the only thing
that touches
settings.json. It backs up first, merges without destroying your existing hooks, preserves file permissions, and refuses rather than resets if the file will not parse. - Nothing leaves your machine, because nothing can.
git clone https://github.com/internetdialup/claude-pet.git && cd claude-pet && ./run.shBuilds, assembles the .app, ad-hoc signs it, launches it. Swift 6 toolchain,
no dependencies, no package manager.
| π£οΈ | Writing his lines β the vocabulary, rules and banner copy |
| π | How he knows β what on disk drives each state |
| π¨ | The art β one 32Γ32 rig, no sprite sheets |
| π | Changelog |
| π€ | Contributing |

























