Spritesheet Reference
A Codogotchi pet is a folder consumed directly by the macOS app. This is the exact spec for the three-tier spritesheet system โ file names, grid, timing, and the animation rows each tier carries.
Don't want to draw all this? Let AI hatch it for you โ /hatch
File Layout
Grid & Timing
Every tier uses an 8-column grid with a 192ร208 cell.
Other cell sizes are allowed if width % 8 == 0 and
height % rowCount == 0, keeping the same aspect ratio across tiers.
Codex โ spritesheet.webp
The required base sheet and fallback for every state. Carries idle, mouse interactions, errored, waiting, and fallback poses. If Lite and SoA are absent, the whole pet renders from here.
Lite โ codogotchi-lite-spritesheet.webp
Replaces Codex's generic "running" with per-activity art โ all agent hook states plus idle mood escalation. When present, it wins over Codex for those rows.
| Row | Animation | ActivityState | Notes |
|---|---|---|---|
| 0 | idle | idle | No active session / quiet default |
| 1 | idle-impatient | idle (escalated) | No activity for a while |
| 2 | idle-frustrated | idle (escalated) | Idle even longer |
| 3 | standby | standby | Waiting for the developer |
| 4 | thinking | thinking | Exploring / searching the codebase |
| 5 | reading | reading | Reading source (light streak) |
| 6 | cramming | cramming | Deep-reading (3+ reads in a row) |
| 7 | implementing | implementing | Writing code |
| 8 | testing | testing | Running tests / verify / lint / build |
| 9 | errored | errored | Agent failed โ distressed |
| 10 | waiting_for_input | waiting_for_input | Awaiting a permission prompt |
SoA โ codogotchi-soa-spritesheet.webp
Son-of-Anton delivery-gate moments, shown only when
~/.codogotchi/gate.json is active and unexpired. Gate art
takes precedence over the hook state for the duration of the gate.
| Row | Animation | gate.json value | Notes |
|---|---|---|---|
| 0 | ticket_started | ticket_started | Delivery ticket just started |
| 1 | green_tdd | green_tdd | Tests passing |
| 2 | red_tdd | red_tdd | Failing test committed |
| 3 | open_pr | open_pr | PR opened for review |
| 4 | adversarial_review | adversarial_review | Subagent review in progress |
| 5 | poll_review | poll_review | AI review window open |
| 6 | record_review | record_review | Review outcome recorded |
| 7 | advance | advance | Phase / ticket advanced |
| 8 | ticket_completed | ticket_completed | Ticket marked done |
| 9 | review_clean | review_clean | Review recorded as clean |
Resolution order
The renderer resolves which row to animate using this priority โ first match wins. Gate art shows only while active; otherwise the hook state shows through; Codex is the universal fallback.
Compliance checklist
- check_circle pet.json has at minimum an id (lowercase slug) and display_name.
- check_circle spritesheet.webp present, 8 columns ร 9 rows, cell aspect matches all tiers.
- check_circle imageWidth % 8 == 0 and imageHeight % rowCount == 0 for every sheet.
- check_circle Lite sheet (if present) is 8 ร 11; SoA sheet (if present) is 8 ร 10.
- check_circle WebP lossless recommended (PNG also accepted); 8 frames per row.
- check_circle Folder installed at ~/.codogotchi/pets/<pet_id>/, then restart the app.