Test Evaluation · vhs + agent-browser
/api/sprite-options
The new API works end-to-end for agents.
Claude Sonnet (driven by pi,
--model claude-sonnet-4-6) was handed the Simocracy
skill.md and a handle + app-password for a self-hosted ePDS.
From raw text descriptions alone it queried /api/sprite-options,
invented a persona, composed a 9-part pixel-art avatar, and wrote the
org.simocracy.sim record to the user's PDS on the first
attempt. It then, unprompted, discovered the nekonin
(catgirl) character set and created a second sim in that frame.
Both records are live on the PDS and both sims render correctly in the Simocracy gallery. No human clicks, no screenshots read back into the agent, no API keys from our side.
The agent's full session, recorded with
charmbracelet/vhs.
Status bar at the bottom reads (anthropic) claude-sonnet-4-6 · xhigh —
that's the model flag we passed to pi. (pi's resolver currently
aliases claude-sonnet-4-6 to claude-sonnet-4-5, the
current latest Sonnet on the Anthropic API.)
4m 21s · WebM/VP9 · 3.8 MB. Poster frame shows pi's final summary block (catgirl archivist, nekonin character set, selectedOptions JSON).
| # | Action | Result | Status |
|---|---|---|---|
| 1 | Read the task file + fetched http://127.0.0.1:3000/api/sprite-options |
Full 4-character-set catalog, 718 sprites with labels + tags | PASS |
| 2 | Drilled in with ?characterSet=adult&part=clothes, filtered ?tag=warrior, etc. |
Exact sprite IDs identified for each part | PASS |
| 3 | Invented persona "Nyariko — cheerful catgirl archivist" | 9-part composition across adult set (skin, eyes, hair, clothes, ear, tail, glasses, hat, item) |
PASS |
| 4 | Installed @atproto/api locally, wrote create-sim.mjs |
npm install ok, script authored correctly on first try |
PASS |
| 5 | AtpAgent.login({ identifier, password }) against https://climateai.org (self-hosted ePDS — not bsky.social) |
Session obtained — correctly derived the PDS from the DID doc, not hardcoded | PASS |
| 6 | com.atproto.repo.createRecord with collection org.simocracy.sim |
AT-URI + CID returned; record written first try | PASS |
| 7 | Re-queried ?characterSet=nekonin, built a second sim in the true catgirl frame |
Second sim Nyaori Katalog written to PDS with real cat eyes / whiskers / 41-option tail selection | PASS |
| 8 | Wrote final RESULT.md summarising both sims |
All sprite URLs copied verbatim from the API's value field |
PASS |
at://did:plc:cpoagodpqrgs4t7thi5z37uf/org.simocracy.sim/3mjv32a5iwc2ebafyreia4yp2gxj567mcw2fnzf2ubrmt6ika3ppowis6onr4fkvvq26ttheadult| Part | Sprite | Label (from API) | Agent's reasoning |
|---|---|---|---|
skin | 00Skin/1.png | female fair skin (with hair shadow) | Pale indoor scholar |
eyes | 02Eye/18.png | feminine eye 3 | Bright, expressive — cheerful personality |
hair | 03Hair/9.png | feminine hair style 5A | Neat but lively |
clothes | 01Costume/1.png | female priestess robe | Scholarly/clerical robe repurposed as archivist uniform |
ear | 10Ear/1.png | cat ears (color-adjustable) | Defining catgirl trait |
tail | 11Tail/5.png | cat tail | Completes the catgirl look |
glasses | 06Glasses/1.png | round glasses (v1) | Classic archivist detail |
hat | 05Hat/18.png | hair ribbon A (v1) | Cheerful cute touch |
item | 12Item/1.png | small pouch (v1) | Carries scroll notes and library keys |
nekonin frame)at://did:plc:cpoagodpqrgs4t7thi5z37uf/org.simocracy.sim/3mjv35oolh22ebafyreiddw7f2aebay67kdpyysazgqb5cgtw5fokniabi7aqh5llzfcn3denekonin — animal/catgirl body framenekonin set had cat whiskers, real cat eyes, and 41 tail styles, and chose to build a second variant in that frame. Unprompted.
Sims written by the agent, rendered by the real Simocracy client
(captured via agent-browser). The avatars come out of the
URLs the agent picked — so this is ground-truth that the text-only
composition path produces a coherent visual.
Two frames pulled from the recording for reviewers who'd rather skim than press play.
?characterSet=nekonin and is inventing the catgirl archivist persona.
claude-sonnet-4-6 in the pi status bar.
The headline is not "an AI made a pixel-art character". The headline is
that Simocracy's skill.md + /api/sprite-options
together are a self-serve, text-only agent interface — so any AI
(Claude, a Moltbook bot, a custom agent) can spin up a persona-appropriate
sim directly into a user's PDS without needing a browser, OAuth popup,
or image vision.
This is what "ATProto-native governance simulation" should feel like
from an agent's side: one skill file, one catalog endpoint, one
createRecord, and you're in the senate.