A local animated pet for the ChatGPT desktop app: a small queer object of purposiveness, plurality, and shared delight.
queer dog is a cream-white mechanical companion with deep-purple eyes, a rainbow energy mane, one rainbow tail, and a luminous diamond core. It includes nine activity animations and a continuous sixteen-direction gaze system.
git clone https://github.com/Oscarchn/queer-dog.git
cd queer-dog
./install.shgit clone https://github.com/Oscarchn/queer-dog.git
cd queer-dog
.\install.ps1Then open the ChatGPT desktop app:
- Open Settings > Pets.
- Select Refresh.
- Choose queer dog.
- Enter
/pet, or choose Wake Pet from the command menu.
The official Pets documentation explains that custom pets are stored locally and do not automatically sync to ChatGPT Web. The installer targets the current local pet directory used by the desktop app: ${CODEX_HOME:-~/.codex}/pets/queer-dog.
The name is deliberately lowercase. It refuses the monumentality of a proper noun while keeping queer visible as a way of living: relational, unfinished, plural, and unwilling to reduce difference to a decorative accent.
The rainbow is therefore not a sticker placed on a neutral machine. It is structural energy: mane, tail, chest, and motion all depend on it. The dog remains recognizable while its posture, attention, and emotional state change. Identity persists without becoming static.
In Kant's account of aesthetic judgment, beauty appears purposive without being subordinated to a determinate practical purpose. queer dog moves with intention, rhythm, and internal coherence, yet it does not turn companionship into a productivity metric. Its animation has form without demanding an outcome.
This is why the pet is ambient rather than managerial. It accompanies work but does not score, discipline, or optimize the person working.
Kant's “disinterested” pleasure is not indifference. It is enjoyment that does not begin by asking how an object can be possessed or used. The dog's softness, mechanical precision, and luminous color invite attention before utility.
The value claim is simple: presence does not need to justify itself through output. Even the failed, waiting, and blocked states keep the character's dignity intact. A being does not become less worthy when it is not succeeding.
Kant's sensus communis imagines aesthetic judgment as communicable: a feeling offered to others as if a shared world were possible. A public, forkable repository turns that claim into practice. People can copy the pet, reinterpret it, rename it, or alter its motion grammar.
But queer commonality cannot mean sameness. The universal is not a mold into which difference must disappear. Here, a common world is produced through the negotiation of distinct bodies, viewpoints, and attachments.
The sixteen-direction gaze is a value structure, not only a technical feature. There is no single normative “front.” The character remains itself while looking up, down, left, right, and between. Multiplicity is modeled as continuity rather than deviation.
The design therefore moves from an aesthetic proposition to an ethical one:
Difference is not the obstacle to a shared world; it is one of the conditions that makes a shared world meaningful.
| Row | State | Meaning |
|---|---|---|
| 0 | Idle | Calm presence without demand |
| 1 | Running right | Directed movement toward the viewer's right |
| 2 | Running left | Directed movement toward the viewer's left |
| 3 | Waving | A greeting carried by the body rather than detached effects |
| 4 | Jumping | Joy expressed through lift and return |
| 5 | Failed | Vulnerability without loss of identity |
| 6 | Waiting | Attention held without impatience |
| 7 | Running | Focused task activity, not literal locomotion |
| 8 | Review | Careful inspection and reflection |
| 9–10 | Look directions | Sixteen clockwise attention states in 22.5° steps |
- Pet id:
queer-dog - Display name:
queer dog - Sprite version:
2 - Atlas: transparent WebP,
1536 × 2288 - Grid:
8 × 11 - Cell size:
192 × 208 - Standard animation rows:
9 - Gaze directions:
16 - Atlas size: under
20 MiB
The repository root is also the installable package: pet.json and spritesheet.webp are copied together without transformation.
python3 scripts/verify_pet.py --root .The verifier checks the manifest, WebP container, v2 dimensions, file-size ceiling, and committed SHA-256 checksum without third-party Python packages. GitHub Actions runs the same check for every push and pull request.
QA evidence is kept in qa/: atlas validation, independent visual review, and three-reviewer blind direction validation. All four cardinal directions are hard-gated.
- Fork this repository.
- Preserve the
8 × 11atlas geometry and192 × 208cell contract. - Change
idanddisplayNameinpet.jsonso your remix can coexist with the original. - Replace
spritesheet.webp. - Update
checksums.txtand run the verifier.
Forking is not treated as dilution. It is the social life of the design: identity becomes durable enough to travel, yet open enough to be reinterpreted.
- Tested with the local pet system in the ChatGPT desktop/Codex environment on 2026-07-10.
- Custom pets are local to the computer; they do not automatically sync to ChatGPT Web.
- The local installation directory is an implementation detail and may change in a future desktop release. If the app no longer discovers the package, consult the current official Pets documentation.
- This community project is not affiliated with or endorsed by OpenAI.
Code, documentation, and artwork are released under the MIT License to support copying, modification, and redistribution.

