Skip to main content
This page is the demo

A world model you can put in a receipt.
Same actions in, same frames out — everywhere.

An interactive world model (Genie / Oasis / Matrix class) generates the next frame from your action through a float network, and streams the pixels to you — so the world is non-reproducible, unmetered, and ephemeral. wai.world.model flips the wire: it carries the action trace, not the pixels, and the world model is integer. The transition z₊₁ = T(z ‖ action) and the synthesis frame = g_s(z) are both integer convolutions — the same pure-i64 Rust the native sink runs, compiled to wasm32, no float, no ML runtime. So from one initial state + your keystrokes, every frame is byte-identical on every machine, and this page re-checks each one's hash. And every keystroke is a signed action op whose trace replays — any order — to one portable session hash. That is replay-equivalence for a generated world: a session you can pin, audit, and put in a receipt.

decoding… ↑ ↓ ← → to play · or click the canvas first
frame decode frame hash session hash

Why this is the moat

First the page replays a committed action walk through the integer world model and checks every generated frame's hash against the native reference — all match, byte-for-byte. Then it hands you the arrow keys: each keystroke advances the integer transition and renders a new frame in pure i64, and is recorded as a signed action op. The trace of what you did replays — in any arrival order — to one portable session hash, the same on every machine. A float world model can't make either promise: its frames drift between machines and its session is unsigned and unmetered. Here the world is integer all the way down, so the frames hash-converge and the session is a signed, auditable artifact. Reference engine + conformance corpus in the open-standards repo, Apache-2.0.