The Microduck robot simulator โ in one command.
Microduck is a 25 cm robot that walks on two legs, made by Pollen Robotics and open-sourced with Hugging Face. This image lets you watch it walk, teach it tricks, and train your own robot brain โ in your browser, on the computer you already have.
You do not need the real robot. You do not need to install Python, or a GPU, or know what a neural network is. You need Docker and one line:
docker run --rm -p 63317:63317 -p 8788:8788 srayuth089/microduck-dockerThen open http://localhost:63317 ๐
Everything is already inside the image โ no downloads on first run, no setup.
| Inside the box | What it means |
|---|---|
| ๐ง 9 pretrained robot brains | walking, standing, kicking a ball, a forward rollโฆ press play and watch |
| ๐ฆด The real robot model | the actual 3D Microduck, with real joint limits and real physics (MuJoCo) |
| ๐ Teach panel | ask for a trick in plain English โ "stand on one leg" โ and watch it learn |
| ๐๏ธ Full training toolkit | train a brand-new walking brain on your own laptop's CPU in minutes |
| ๐ฌ Video capture | film your robot and export mp4/GIF to share |
| ๐ฅ๏ธ Runs anywhere | Intel, AMD, Apple Silicon, Raspberry Pi, even IBM mainframes |
Docker Desktop โ free, for Windows, Mac and Linux. Install it, open it, wait for the whale icon to settle.
Copy this into a terminal (Mac: Terminal, Windows: PowerShell):
docker run --rm -p 63317:63317 -p 8788:8788 srayuth089/microduck-dockerThe first time, Docker downloads the image (~1.5 GB, a few minutes). After that it starts in seconds. When you see this, it's ready:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฆ Microduck is running! โ
โ โ
โ Open this in your browser: โ
โ http://localhost:63317 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Go to http://localhost:63317. You should see two ducks: one walking, one standing.
To stop: press Ctrl+C in the terminal.
Click a duck to select it, then steer with W A S D. It balances by itself โ you only tell it where to go.
Open the policy panel and drag a different brain onto a duck. It changes
behaviour without missing a step. Try dropping roulade on a walking duck.
Open the Teach panel and type something like:
stand on one legwavecrouch
The lab starts training right there. Every ~15 seconds the duck reloads with what it just learned, so you watch it get better in real time. Drag the reward sliders to change what it is rewarded for โ that is the whole idea of reinforcement learning, and here you can feel it.
The Capture panel takes a PNG, or films a clip and converts it to mp4 + GIF.
docker run --rm srayuth089/microduck-docker policiesdocker run --rm -p 63317:63317 -p 8788:8788 \
-e DUCKS="BEST_alpha_walking ball_kick_left roulade" \
srayuth089/microduck-dockerAdd a volume so trained brains, videos and settings survive a restart:
docker run --rm -p 63317:63317 -p 8788:8788 \
-v microduck-data:/data \
srayuth089/microduck-dockerA few minutes on a normal laptop CPU:
docker run --rm -v microduck-data:/data srayuth089/microduck-docker \
train --envs 32 --steps 3000000 --run-name my-first-duck
docker run --rm -v microduck-data:/data srayuth089/microduck-docker \
export /data/runs/my-first-duckThen start the viewer with the same volume and your duck appears in the roster, ready to race against the official one.
| Command | Does |
|---|---|
serve (default) |
start simulator + viewer |
policies |
list available brains |
version |
show exact upstream code this image was built from |
train โฆ |
train a walking policy (train-walk) |
behavior โฆ |
train a trick (train-behavior) |
export โฆ |
export a run to ONNX |
eval โฆ |
score a policy (falls, tracking) |
render โฆ |
render a rollout to mp4 |
bench โฆ |
find the best worker count for your machine |
shell |
a shell inside the image |
Full details: docs/USER-MANUAL.md
The page is blank / "can't connect"
Both ports matter. -p 63317:63317 serves the page; -p 8788:8788 carries the
physics. Use http://localhost:..., not the 127.0.0.1 shown by other tools
and not your LAN IP โ the lab only trusts localhost origins.
"port is already allocated"
Something else is using the port. Move it: -p 8080:63317 then browse to
localhost:8080.
It's slow / the fan is loud
Physics is real work. Give Docker Desktop more CPUs in Settings โ Resources,
or run fewer ducks with -e DUCKS="BEST_alpha_walking".
Apple Silicon warning about platform
Harmless if it appears โ native arm64 is published. Force it with
--platform linux/arm64.
This repo contains no robot code of its own. On a schedule, GitHub Actions pulls the newest upstream code, builds it for every architecture, smoke-tests that the physics really runs, and pushes to Docker Hub. So the image tracks the official projects instead of drifting away from them.
microduck-lab (trainer + viewer) โโ
microduck_rl (robot model, MJCF) โโผโโบ GitHub Actions โโบ Docker Hub (multi-arch)
MicroDuckModels (pretrained ONNX) โโ
Every image records the exact commits it came from:
docker run --rm srayuth089/microduck-docker versionArchitectures: linux/amd64, linux/arm64 (and ppc64le, s390x on request).
Build it yourself: docs/BUILD.md
This is a packaging project. All the hard work belongs to:
- Pollen Robotics โ Microduck itself, and
microduck_rl(Apache-2.0) - Jonathan Hawkins โ
microduck-lab, the CPU trainer and viewer that make this run on a laptop (Apache-2.0) - IronSpiderMan โ the collected pretrained policies
Not affiliated with or endorsed by Pollen Robotics.
Packaging (this repo): Apache-2.0.
The image also contains upstream material under its own terms โ notably the 3D robot meshes, which Pollen releases under Creative Commons BY-SA-NC (non-commercial). Play with it, teach with it, learn from it. Do not sell it or ship it in a commercial product. See NOTICE.
Made for classrooms, kitchen tables and anyone curious about robots.
