The second-dumbest creature in the universe can now be your Codex pet. Made with love. Suggestions welcome.
Use the published package from mychaelconnolly/dopefish-codex-pet:
Install Dopefish in Codex
Manual install from this checkout, useful while testing the local
dopefish-v0.14.0 build:
mkdir -p "$HOME/.codex/pets/dopefish"
cp pets/dopefish/pet.json pets/dopefish/spritesheet.webp "$HOME/.codex/pets/dopefish/"Then open Codex, go to Settings > Appearance > Pets, and refresh custom pets from your local Codex home.
This repo packages a custom Codex pet as a ready-to-install pet.json and WebP
spritesheet.
Project details:
- Built in accordance with OpenAI's documented Codex pet flow.
- Uses the documented
codex://pets/installlink format withname, HTTPSimageUrl, and optionaldescriptionparameters. - Supports local manual install through the Codex home pet directory.
- Keeps the source-pixel style: nearest-neighbor scaling and hard sprite edges.
- Includes the
dopefish-v0.14.0build with per-state animation identity:idle: calm swim with a rare eye blink (frame 3).running-right: the 8-frame left-facing chomp row from v0.13, now with a sine bob.running-left: swim cycle with a full-amplitude sine bob.waving: front-facing greeting using the burpfish frames.jumping: squash-crouch, rise, apex, stretch-fall, settle arc.failed: belly-up tumble and sink, with a burp bubble rising on the final frames.waiting: swim with a bubble rising from the mouth. Bubbles use the original sheet's white rim-and-shine art with a transparent interior.running: swim into a held chomp (unchanged from v0.13) with a gentle bob.review: front-facing stare at the user with a slow blink.
- Includes QA artifacts for review:
docs/contact-sheet.pnganddocs/previews/*.gif. - Includes a README hero reel generator:
scripts/make_hero_gif.pyrendersdocs/hero.giffrombuild/frames/(run the build first).
OpenAI documentation:
The atlas uses Codex's full 9-row pet contract:
idle, running-right, running-left, waving, jumping, failed, waiting, running, review
The installable package lives in:
pets/dopefish/pet.json
pets/dopefish/spritesheet.webp
Atlas geometry:
cell size: 192x208
atlas size: 1536x1872
format: WebP with transparency
Current build:
dopefish-v0.14.0
Current spritesheet.webp SHA-256:
85ba1051f742854e4075ac9060362f216adae938fcf42c9cb664807ebf7aa8ce
The package is built from local reference assets committed under
source/local-refs/ so the spritesheet can be rebuilt without relying on loose
files from a desktop or downloads folder.
The build script creates deterministic frame folders under build/frames/.
Those generated files are ignored by Git. Published runtime assets stay limited
to pets/dopefish/, while review images stay under docs/.
The final atlas fills every Codex pet row, even when states intentionally reuse frames. That keeps the package compatible with the expected 8-column by 9-row pet layout and makes the behavior easier to inspect.
Install dependencies:
python3 -m pip install -r requirements.txtBuild source frames into build/:
python3 scripts/build_exact_dopefish.pyCompose and validate the Codex atlas with the hatch-pet skill scripts:
SKILL_DIR="${CODEX_HOME:-$HOME/.codex}/skills/hatch-pet"
python3 "$SKILL_DIR/scripts/inspect_frames.py" \
--frames-root build/frames \
--json-out build/qa/review.json \
--require-components
python3 "$SKILL_DIR/scripts/compose_atlas.py" \
--frames-root build/frames \
--output build/final/spritesheet.png \
--webp-output build/final/spritesheet.webp
python3 "$SKILL_DIR/scripts/validate_atlas.py" \
build/final/spritesheet.webp \
--json-out build/final/validation.json
python3 "$SKILL_DIR/scripts/make_contact_sheet.py" \
build/final/spritesheet.webp \
--output build/qa/contact-sheet.png
python3 "$SKILL_DIR/scripts/render_animation_previews.py" \
--frames-root build/frames \
--output-dir build/qa/previewsUpdate the packaged pet after validation:
cp build/final/spritesheet.webp pets/dopefish/spritesheet.webp
cp build/qa/contact-sheet.png docs/contact-sheet.png
cp build/qa/previews/*.gif docs/previews/This is unofficial fan art. The opening line references the in-game Dopefish description documented on KeenWiki. This project is not affiliated with or endorsed by id Software, Bethesda, Microsoft, or any rights holder. See NOTICE.md.

