Petfolioone issued every morning
Pets for your coding agent. Issued daily.
Each one stands for something we actually shipped, and comes with a ticker, an edition number and a hash. Free to hold. Install one in a line or request your own.
No account, no card. Works as a ChatGPT / Codex pet, and in Claude Code, Cursor, OpenCode and Gemini CLI through OpenPets.
THE COLLECTION
Every issue so far.
Every card is a finished pack with its ticker, edition and hash. Install it with one line, download the zip, or open it to see all nine states.
Loading the gallery...
WHAT YOU GET
A zip, not a screenshot.
Frames cut to cell size, alpha cleaned, the whole sheet checked against OpenAI's validator before it reaches you. A sheet that fails does not ship.
- A 1536 x 1872 atlas, 8 by 9 grid of 192 x 208 frames
- 57 frames across 9 states: idle, running, waving, jumping, failed, waiting, working, review
- A
pet.jsonmanifest, named and pointed at the sheet - Clean alpha, so no colored halo on a dark terminal
- One zip, one folder, no build step
HOW IT WORKS
Four steps. About two minutes.
Answer four short questions. The builder draws the base pose, builds eight animation rows from it, cuts every frame and assembles the atlas while you watch.
-
01
Style.
Pixel, clay, plush or sticker. Everything after follows that choice.
-
02
Character.
What it stands for, and what it looks like. The side project, the bug that would not die, the dog.
-
03
Details.
Name it, color it, add one specific detail.
-
04
Hatch.
Base pose, eight rows, every frame cut and checked.
WHERE IT LIVES
One file. Every harness.
Codex reads the format natively and ChatGPT on the web takes the same atlas as an upload. OpenPets runs the same file in Claude Code, Cursor, OpenCode and Gemini CLI. A build for whatever comes next follows when its format is published.
~/.codex/pets/. Install guide
INSTALL IN ONE LINE
Replace <id> with the last part of a gallery URL, for example byte-toad. The Install button on every card copies the line with the id filled in.
curl -fsSL https://3ps.online/pets/install.sh | sh -s -- <id>& ([scriptblock]::Create((irm https://3ps.online/pets/install.ps1))) <id>Each script downloads the zip, unzips it into ~/.codex/pets/<id>/ (Windows: %USERPROFILE%\.codex\pets\<id>\) and tells you to restart the agent. Add --dir (or -Dir) to put it somewhere else. Both scripts are short and readable: install.sh, install.ps1.
THE MORNING ISSUE
Supply: one a day.
Every morning one new pet is issued. Most stand for something we shipped that week, and the tag says what. Each gets the next edition number and its own page. Send yours and it joins the queue with your name on it.
One email a day, the new pet and nothing else. Leave any time.
QUESTIONS
The things people ask.
What is a Codex pet, and is this the same thing?
Yes. Codex and the ChatGPT desktop app call the feature Pets: a small animated character in the agent's window that changes with what the agent is doing. Petfolio makes companions in that exact format. Other harnesses read the same format through OpenPets.
Is it free?
Yes. You describe it, we hatch it the next morning and email you the link. No account, no card.
Where do the files go?
On macOS and Linux, ~/.codex/pets/<id>/. On Windows, %USERPROFILE%\.codex\pets\<id>\. The folder holds pet.json and the sprite sheet. Restart the agent and it is there. The one-line installer does exactly this.
Does it work with Claude Code, Cursor or Gemini CLI?
Through OpenPets, which bridges the Codex pet format to Claude Code, Cursor, OpenCode and Gemini CLI. The same atlas installs unchanged.
Can I use one in ChatGPT on the web?
Yes. Personalization, Pets, upload the atlas from the zip. ChatGPT accepts a transparent PNG or WebP at exactly 1536 x 1872 pixels, no larger than 20 MiB, which is what every pack holds.
What is in the download?
A zip holding a 1536 x 1872 transparent atlas, 8 columns by 9 rows of 192 x 208 frames, one row per state, plus the pet.json manifest.
Why do sprites from other tools have ugly edges?
Most of them scale after cutting frames, which leaves color on pixels that should be fully transparent. You see it as a halo on dark backgrounds. Petfolio exports at native cell size and cleans the alpha.
Is it checked before I get it?
Yes. Every pack runs through OpenAI's open-source pet validator before it is zipped. A sheet that fails does not ship.
What are the ticker and the number on each card?
Its ticker, its edition (the first one published is No. 001), the day it was issued, and a short hash of its sprite sheet. The same marks are on its page.
What is the small tag on a card?
What that pet stands for: a project, a workflow, a skill or agent we built, a keepsake from home. Puns do not get one. A pet you request stands for whatever you tell us it is for.
Can I put my own in the gallery?
Yes. Submitted companions get their own page with your name and a link back to you. Use the submit page. Submissions are reviewed each morning.
Hold one.
Or have one made. Say what it stands for and how it should look, name it, leave an email. It is issued the next morning and the link comes to you.
No puts. Holders only.
MADE BY
One person in Kentucky. Petfolio is built in Elizabethtown, Kentucky. The companions in the gallery are free to use.
FOR TEAMS AND BRANDS
A companion of your mascot.
Send the mascot and a sentence about it. You get back a validated pack the whole team installs with one line.
Quoted per mascot. You own the files.