One prompt. Three models. Three Wordle clones.

Each model below was asked, in a single pass, to produce a working Wordle clone. What it emitted is what runs here — source unmodified, one container each, behind the same proxy. Pick a model and play it.

today's puzzle source: nytimes.com/svc/wordle/v2
checking… open in new tab ↗

Measured artifact comparison

Read straight off the three artifacts running on this host. Nothing here is a score, a ranking, or a judgement — it is what each build contains and does. Open a row's disclosure to see how the number was taken.

How this is served

One container per model

Every clone is a node:22-alpine image that copies that model's artifact into /app and runs node server.js. No clone's source was patched, renamed, or rewritten; the only knobs are environment variables and container security options (read_only, cap_drop: ALL, non-root, no published port). Caddy terminates TLS with Let's Encrypt and is the only thing that listens on 80/443.

Why three hostnames

Each clone asks for its own assets and API by absolute path (/app.js, /api/puzzle). Serving them under one host with a path prefix would break those requests, so each clone keeps its own subdomain. This hub reaches a clone's health endpoint only, through /probe/<clone>/api/health, which is why the status above works without changing any clone.

The models

Two are different models; the third is the same architecture as the second at a smaller quantisation, so the second and third columns isolate quantisation while the first changes the model family. The IQ3_XXS build was served locally by llama.cpp on four RTX 5060 Ti cards with NVMe-backed offload and a 240k context.