Installation¶
A focused installation checklist. For the full learning path, start with the tutorial.
Requirements¶
| Requirement | Version |
|---|---|
| Python | 3.12 or newer |
| Dependency manager | uv |
| Simulator backend | genesis-world>=0.4.7 |
| PyTorch | torch>=2.8.0 through one torch-* extra |
Syncing the environment¶
From the repository root:
Choose exactly one PyTorch extra:
| Extra | Target |
|---|---|
torch-cpu |
CPU-only or non-NVIDIA development machines. |
torch-cu126 |
NVIDIA driver compatible with CUDA 12.6 wheels. |
torch-cu128 |
NVIDIA driver compatible with CUDA 12.8 wheels. |
torch-cu130 |
NVIDIA driver compatible with CUDA 13.0 wheels. |
Refresh an existing torch install:
Running commands¶
The rest of these docs invoke the CLI as a bare genelab (and a bare python) — not
uv run genelab.
Why not uv run?
uv run performs an implicit uv sync before every command. The PyTorch builds ship as
mutually-exclusive extras (torch-cpu / torch-cu126 / torch-cu128 / torch-cu130) that are
not part of the default sync set, so each uv run uninstalls and reinstalls torch and
rewrites the extra selected above — slow, and it can silently flip the CUDA build. Use one
of the two ways below instead.
Activate once per shell, then run bare commands as shown throughout the docs:
Why uv sync and uv pip install keep the uv prefix
Only uv run is the footgun — it re-resolves the project and reconciles the venv before
executing. uv sync is the one deliberate sync that selects the torch build, and
uv pip install -e … is uv's pip-compatible installer: it installs into the active venv
without re-resolving the project or touching extras, so it never reinstalls torch. Both are
safe to keep.
Creating local caches¶
The command creates writable project-local cache directories and points XDG_CACHE_HOME and
MPLCONFIGDIR at .cache/.
Verifying imports¶
python -c "import genelab; print(genelab.__version__)"
python -c "from genelab.lab import TaskCfg; print(TaskCfg.__name__)"
python -c "import torch; print(torch.__version__, torch.version.cuda)"
python -c "import genesis; print(genesis.__version__)"
Installing example extensions¶
The core package is a framework; tasks are registered by extensions.
uv pip install -e examples/inverted_pendulum
uv pip install -e examples/genelab_examples
genelab list tasks
Install Unitree only for the larger humanoid examples: