my-claude-pets
Health Uyari
- License Γ’β¬β License: MIT
- Description Γ’β¬β Repository has a description
- Active repo Γ’β¬β Last push 0 days ago
- Low visibility Γ’β¬β Only 6 GitHub stars
Code Basarisiz
- os.homedir Γ’β¬β User home directory access in lib/config.js
- fs module Γ’β¬β File system access in lib/config.js
- os.homedir Γ’β¬β User home directory access in lib/projects.js
- fs module Γ’β¬β File system access in lib/projects.js
- os.homedir Γ’β¬β User home directory access in lib/quota.js
- network request Γ’β¬β Outbound network request in lib/quota.js
- os.homedir Γ’β¬β User home directory access in lib/usage.js
- fs module Γ’β¬β File system access in main.js
- os.homedir Γ’β¬β User home directory access in test/config.test.js
- fs module Γ’β¬β File system access in test/config.test.js
Permissions Gecti
- Permissions Γ’β¬β No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Desktop pets that roam your monitors, show your Claude Code token budget, and launch any project in iTerm with one click πΎ
my-claude-pets πΎ
Desktop pets for people who live in Claude Code.
Your pets roam along the bottom of all your monitors, carry a live
Claude token budget graph over their heads, and when you click one, a
retro game-style search panel pops up β type a project name, hit Enter, and
iTerm opens right in that project with claude already running.
macOS + iTerm2 only (for now). The token HUD reads
your local Claude Code transcripts, plus (optionally) Anthropic's official
usage endpoint β the same call Claude Code's/usagemakes, using your own
locally stored login. Nothing else ever leaves your machine.
Features
- Wandering pets β pixel-style pets walk along the bottom of the screen,
pause, breathe, and cross over to neighboring displays when they hit a
screen edge. Windows are fully click-through except on the pets themselves. - Pick them up β drag a pet anywhere (even to another monitor, the drag
follows your cursor across displays). Drop it in mid-air and it floats
gently back down under a π (or a customballoonImagesprite), then
strolls off; drop it near the floor and it walks off right away. - Token budget HUD β a 7-day usage bar chart plus your official plan
usage: the same percentages Claude Code's/usageshows (5-hour session,
weekly all-models, weekly per-model) with the session reset time, as a live
gauge that turns red past 85%. Refreshed every 2 minutes. If you're not
logged in (or set"officialQuota": false), it falls back to a local
estimate from your transcripts. - Project launcher β click a pet, fuzzy-search every project folder under
your configured roots, press Enter. If iTerm is already running you choose
new tab or new window; otherwise a window opens directly. The
terminal starts in the project directory and runs your command
(default:claude). - Self-healing β a watchdog re-spawns a pet within 30 seconds if it ever
gets lost in a display hand-off, and display plug/unplug is handled
automatically.
Install
The lazy way β you already live in Claude Code, so let it do the work.
Paste this into any Claude Code session:
Clone https://github.com/CordeliaSun/my-claude-pets, install dependencies, and start it
The manual way:
git clone https://github.com/CordeliaSun/my-claude-pets.git
cd my-claude-pets
npm install
npm start
On first launch a pets.json is created from pets.example.json, the
bundled mascot (an original bow-wearing cat, images/mascot.svg) starts
walking along the bottom of your screen, and a πΎ icon appears in the menu
bar (reload config / quit live there).
Configuration (pets.json)
{
// folders scanned (one level deep) by the project search panel
"searchRoots": ["~/Desktop", "~/Documents", "~/Developer", "~/Projects"],
// command run in the terminal for projects opened via search
"defaultCommand": "claude",
// set to false to skip the official plan-usage lookup (see below)
"officialQuota": true,
"pets": [
{
"name": "my-pet", // required β label + identity
"project": "~/Desktop", // required β this pet's home project
"image": "./images/cat.png", // optional β transparent PNG; emoji fallback
"balloonImage": "./images/cat-balloon.png", // optional β sprite shown while floating down after an air drop; π overlay when unset
"emoji": "π±", // optional β used when no image is set
"scale": 1, // optional β pet size multiplier
"speed": 1, // optional β walking speed multiplier
"command": "claude" // optional β per-pet terminal command
}
]
}
Default mascot
Out of the box your pet is this original bow-wearing cat
(images/mascot.svg). Remove the image field to fall back to theemoji instead, or bring your own character below.
Use your own character
Get any image with a transparent background (PNG or SVG, roughly
square looks best).Drop it into
images/β e.g.images/mario.png.Point your pet at it in
pets.json:{ "name": "mario", "project": "~/Projects/game", "image": "./images/mario.png", "scale": 1.3 }Menu bar πΎ β reload config. Done β no restart needed.
Paths can also be absolute or start with ~ (e.g."image": "~/Pictures/my-cat.png"), so you don't have to copy files into
the repo. pets.json and everything you add to images/ are gitignored β
your customizations stay local. If the image path is missing, the pet
falls back to its emoji. Use scale to size your character.
How the token numbers work
Official plan percentages (the gauge and 5h 9% Β· μ£Όκ° 7% Β· Fable 13%
lines) come from Anthropic's usage endpoint β the exact same numbers Claude
Code's /usage screen shows. The app reads the OAuth token Claude Code
already stores on your machine (macOS Keychain, falling back to~/.claude/.credentials.json) and makes one HTTPS request toapi.anthropic.com every 2 minutes. That is the app's only network
call; the token is never written anywhere or sent anywhere else. Opt out
with "officialQuota": false in pets.json.
Local token counts (today + the 7-day bar chart) are aggregated from the
transcripts (JSONL with per-message usage) Claude Code writes under~/.claude/projects/ β input + output + cache read/write, deduplicated by
message id, fully offline.
If official percentages aren't available (not logged in, offline, or opted
out), the 5h gauge falls back to a local estimate: usage grouped into
5-hour blocks (first activity floored to the hour, matching
ccusage's model) against your
largest historical block as the assumed limit.
Tests
npm test
Credits
- Retro Korean pixel font: Neoλ₯κ·Όλͺ¨ (NeoDunggeunmo)
β public domain, bundled infonts/. - 5-hour block model inspired by ccusage.
License
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi