Codex Pets
Comparison guide

Codex Pets vs OpenPets

Both projects put animated pets next to your coding agent, but one is a moderated public registry and the other is a desktop companion app. This guide compares them with reproducible queries against both public surfaces.

How we tested

The Codex Pets maintainers ran these reproducible checks on July 30, 2026 against the production Codex Pets deployment and the public OpenPets catalog. Each one uses only public read-only routes, so any agent or human can repeat them verbatim.What we did not test: we did not install or run the OpenPets desktop app for this update. Every claim about its desktop runtime, leases, hooks, and plugins comes from the official OpenPets documentation, linked in Sources. The catalog numbers are first-hand: we fetched the public catalog descriptor ourselves, shown below.

Fetch one approved pet as JSON

curl -s https://pets.ydb-qdrant.tech/api/pets/kesha
{
  "pet": {
    "slug": "kesha",
    "displayName": "Kesha",
    "kind": "creature",
    "tags": ["corgi", "dog", "cute", "animated"],
    "status": "approved",
    "petJsonUrl": "/api/assets/asset_c4f97b4b4981/pet.json",
    "spritesheetUrl": "/api/assets/asset_c4f97b4b4981/spritesheet.webp",
    "zipUrl": "/api/assets/asset_c4f97b4b4981/pet.zip",
    "approvedAt": "2026-07-26T20:16:52.124Z",
    "downloadCount": 1
  }
}
Returned the full public record for one approved pet: moderation status, kind, tags, and the petJsonUrl, spritesheetUrl, and zipUrl a pack install needs. (Run on July 30, 2026.)

List the registry tag vocabulary

curl -s https://pets.ydb-qdrant.tech/api/tags
{
  "generatedAt": "2026-07-30T11:12:08.317Z",
  "total": 236,
  "tags": [
    { "name": "anime", "count": 64 },
    { "name": "chibi", "count": 43 },
    { "name": "girl", "count": 40 },
    { "name": "cartoon", "count": 12 },
    { "name": "final fantasy", "count": 10 },
    "… 231 more tags …"
  ]
}
Returned 236 distinct tags across approved pets on July 30, 2026, each with a usage count. Agents can ground their searches in this vocabulary instead of guessing keywords. (Run on July 30, 2026.)

Filter the registry by kind

curl -s "https://pets.ydb-qdrant.tech/api/pets?kind=character&pageSize=3"
{
  "total": 3,
  "pets": [
    {
      "slug": "iris",
      "displayName": "Iris",
      "kind": "character",
      "tags": ["anime", "manga", "humanoid", "developer", "original", "source-github", "license-mit", "v2"],
      "status": "approved"
    },
    { "slug": "minty-codex-pet", "displayName": "…" },
    { "slug": "sakura", "displayName": "…" }
  ]
}
First page of a live kind=character filter: Iris, Minty, and Sakura. Registry list endpoints support typed filters and pagination, so an agent never has to mirror the whole catalog to answer a question. (Run on July 30, 2026.)

Read the same registry as TOON

curl -s "https://pets.ydb-qdrant.tech/api/pets.toon?q=cat"
total: 55
pets[55]:
  - id: pet_897896f5b42c4ccda4a3ca
    slug: pink-catgirl
    displayName: Pink Catgirl
    kind: creature
    tags[4]: anime,catgirl,pink,chibi
    status: approved
    downloadCount: 47
  - …
The q=cat query matched 55 approved pets on July 30, 2026. TOON is a compact, token-efficient rendering of the same approved registry data, built for agents that pay per token. (Run on July 30, 2026.)

Fetch the OpenPets public catalog descriptor

curl -s https://openpets.dev/pets/catalog.v3.json
{
  "version": 3,
  "generatedAt": "2026-07-11T13:10:59.974Z",
  "total": 1273,
  "pageSize": 100,
  "search": "https://openpets.dev/pets/catalog.v3/search.json",
  "filters": {
    "categories": [
      { "id": "western", "label": "Western", "count": 376 },
      { "id": "asian", "label": "Asian", "count": 634 }
    ],
    "originalsCount": 47,
    "featuredCount": 263
  },
  "pages": [
    "https://openpets.dev/pets/catalog.v3/page-000.json",
    "… 12 more static pages …"
  ]
}
Our own fetch of the OpenPets catalog descriptor on July 30, 2026: 1,273 pets spread over 13 static JSON pages, plus a separate static search index. The descriptor carries no moderation status, per-pet counters, or live query API. (Run on July 30, 2026.)

What OpenPets actually is

OpenPets is a local-first desktop companion app. Per its documentation, it is an Electron app that lives in the system tray and puts an animated pet window on your desktop. AI assistants drive it through a stdio MCP server (@open-pets/mcp) with three tools — openpets_status, openpets_react, openpets_say — routed over a local socket with short-lived leases.Codex Pets is the opposite shape: a moderated public registry of pet packs (pet.json plus a spritesheet atlas) that agents search, cite, install, and share through MCP tools, HTTP routes, OpenAPI, and llms.txt.

Which one fits?

SurfaceUse whenExample
Codex Pets pet packsYour agent is Codex. The CLI installs packs into the Codex home directory; other hosts need the manual pet.json plus spritesheet steps.npx @astandrik/codex-pets install kesha
Codex Pets registry (MCP/HTTP)The agent should search, filter, and cite the approved catalog itself through tools or plain HTTP, in JSON or TOON.search_pets, GET /api/pets?kind=character
OpenPets desktop appYou want an animated pet window on your OS desktop that reacts to assistant status over a local socket, MCP tools, or lifecycle hooks.npx -y @open-pets/mcp@latest
OpenPets + Codex Pets togetherYou develop packs locally and want to preview them on the desktop; the OpenPets docs describe importing Codex-format pets from ~/.codex/pets/ for testing.~/.codex/pets/<pet-id>/pet.json

Example pets from this guide

Approved Codex pets an agent can cite right now through the registry surfaces above.

Sources

Related guides

Codex Pets vs OpenPets - Codex Pets