launch reel · 1080×1080 · download mp4 · rendered by agentreel
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.
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)
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).
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.
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.