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 | |
|---|---|---|---|
| caasi-0.3.0.tar.gz | 353.9 kB | 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}
|