Project Structure

UniLab keeps runtime contracts, configuration, training scripts, and docs in separate owner areas. Use this map when you need to find the right layer before changing behavior.

Path

Owner Role

scripts/

Thin training and tooling entrypoints. Scripts compose Hydra config and call owner-layer code.

src/unilab/conf/

Hydra roots and task owner YAMLs. The top-level CLI exposes backend selection as --task plus --sim, then composes the matching owner YAML.

src/unilab/base/

Registry, env state, scene, and backend contracts.

src/unilab/envs/

Task env implementations and task-specific reset, reward, observation, and DR logic.

uni_rl (unilab-rl repo)

PPO, APPO, and off-policy algorithm code.

uni_rl.ipc (unilab-rl repo)

Shared-memory and async runner primitives.

src/unilab/training/

Shared training helpers for logging, playback, seed handling, and config guards.

src/unilab/visualization/

Playback, rendering, NaN inspection, and scene/export utilities.

tests/

Contract, config, env, algorithm, script, and integration tests.

docs/sphinx/source/en/

English user, deployment, developer, and reference docs.

docs/sphinx/source/zh_CN/

Chinese docs with compatibility paths handled by the language switcher.

Config Layout

The main config roots are:

  • src/unilab/conf/ppo/config.yaml for torch PPO.

  • src/unilab/conf/appo/config.yaml for APPO.

  • src/unilab/conf/sac/config.yaml, src/unilab/conf/td3/config.yaml, and src/unilab/conf/flashsac/config.yaml for SAC, TD3, and FlashSAC, each with its algorithm hyperparameters inlined.

Task owner YAMLs are the backend identity. Examples:

uv run train --algo ppo --task go2_joystick_flat --sim mujoco
uv run train --algo ppo --task go2_joystick_flat --sim motrix
uv run train --algo sac --task g1_walk_flat --sim mujoco

Do not switch backends by overriding training.sim_backend alone.

Where To Go Next