Meet Zeca — a pixel-art parrot that lives on top of your screen and reacts to Claude Code running in your terminal.
When Claude finishes a task, he celebrates. When Claude needs you — a question, a plan to approve, a permission — he chirps and calls you. When you step away, he naps. Click him and you jump straight to the terminal of the session that needs you most. Drag him anywhere; he remembers where you put him on each monitor, and follows the one you're working on.
What he does
![]() |
Claude finished → a hop, a short flight, confetti — and a bigger flight across the screen with a confetti rain when the job was large. |
![]() |
Claude needs you → he chirps with a ! and a bubble showing the project. If you're not looking, the call escalates — always with a ceiling. |
![]() |
Working → nearly still, pecking a seed now and then. |
![]() |
Nobody around → yawns and sleeps. |
He sees every Claude Code session — even ones you opened before installing him — by reading your session transcripts, so there's nothing to reload.
How it works
It's Rust. All the pet logic — the "brain," the animator, the L1–L4 escalation state machine — lives in a platform-pure core with fake-clock tests; each OS (Linux/Wayland, macOS, Windows) just implements a small Overlay/Desktop trait pair behind it, so cargo clippy --target cross-checks all three from one machine. unsafe is confined to the platform crates (Win32/AppKit).
It draws as a click-through, always-on-top overlay and is deliberately cheap: an idle, awake pet averages ≤2 screen redraws per second, and 0 while asleep.
Privacy was a hard constraint
Zeca only ever sees metadata — event names, a session id, the project folder name, a hash of an edited file's path. Your prompts, Claude's responses, your code, and window titles never leave the machine, never hit a log, and are never written to disk. The daemon binds to 127.0.0.1 only and talks to no network. (So no, there's no usage telemetry — by design.)
Bring your own sprite
The art is CC0 — the whole point is your pet. A skin is just a sprite sheet + a small skin.json mapping animations to states, so even a recolor is a one-liner:
Install — one command
macOS or Linux (Hyprland):
curl -fsSL https://raw.githubusercontent.com/butkeraites/claude-pet/main/scripts/get.sh | sh
Windows (PowerShell):
irm https://raw.githubusercontent.com/butkeraites/claude-pet/main/scripts/get.ps1 | iex
It's brand new and MIT-licensed. I'd love your feedback, a star, your own sprites, and especially help with more Linux compositors:





Top comments (0)