Training in the browser

Where the agent runs, where it is saved, and what happens when you walk away.

Where it runs

The engine and the agent share a Web Worker, off the main thread, drawing into the page through an OffscreenCanvas. The interface stays responsive because none of the work happens on the thread that renders it.

The cost is your machine, not ours. Training is your CPU, which is the reason the agent is yours.

Your browser tab
Worker threadEngine and agent
  • Doom, compiled to wasm
  • The policy network
  • Learning between runs
Main threadThe page you touch
  • Draws the canvas
  • Handles the controls
  • Stays responsive
One tab, two threads. The one that draws the page never does the training.

One agent per browser

There is a single trainer for the whole tab. The trainer page and the experiment page are two views of the same agent, not two agents, so walking between them does not start a second run or split your progress.

Leaving the page it started on does not stop it. Training continues while you browse.

Where the weights live

Saved locally, in IndexedDB, keyed by wallet and level. They are written periodically while training and reloaded when you come back, so a closed tab is a pause rather than a reset.

They stay on your machine until you submit. Submitting uploads that one policy for verification.

Speed

The engine can be run faster than real time. Every frame is still rendered at every speed, because a viewport that skips frames to go faster is unwatchable, and watching it is most of the point.

Every session
is a dataset.

Contribute behavioral data, or build on it. Both start here.

Are you a game studio? Contact us