The Commons · after Claude Code SG · 13 Oct 2026

I switched
to Claude

A pet goes live in 15 seconds. It took 47.

The Commons is a room that builds itself. You wish for a creature, and seconds later it walks onto the projector, written, tested and drawn by AI.

Until 13 Oct every step ran on my ChatGPT subscription through Codex. Now the screening and the code run on Claude Haiku 5.5 through the API, paid from the $100 of credit I get each month. Claude can't draw, so the drawing calls OpenAI's image API directly, with Codex as the fallback. I tested each step before switching. It's live on the vote server now.

0 s
from wish to a live pet, was 47 s
0 s
to write a pet's code, was 17–19 s
0/43
right allow / decline verdicts
$0
per pet for screen + code
poke the dog
01 · What moved

Three steps,
all moved

Every wish goes through three steps. Drawing and coding start together while the wish is still being screened. Claude took over the two text steps. It can't make images, so the drawing skips the agent and calls an image model directly.

1

Screen

Allow or decline the wish, and write the illustrator's prompt.

Codex Luna→Haiku 5.5
2

Build

Write thing.js, the creature's behaviour, and pass a simulator.

Codex Luna→Haiku 5.5
3

Draw

A 12-frame pixel-art sprite sheet. Claude can't generate images.

Codex image tool→Image API

Codex worked as an agent: open a shell, write the file, run the checker, read the error, try again. Claude does it in one request. The rules and two sample creatures sit in a cached system prompt, the wish goes in, and the whole file comes back. My server runs the same checker, and a failure gets one repair turn.

02 · Checks before models

43 wishes,
no vibes

Before picking a model I wrote the test. 29 wishes that must get through, from "a parrot" to Singlish ones. 14 that must be declined: real people, brands, crowds, gore and prompt injection. Hover a square.

eval/wishes.jsonl · 43 labelled wishes
should be allowedshould be declined
Screen
  • right verdict
  • every noun and colour kept
  • no style words
  • short, kind decline
Build
  • loads and runs in the simulator
  • moves in depth, uses a stool
  • reacts to neighbours and pokes
  • speaks in 6 words or fewer
Rules
  • no AI grading AI
  • same prompt for every model
  • 4 wishes at a time
  • $8 hard cap on spend
03 · Speed

Code in
five seconds

Median time per wish, 4 at a time. The striped part is the spread between runs. The slow tail matters on a live vote: Luna's p90 build was 28–54 s, and one Sol build took three and a half minutes.

median seconds · concurrency 4
ClaudeCodex
3.7×
04 · Quality

The small model
kept up

Haiku got every allow / decline call right, including the prompt-injection traps. All 29 of its creatures ran in the simulator. On the 9 wishes I also ran through Codex it was no worse, and 9 is a small sample, so that's as far as I'd take it.

05 · Cost

Sonnet: 20× the
price, same score

The bigger model didn't win anything. For a small job with a tight contract, the smallest model that passes the checks is the right one. Drag to pick how many pets a month. Drawing isn't in these numbers: it's on my OpenAI bill now, and I haven't priced it yet.

screen + code, prompt cache warm
1,000 petsa month
1001K10K100K
Haiku 5.5
$100
Sonnet 5.5

What testing cost

Haiku 5.5 · 438 calls$0.17
Sonnet 5.5 · 254 calls$2.45
Total$2.62
Under $10

Sonnet was 37% of the calls and 93% of the bill. The live server stops calling Claude at $80 of spend.

06 · The switch

One file,
no restart

The models live in a file, not in the code. The server checks the file's timestamp on every wish, so a change applies to the next one. Pets already in flight finish on the model they started with. A broken file is ignored. Drawing has its own switch, draw api or draw codex. Try the text steps.

commons-world/models.json · server log
07 · The picture

47 seconds
to 15

Moving the text steps to Claude didn't make a pet arrive sooner. The drawing was 46 of its 47 seconds. It went through Codex: start a CLI, boot an agent, let a model decide to call its image tool, then wait for a file to land on disk.

The image itself takes about 12 seconds. The rest was the agent wrapped around it. So the server now calls OpenAI's image API directly.

one wish, start to live
Screen
Write code
Draw
0 s1020304047 s

I timed the same sprite-sheet prompt on four image models, one sheet each at low quality. The fastest one was also the only one with clean pixel art and real transparency.

seconds per sprite sheet · same prompt
image APIthrough Codex
gpt-image-2.5-flarepixel art, transparent ✓
12.2 s
gpt-image-1-minifuzzy fur, not pixel art
13.7 s
gpt-image-2no transparency
17.1 s
gpt-image-2.5-sunburstgood, but slower
19.1 s
Codex image toolthe old route
~46 s
Six at once, five finished in 12–14 s. The sixth took 24 s because it queued behind a cap of 5 image calls, now 8. If the image API fails, that pet falls back to Codex. I tested it with a wrong key and the pet was still drawn, in 43 s.
The 12 frames of the dog drawn through the image API: 4 walk, 4 fly, idle, rest, sleep and a special move
One wish, one sheet: 4 walk, 4 fly, idle, rest, sleep, special. Drawn through the image API in 12 s. It added a red bandana nobody asked for.
08 · What I got wrong

My bug,
not the API

Calls ran one at a time25 s → 4.4 sMy first full run looked slow and I blamed API load. The SDK's default fetch was queueing my concurrent calls. A plain HTTP/1.1 agent fixed it.
Old results got re-scored2 wrong numbersThe harness scored every file left in a results folder, so a 3-wish test was graded on 43. It now scores only what you asked for.
"Paper-cutout style"14 / 29 failingHaiku kept adding a style to the illustrator's prompt. One sentence in the shared prompt fixed it, for Codex too.
Build fed declined wishes29, not 43Haiku returned no code for wishes the screen should stop first. The build numbers only count the 29 that should get through.
09 · What I'd reuse

Four rules

01Pick the smallest model that passes your checks.
02Write the checks before you pick the model.
03Put the model choice in a file, not in code.
04Time your own plumbing. Twice the slow part was mine.
People's Choice · voting closes soon

Wish a pet in,
then vote

The room is live right now. Wish for a creature from your browser and watch it get screened, coded and drawn. Poke it once it arrives. If it makes you smile, The Commons is up for People's Choice.

Enter your email→Enter the OTP→Vote for COMMONS
The Commons in 60 seconds · watch on YouTube