dsh-pets
English | 中文

A Codex Pets integration for the DeepSeek Harness Web GUI: one transparent, draggable desktop pet that follows the current session's working state, plus a settings section to pick the pet from the local pets directory.
Fully compatible with the codex-pets package format — every V1/V2 spritesheet pet (pet.json + spritesheet.webp) works as-is. Discover and install pets at codex-pets.net, then npx codex-pets add <pet-id>; they appear in the settings section after a service restart.
The node half serves ~/.codex/pets (the codex-pets CLI layout, CODEX_HOME overridable) under /ui-pets: a manifest endpoint listing installed pets and one route per spritesheet. The browser half renders pets from those same-origin assets — no CDN, no CORS, works offline.
The pet is a standard Codex V1 spritesheet (8 columns, 192x208 cells, 9 state rows) animated with CSS steps(): thinking shows waiting, working alternates running/review/running-right, done waves, blocked fails, and idle rotates through fidget rows. A white speech bubble carries the status line (thinking, the session title as the task, or idle banter), and a chip below shows the session's agent preset. The pet drags anywhere (clamped to the viewport with bubble clearance) and the position persists.
Settings

The settings section (nav entry "Pets") has two parts:
- Pet picker — a grid of cards, one per installed pet. Each card shows a live animated idle preview, the pet's display name and id, and the selected one carries a "Current" badge. Click a card to switch the desktop pet; newly installed pets appear after a service restart.
- Bubble text — override the speech bubble copy per state: thinking, working with no task, working (
{task}is replaced with the task title), blocked, done, and idle banter (one line per entry). Save applies the overrides; reset restores the defaults.
Selection, bubble overrides, and the pet's position persist in one localStorage key (dsh-pets.v1).
Model Experience
None: the plugin projects the sessions snapshot into an overlay, issues no prompt content, and writes no session event.
#### KV Cache effect
None.