A collection of tasks built with mjswan.
| Task ID | Robot | Description | Preview & Link |
|---|---|---|---|
husky |
Unitree G1 | Skateboarding under whole-body control (HUSKY, RSS 2026) | ![]() mjswan.com/s/oM-paPA |
wbc |
Unitree G1 | One wbc-mjlab tracking policy over various motions | ![]() mjswan.com/s/XWwo7dV |
pacman |
Unitree G1 | Dodging thrown balls from a head depth camera (PAC-MAN, 2026) | ![]() mjswan.com/s/GOTofiq |
microduck |
Microduck | Every policy the robot ships: walk, stand, sit, ground pick, ball kick, roulade, roller skate (Microduck) | ![]() mjswan.com/s/DOGILsh |
musclemimic |
MyoFullBody | A 354-muscle body tracking a walking clip with the public 2.05e9-step checkpoint (MuscleMimic, 2026) | ![]() mjswan.com/s/gOrSan8 |
uv run msp <subcommand>
| Subcommand | Description | Options |
|---|---|---|
list |
List the task IDs | none |
run <task-id> |
Build a task and open it in the browser | --host (localhost), --port (8080), --no-open, --output-dir |
build <task-id> |
Build a task without launching | --output-dir |
mjswan_playground can be imported as a Python package, and each task's builder can be used to build and launch the demo:
import mjswan_playground
builder = mjswan_playground.load("husky")
builder.build(output_dir="dist").launch()Each task also lives at mjswan_playground.<task_module>.main (the task ID with underscores, e.g. mjswan_playground.husky.main), exposing setup_builder().
This project is licensed under the Apache-2.0 License. The upstream assets each task fetches carry their own licenses. Please see each task's README and follow the respective license terms.




