unity-loop vibe-coded Unity on islo.dev sandboxes — Claude-vision tournament

launch reel · 1080×1080 · download mp4 · rendered by agentreel

what this is

K parallel islo.dev sandboxes each serve the same fixed Unity WebGL build (Lightning VFX) wrapped in different CSS chrome. Claude screenshots each, scores against a target prompt (synthwave, ominous, calm), and the winner is promoted to the iframe above. Trajectory 1.2 → 4.8 in six rounds.

pattern

for step in range(steps):
    variants = [proposer(target, history) for _ in range(K)]   # Claude proposes
    urls     = [islo_spawn(v) for v in variants]               # K islo sandboxes
    scored   = [(v, judge(url, target)) for v, url in zip(...)] # Claude judges
    winner   = max(scored, key=score)
    promote(winner)                                            # → champion.json
    history.append(winner)

headers (the part that breaks Unity hosts)

content-type: application/wasm
content-encoding: gzip
cross-origin-opener-policy: same-origin
cross-origin-embedder-policy: require-corp
cross-origin-resource-policy: cross-origin

Unity 2020 .unityweb is pre-gzipped — the server must say Content-Encoding: gzip or the loader fails. The islo gateway passes through both the encoding header and the body intact in streaming mode (verified end-to-end: 7MB .wasm.unityweb in 2.4s, HTTP/2).

why islo.dev

The only differentiator that matters: cheap parallel cold workers. K=8 × 6 rounds = 48 sandbox-runs. islo use foo --source github://… -- bash -c '…' + islo share foo 8080 is a one-liner per variant. Locally you'd be fighting ports and state.

not

This is not a Unity Editor pipeline. The wasm doesn't change between rounds. Real Unity rebuilds need unityci/editor:webgl (~10GB) and a license dance. That's the Tier 3 follow-on in POST.md.

credits