🧭 Canonical source:
source/geniesim_cli/AGENTS.md— the per-package guide is the source of truth for command dispatch, lazy-import rules, and the_STATUS_DISTRIBUTIONS/_INIT_TARGETStables.
This file is a 30-second pointer. Do not duplicate content here that lives at the canonical source — duplication is what makes dispatchers rot.
geniesim_cli is the standalone PEP 517 / PEP 621 wheel that owns the geniesim console script. Sole CLI front-end for the platform: docker lifecycle, ROS 2 workspace builds, health probes, deploy, asset / scene bootstrap, benchmark dispatch, teleop dispatch.
Lightweight by contract: no heavy runtime deps at import time (no USD, no Isaac Sim, no MuJoCo). Operators can run geniesim status / geniesim deploy on a control node where only the CLI is installed.
| Topic | File |
|---|---|
| Canonical command dispatch + lazy-import rules | source/geniesim_cli/AGENTS.md |
| User-facing intro + command table | source/geniesim_cli/README.md |
| Fresh-machine setup (install order, bootstrap, status, doctor) | source/geniesim_cli/AGENTS.md § 0 |
| Implementation | source/geniesim_cli/src/geniesim_cli/cli.py + commands/ |
| ANSI / style constants | source/geniesim_cli/src/geniesim_cli/_style.py |
- The
geniesimconsole script is owned only bygeniesim_cli. Any sibling distribution declaring[project.scripts] geniesim = …is a packaging bug. import geniesim_cli.climust succeed in a venv with onlygeniesim_cliinstalled — every heavy import (USD, Isaac, MuJoCo,geniesim.*,geniesim_assets.*, …) is lazy, inside the function that uses it.geniesim statusmust never raise on missing siblings — treat absent distributions as a finding, not an error.- Adding a new peer distribution means updating
_STATUS_DISTRIBUTIONS,_DEPLOY_MODULES(or_SKIP_DEPLOY), and_INIT_TARGETSin the same diff. - Hard rule: never hint
pip install geniesimorpip install geniesim_assets— not on PyPI. Always redirect throughgeniesim bootstrap.