Skip to main content
Train is the dream-training API. Where the Play API creates and embeds playable worlds, Train uses a world model as a training environment: your policy learns inside the dream, then gets examined in a frozen physics exam it never trains in.

Train in the dream

CMA-ES evolves a compact controller inside the doom world model, the same public checkpoint as alakazamworld/doom-dungeon-hg (byte-identical, sha256-verified).

Certify in the oracle

A frozen Webots exam (two physical worlds, fixed contract, anti-exploit control arms) is the sole scoreboard. Dream fitness is never a capability claim.

The pipeline

One POST /jobs runs both stages and leaves a machine-readable job.json:
Jobs are asynchronous, kill-tolerant, and append-only. Poll GET /jobs/{job_id} for live progress; never block on the POST.

Lineage is an explicit input

Warm-start any job from a prior champion with train.parent (an inline genome or a prior job_id). Lineage is recorded in the artifacts, so chains are reproducible with no ambient state. Warm-started jobs reproduce the historical best-known profile: contact-safe, 0 contacts in 40/40 exam episodes.

Two ways to train

Server jobs (this API)

Submit a spec, get a reproducible, certified result. Best for lineage chains and anything you want the oracle’s verdict on.

Local gym (your hardware)

The world-model weights are public. Run the dream locally (WebGPU or ONNX Runtime) at your own speed, then submit champions to the exam. See Local gym.

What’s live vs. roadmap

The serving VM sleeps when idle; the first request wakes it. During the boot window (4 to 8 min) requests return 503 {"status": "waking"} with a phase field; retry the same call until it succeeds. Measured wall-times on the serving VM: smoke job 12–17 min, real-scale job 3–4 h, exam alone 4–6 min (the VM’s CPU generation varies per boot).