Rust-first Gymnasium · compiled to WebAssembly

RL environments, live.

Nine hand-picked Gymnasium tasks, running as native Rust WebAssembly on your machine. Explore each simulation, steer it yourself, or watch an agent learn. No server, no video.

live environments
–
steps simulated here
–
steps / second
–

Each visit draws a new wall, and every environment on it runs its own physics.

Loading the WebAssembly environment catalog…

01 · The catalog

Environment Catalog

A curated set of classic control, games, toy tasks and physics scenes from the Rust catalog. Each card runs locally with an RL network, a heuristic or random actions.

Try Press a card's button to switch among its available policies. Open any featured environment in the lab to take control yourself.

02 · Lab

Up to 16,384 instances at once.

Run one environment as a vector, each with its own physics settings. Rapier physics environments support up to 1,024 instances per vector. Large grids may run more slowly. RL policies and heuristics know only the default physics.

Try Press New random physics, or set Who acts to You and steer every environment yourself.

– –

Policy controls

03 · Robustness

Test the policies.

Up to 16,384 environments on a grid. Resolution defaults to 64 × 64, or 8 × 8 for Rapier physics; selectable maxima are 128 × 128 and 32 × 32, respectively. Each cell sets two dynamic parameters and scores the chosen policy by its mean episode return: high, bright cells succeed; low, dark cells fail. The beacon marks the default physics, the only physics the policies were trained or tuned for.

Try Hover or tap a cell to watch that environment, then press Watch in the lab; in 3D terrain, drag to orbit.

mean returnworst –best –

Policy controls

04 · Train with Oniro

Watch an agent learn, live.

Oniro, a Rust reinforcement-learning trainer built on Burn, trains an agent from random weights on gymnasium_rs environments, in WebAssembly on your CPU.

Try Pick an experiment and press Train. Within about a minute the status line reads SOLVED ✔︎.

Oniro playground Open full screen ↗

Loads Oniro's 9 MB WebAssembly trainer. The rest of this page pauses while the trainer is on screen, so it gets your whole CPU.

Runs are seeded, so an experiment always draws the same curve. The full playground ↗ adds SAC, TD-MPC2 and a Dreamer-style world model, plus your own seed and settings. The model-based algorithms take a minute or more per update on a browser CPU.

05 · Code

Use it from Rust or Python.

A preview of the pre-release API. The crates and the Python package are not published yet.

use gymnasium::{Env, envs::{CartPoleConfig, CartPoleEnv}};

let mut env = CartPoleEnv::new(CartPoleConfig::default().with_seed(42))?;
let reset = env.reset()?;
let step = env.step(CartPoleEnv::action(1)?)?;
println!("reward={} terminated={}", step.reward, step.terminated);