Unified inference runtime for humanoid whole-body control policies.
Open Live Policy Reports · Getting Started · Architecture · Python SDK · Founding Document
RoboWBC gives you one config-driven runtime for loading multiple WBC policies, running them through the same Rust CLI, and exporting the same JSON + Rerun report pipeline across smoke tests, MuJoCo runs, and hardware-oriented transports.
RoboWBC is a Linux-only project. The runtime backends fail fast on non-Linux targets instead of carrying partial or unverified platform fallbacks.
Run make help to see the repo-level commands for build, validation,
benchmarks, site generation, and local serving.
These pages are generated by the showcase job on main and published
directly from the CI artifact bundle:
| Page | Link | Purpose |
|---|---|---|
| Site home | https://miaodx.com/robowbc/ | Comparison-first overview across all generated policy cards |
| NVIDIA benchmarks | https://miaodx.com/robowbc/benchmarks/nvidia/ | Normalized RoboWBC-vs-official benchmark comparison page |
| GEAR-SONIC detail | https://miaodx.com/robowbc/policies/gear_sonic/ | Planner-driven velocity showcase, logs, JSON, .rrd, and proof-pack assets |
| Decoupled WBC detail | https://miaodx.com/robowbc/policies/decoupled_wbc/ | GR00T WholeBodyControl locomotion showcase with the same staged command profile |
| WBC-AGILE detail | https://miaodx.com/robowbc/policies/wbc_agile/ | Published G1 recurrent checkpoint detail page and raw artifacts |
| BFM-Zero detail | https://miaodx.com/robowbc/policies/bfm_zero/ | Prompt-conditioned tracking showcase with context-bundle artifacts |
| Area | Status |
|---|---|
| Runtime | Rust workspace with registry-driven policy loading, ONNX Runtime and PyO3 backends, MuJoCo and communication transports, plus JSON and Rerun reporting |
| Live public-policy paths | gear_sonic, decoupled_wbc, wbc_agile, bfm_zero |
| Honest blocked wrappers | hover needs a user-exported checkpoint, wholebody_vla still lacks a runnable public upstream release |
| Published visual report | The main workflow is wired to build the same HTML report in CI and publish it to the live report link above |
| Policy | Status | Public assets | Example config | Notes |
|---|---|---|---|---|
gear_sonic |
Live | Yes | configs/sonic_g1.toml | Uses the published planner_sonic.onnx velocity path by default; standing_placeholder_tracking = true exposes the narrower encoder+decoder standing-placeholder path |
decoupled_wbc |
Live | Yes | configs/decoupled_g1.toml | Public G1 balance and walk checkpoints; configs/decoupled_smoke.toml stays as the no-download smoke path |
wbc_agile |
Live | Yes | configs/wbc_agile_g1.toml | Published G1 recurrent checkpoint is wired; the T1 path still expects a user export |
bfm_zero |
Live | Yes | configs/bfm_zero_g1.toml | Public ONNX plus tracking context bundle is normalized by scripts/download_bfm_zero_models.sh |
hover |
Blocked | No | configs/hover_h1.toml | Wrapper exists, but the public upstream repo does not ship a pretrained checkpoint |
wholebody_vla |
Experimental | No | configs/wholebody_vla_x2.toml | Contract wrapper only; the public upstream repo does not yet expose a runnable inference release |
py_model |
User supplied | N/A | user TOML | Loads Python modules or PyTorch checkpoints through robowbc-pyo3 |
The generated HTML report includes every currently working public-asset policy:
gear_sonic, decoupled_wbc, wbc_agile, and bfm_zero.
make toolchain
make build
make smoke
make ciconfigs/decoupled_smoke.toml uses the checked-in dynamic identity ONNX
fixture, so it is the intended no-download local smoke path. make ci runs
the same repo entry points that GitHub CI uses for Rust validation, docs,
Python SDK verification, and the generated HTML site bundle.
Run the live public policies
bash scripts/download_gear_sonic_models.sh
cargo run --release --bin robowbc -- run --config configs/sonic_g1.toml
bash scripts/download_decoupled_wbc_models.sh
cargo run --release --bin robowbc -- run --config configs/decoupled_g1.toml
bash scripts/download_wbc_agile_models.sh
cargo run --release --bin robowbc -- run --config configs/wbc_agile_g1.toml
bash scripts/download_bfm_zero_models.sh
cargo run --release --bin robowbc -- run --config configs/bfm_zero_g1.tomlgear_sonic defaults to the published planner_sonic.onnx velocity path. To
exercise the narrower encoder+decoder standing-placeholder path instead, set
standing_placeholder_tracking = true in configs/sonic_g1.toml. That path
does not execute planner_sonic.onnx on the tick and is not a generic
motion-reference streaming interface. bfm_zero fetches the public ONNX plus
tracking bundle and converts the context into the runtime layout used by both
the CLI and CI.
Open or generate the visual report
The same site builder powers both the local static bundle and the published GitHub Pages site.
make site
make showcase-verify
make site-serve SITE_OPEN=1make site wraps scripts/build_site.py and now owns the full local/CI site
build. It picks ./.cache/mujoco by default, downloads MuJoCo there when
needed, rebuilds the robowbc binary with
robowbc-cli/sim-auto-download,robowbc-cli/vis, runs the benchmark
generators, forces the same MUJOCO_GL=egl / PYOPENGL_PLATFORM=egl
offscreen path that the GitHub showcase job uses, and assembles the final
static bundle into /tmp/robowbc-site.
Set MUJOCO_DOWNLOAD_DIR=/your/cache make site if you want a different cache
location, or override SITE_OUTPUT_DIR=/your/output make site if you want the
site somewhere else. make site-smoke validates the generated bundle layout
without serving it, and make site-serve-check does a short start/stop probe
of the local HTTP server.
make showcase-verify is the closest local equivalent to the GitHub showcase
job. It installs the site Python deps, runs the same headless MuJoCo EGL render
smoke check that CI now relies on, downloads the public checkpoints, builds the
site bundle, and fails if any MuJoCo-backed policy page ships a proof-pack
manifest without real screenshots. On Ubuntu, install the headless EGL runtime
first if that render smoke check fails:
sudo apt-get install -y libegl1 libegl-mesa0 libgles2 libgl1-mesa-dri libgbm1.
The output folder contains index.html, manifest.json, policies/<policy>/
folders with per-policy HTML plus raw run artifacts, benchmarks/nvidia/ with
the NVIDIA comparison page, and assets/rerun-web-viewer/ for embedded Rerun
playback. Pull requests keep the downloadable robowbc-site artifact, and
main publishes the generated site to the live report links above.
Manual real-model verification
bash scripts/download_gear_sonic_models.sh
cargo test -p robowbc-ort -- --ignored gear_sonic_real_model_inference
bash scripts/download_decoupled_wbc_models.sh
cargo test -p robowbc-ort -- --ignored decoupled_wbc_real_model_inference
bash scripts/download_wbc_agile_models.sh
cargo test -p robowbc-ort -- --ignored wbc_agile_real_model_inference
bash scripts/download_bfm_zero_models.sh
BFM_ZERO_MODEL_PATH=models/bfm_zero/bfm_zero_g1.onnx \
BFM_ZERO_CONTEXT_PATH=models/bfm_zero/zs_walking.npy \
cargo test -p robowbc-ort bfm_zero_real_model_inference -- --ignored --nocapturehover still requires a user-trained exported checkpoint, and wholebody_vla
still requires a compatible private or local model because no runnable public
release exists upstream today.
Python SDK
pip install "maturin>=1.4,<2.0"
maturin develop
python -c "from robowbc import Registry; print(Registry.list_policies())"The standalone Python package lives in crates/robowbc-py, while
robowbc-pyo3 provides the runtime backend for user-supplied Python or
PyTorch policies.
Workspace layout
| Path | Purpose |
|---|---|
crates/robowbc-core |
WbcPolicy, Observation, WbcCommand, JointPositionTargets, RobotConfig |
crates/robowbc-registry |
inventory-based policy registration and factory |
crates/robowbc-ort |
ONNX Runtime backends and policy wrappers |
crates/robowbc-pyo3 |
Python-backed runtime policy loading |
crates/robowbc-comm |
Control-loop plumbing and robot transports |
crates/robowbc-sim |
MuJoCo transport for hardware-free execution |
crates/robowbc-vis |
Rerun visualization and .rrd recording |
crates/robowbc-cli |
robowbc CLI binary |
crates/robowbc-py |
Standalone maturin package for the Python SDK |
- Getting Started
- Configuration Reference
- Adding a New Policy
- Adding a New Robot
- Architecture
- Founding document
- Q2 2026 roadmap
- roboharness, companion visual testing and browser-report project
- LeRobot, upstream robotics stack that can consume a WBC backend
MIT