The unilab package is organized into several functional layers: core foundations, a learning stack, and various subsystems. Understanding this hierarchy helps in locating specific components for simulation, training, or utility tasks.
Core Foundations
These modules define the fundamental contracts and interfaces used by the entire library:
unilab.base: Contains essential interfaces like NpEnv, SimBackend, Registry, and Scene.unilab.envs: Provides concrete task implementations such as locomotion, manipulation, and motion tracking.
Learning Stack
These modules facilitate the training and execution of reinforcement learning agents:
unilab.algos: Implementations of RL algorithms (PPO, APPO, SAC, TD3) in both PyTorch and MLX.unilab.training: Orchestration tools, runtime helpers, monitoring, and reward bookkeeping.unilab.ipc: Shared-memory primitives for connecting CPU workers to GPU learners.unilab.backend: Adapters for simulation engines like MuJoCo and Motrix that implement the SimBackend interface.
Subsystems
Specialized modules for environment augmentation and tooling:
unilab.dr: Declarative domain randomization.unilab.terrains: Procedural and heightfield terrain generation.unilab.visualization: Scene rendering and viser bridges.unilab.tools: Scene export, NaN visualization, and ONNX export.unilab.utils: Math, IO, and numerical helpers.unilab.logging: Structured logging and bridges for W&B and TensorBoard.