Caasi
A lightweight, CLI-first orchestration layer for NVIDIA Isaac Sim, Isaac Lab and the wider robotics ecosystem (ROS 2, Nav2, MoveIt 2, ros2_control, ...).
Headless-first. CLI-first. Process-oriented. Visualization-independent.
Documentation: https://7a6172.github.io/caasi/
Note: Caasi is an independent open-source project. It is not affiliated with, endorsed by, or an official product of NVIDIA.
Philosophy
- Use existing software. Don't reinvent it. Caasi discovers, configures, launches, connects, monitors and manages tools that already exist.
- Simulation is not visualization. Run headless by default; attach a viewer only when needed.
- Minimum required stack. The Caasi process itself stays lightweight and never imports the heavy Isaac stack, PyTorch or rclpy — it only delegates to them.
- Don't become another ROS. ROS orchestration is delegated to the real
ros2tooling. - Unix-friendly. Small commands,
--jsonoutput, sensible exit codes.
Install
Requires Python 3.10+ on Linux. The Isaac stack, ROS 2 and PyTorch are discovered, not installed, by Caasi.
pipx install caasi # recommended: isolated env, `caasi` linked into ~/.local/bin (on PATH)
pip install caasi # or into the active environment
Both install the caasi console script into the environment's bin/; pipx additionally
makes it available system-wide for your user (pipx ensurepath if ~/.local/bin is not
on PATH). On PEP 668 distros (Ubuntu 23.04+, Debian 12+, Fedora) a bare system-wide
pip install is refused — use pipx or a dedicated venv:
python3 -m venv ~/.venvs/caasi && ~/.venvs/caasi/bin/pip install caasi
From source:
git clone https://github.com/7a6172/caasi.git && cd caasi
pip install -e . # add pytest as well: pip install -e ".[dev]"
Upgrade: pipx upgrade caasi / pip install -U caasi.
Shell completion:
caasi --install-completion.
Quickstart
caasi doctor # diagnose the whole environment
caasi doctor --component nvidia # one section only
caasi gpu status # GPU overview via nvidia-smi
caasi system status # OS / CPU / RAM / disk summary
caasi info # CLI + configured/detected ecosystem versions
caasi config show # effective configuration
caasi config set tools.isaacsim.default "6.0"
Every command supports --help (caasi help gpu status works too). The root listing is
grouped by topic; CAASI_HELP_ORDER=alpha flattens it to a–z. Data commands
support --json for scripting:
caasi gpu status --json | jq '.gpus[0]["memory.used"]'
if caasi doctor --quiet; then echo "environment ready"; fi
Simulations, training jobs and ROS launches start detached and are tracked as runs — the CLI returns immediately and the work survives your terminal:
caasi sim run experiments/wave.yaml
caasi run list
caasi logs latest --follow # Ctrl+C stops following, the run keeps going
caasi run status latest
Command surface
| Group | Commands | Reference |
|---|---|---|
| Environment | doctor, check, env inspect|fingerprint|lock|compare|show, gpu status|info|memory|doctor|monitor|test, system status|doctor|memory|processes, info, version |
environment.html |
| Configuration | config show|get|set|path|tools|catalog |
configuration.html |
| Projects | init (alias), setup, project info|validate|add|remove|list|inspect|add-file|config, project robot list|create|inspect|info|import|validate, project scene list|create|inspect|import|validate|capture|reconstruct, project task list|create|inspect|validate |
projects.html |
| Runs & logs | run start|restart|list|status|logs|attach|stop|pause|resume|delete|inspect, start, logs |
runs.html |
| Observability | monitor, audit, logs, run inspect (provenance bundle) |
observability.html |
| Simulation | sim run|headless|check|extensions, lab status|run|play|evaluate — sim lifecycle/logs via run … --backend sim |
simulation.html |
| Training | train, benchmark start|report |
training.html |
| Data & sensors | dataset list|generate|inspect|convert|validate|download, sensor list|inspect|test, vision status|inspect|test |
data.html |
| Review | replay, view rviz|foxglove|open3d|attach|run |
review.html |
| ROS ecosystem | ros status|doctor|list|launch|topic|node|graph|service, nav status|launch|inspect|test|doctor, moveit status|launch|plan|test|doctor, control status|list|check|doctor |
ros.html |
| GPU-accelerated robotics | isaac-ros status|list|doctor|launch, perception status|camera|pose|detect|segment|inspect, slam status|launch|test|benchmark, mapping status|run|inspect, motion status|serve|plan|execute|benchmark, nitros status|doctor, pipeline inspect |
accelerated.html |
| Synthetic data & teleop | dataset generate (Replicator via the sdg catalog — the root synth group was removed), teleop start|record|stop|replay |
synthetic.html |
| Physics & foundation models | physics status|list|run|benchmark, warp status|test|benchmark, groot status|setup|run|train|evaluate, cosmos status|run|dataset |
platform.html |
| Native & shell | native run|sim|lab|ros, shell |
native.html |
| Remote & containers | remote list|connect|run, container list|status|check|doctor|run |
remote.html |
More examples:
caasi train experiments/ant.yaml --steps 500000 --envs 4096
caasi ros status && caasi nav launch --map maps/warehouse.yaml
caasi container run nvcr.io/nvidia/isaac-sim:5.1.0 ./runheadless.sh
caasi remote run gpu-box python train.py --steps 1000
caasi perception status && caasi slam launch --backend toolbox
caasi dataset generate experiments/sdg.yaml --episodes 100
caasi teleop record -t /cmd_vel --name demo
caasi physics run experiments/wave.yaml --engine newton
caasi groot train configs/finetune.yaml --epochs 3
Configuration
Global config lives at ~/.config/caasi/config.yaml; a project-local ./caasi.yaml
is merged on top. Override the global file with CAASI_CONFIG or --config;
CAASI_LANG overrides the language.
language: en
tools:
isaacsim:
default: "6.0"
versions:
"6.0": { path: /opt/isaac-sim-6.0 }
"5.1": { path: /opt/isaac-sim-5.1 }
remotes:
gpu-box:
host: 10.0.0.5
user: robot
port: 2222
identity: ~/.ssh/id_ed25519
path: ~/experiments
physics:
default: newton # engine used when `--engine` is omitted
catalog:
slam:
toolbox:
packages: [slam_toolbox] # re-point a capability when upstream renames it
Manage it with caasi config show|get|set|path|tools|catalog. The catalog: section is
how Caasi knows what to look for: each capability lists the packages, binaries, Python
modules, env vars and paths to probe, in that order. Nothing is imported — a new upstream
version is a config change, not a code change.
Examples
examples/navigation.yaml is a commented experiment config —
the input format shared by sim run, train, benchmark start and dataset generate:
caasi sim run examples/navigation.yaml --dry-run # print the launch command, start nothing
Tests
pytest
Documentation
Read it at https://7a6172.github.io/caasi/ or open
docs/index.html directly in a browser — the pages are plain HTML in
docs/ and need no build step.
The reference is split by concern: environment and configuration for the machine and the capability catalog; runs, observability, projects, simulation, training, data and review for the daily workflow; ros for ROS 2, Nav2, MoveIt 2 and ros2_control; accelerated for Isaac ROS, perception, SLAM, mapping, motion and NITROS; synthetic for Replicator synthetic data and teleoperation; platform for physics engines, Warp, GR00T and Cosmos; and native plus remote for the escape hatches.
Release notes and in-progress changes: CHANGELOG.md.
License
MIT © zar x"7A6172" — see LICENSE.
Metadata
Release files for caasi 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| caasi-0.3.0.tar.gz | 353.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| caasi-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 555.2 kB
Release files / caasi-0.3.0.tar.gz
| Download URL | caasi-0.3.0.tar.gz |
|---|---|
| Size | 353.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a19784545b98186e1b94546ed23cede7678e9db824c3b1de58175601ff7763d8
|
|
BLAKE2b-256 checksum How to use checksums |
563f1e5ceaa435d97c5e4fe6b8ebf4879a25cf936683b7353d5fa97d1709cf93
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / caasi-0.3.0-py3-none-any.whl
| Download URL | caasi-0.3.0-py3-none-any.whl |
|---|---|
| Size | 201.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ac89c082c4f18e6ac80686a60ad8b7d5034b726e9cf2bfb895251cb75773606c
|
|
BLAKE2b-256 checksum How to use checksums |
4a0afd65bb447dd990e6ba1d55ee0f99ceba65e5877f8740ddca351394805f11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for caasi 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.