Environment
Answer the question “can this machine actually run my stack?” before wasting an hour on a launch that was going to fail anyway. These commands inspect the OS, GPUs, drivers, Python environment and the detected ecosystem — all read-only, all scriptable.
caasi doctor
Runs the full environment diagnostics suite: 13 sections, each made of small independent checks. Every check reports one of four statuses and, when useful, a fix hint.
caasi doctor [--component|-c NAME] [--verbose] [--quiet|-q] [--json]
Options
| Option | Short | Type | Default | Description |
|---|---|---|---|---|
--component | -c | str | all | Run a single section only (see table below). |
--verbose | flag | off | Show details and hints for every check, not only problems. | |
--quiet | -q | flag | off | Print nothing; only the exit code speaks. |
--json | flag | off | Machine-readable report. |
What gets checked
Section (--component) | Checks |
|---|---|
system | OS (fails unless Linux), kernel version |
hardware | CPU model/cores, RAM (warns below 16 GiB) |
nvidia | nvidia-smi presence (fails if missing), driver version, every GPU, CUDA version |
graphics | Vulkan (vulkaninfo or libvulkan via ldconfig), display server (skipped headless) |
python | Python ≥ 3.10 (fails otherwise), environment kind (conda / venv / system) |
isaac | Isaac Sim and Isaac Lab detection (registry → env → common paths → pip) |
ros | ROS 2 distro, setup.bash, ros2 CLI, RMW middleware |
robotics | Nav2, MoveIt 2, ros2_control via ros2 pkg prefix (skipped without ros2) |
ml | PyTorch, TensorRT, ONNX Runtime (pip metadata), cuDNN |
vision | OpenCV, Open3D |
simulators | Gazebo, MuJoCo (skipped when absent) |
containers | Docker, Podman (warns if neither) |
storage | Free disk on paths.runs (fails < 5 GiB, warns < 20 GiB) |
Example — full report
shellcaasi doctor
Environment Diagnostics
────────────────────────
system
✓ OS — Ubuntu 24.04.1 LTS
✓ Kernel — 6.8.0-45-generic
hardware
✓ CPU — AMD Ryzen 9 7950X (32 cores)
✓ RAM — 62.7 GiB
nvidia
✓ nvidia-smi — 550.107.02
✓ GPU 0 — NVIDIA GeForce RTX 4090 (24564 MiB)
✓ CUDA — 12.4
python
✓ Python — 3.11.9
✓ Environment — venv
isaac
✗ Isaac Sim — not detected
↳ Install it or register a path: caasi setup isaacsim
ros
✓ ROS 2 distro — jazzy
✓ ros2 CLI — /opt/ros/jazzy/bin/ros2
storage
✓ Disk (runs) — 412.9 GiB free
1 failure(s), 0 warning(s)
exit code: 1
Example — one section, and scripting with exit codes
shellcaasi doctor -c nvidia --verbose
nvidia
✓ nvidia-smi — 550.107.02
↳ Install the NVIDIA driver if this check fails.
✓ GPU 0 — NVIDIA GeForce RTX 4090 (24564 MiB)
✓ CUDA — 12.4
caasi doctor -q && echo ready || echo broken
broken
JSON output
shellcaasi doctor --json | jq '.summary'
{
"checks": [
{ "section": "nvidia", "name": "nvidia-smi", "status": "ok",
"detail": "550.107.02", "hint": null },
{ "section": "isaac", "name": "Isaac Sim", "status": "fail",
"detail": "Isaac Sim not detected",
"hint": "Install it or register a path: caasi setup isaacsim" }
],
"summary": { "ok": 11, "warn": 0, "fail": 1, "skip": 4 },
"exit_code": 1
}
status is one of ok warn
fail skip.
Exit codes
| Code | Meaning |
|---|---|
0 | No check reported fail (warnings are fine). |
1 | At least one check failed, or --component named an unknown section. |
Note: --quiet wins over --json — doctor -q --json prints nothing.
caasi gpu
Inspects NVIDIA GPUs by querying nvidia-smi — no NVML bindings, no imports.
If nvidia-smi is missing or fails, every subcommand exits 1 with
Error: GPU information unavailable (…).
caasi gpu status
One-line-per-GPU overview: name, VRAM, utilization, temperature, power, driver/CUDA.
caasi gpu status [--json]
shellcaasi gpu status
GPU Name VRAM Util Temp Power Driver / CUDA
0 NVIDIA GeForce RTX 4090 3111/24564 MiB 12% 46°C 28.6W 550.107.02 / 12.4
caasi gpu status --json | jq '.gpus[0]["memory.used"]'
3111
JSON payload: {"cuda": "12.4", "gpus": [ … ]}; each GPU object carries
index, name, driver_version, memory.total,
memory.used, memory.free, utilization.gpu,
temperature.gpu, power.draw.
caasi gpu info
Static hardware identity per GPU — useful for bug reports and inventory.
caasi gpu info [--json]
shellcaasi gpu info
GPU 0
Name NVIDIA GeForce RTX 4090
UUID GPU-9c1e2b34-…
Serial (not available)
PCI 00000000:0B:00.0
Compute cap. 8.9
ECC Disabled
Driver 550.107.02
CUDA 12.4
caasi gpu memory
VRAM overview plus the compute processes currently occupying the GPUs (answer “who is eating my VRAM?”).
caasi gpu memory [--json]
shellcaasi gpu memory
GPU Name VRAM Free
0 NVIDIA GeForce RTX 4090 18233/24564 MiB 6331 MiB
PID Process VRAM
48213 /opt/isaac-sim/python.sh 17890 MiB
caasi gpu memory --json | jq '.compute_apps'
[ { "gpu_uuid": "GPU-9c1e…", "pid": 48213,
"process_name": "/opt/isaac-sim/python.sh", "used_memory_mb": 17890 } ]
caasi gpu test
Proves the GPU actually computes: verifies the driver responds, then runs a tiny CUDA matmul in a subprocess via PyTorch. If PyTorch is not importable the compute step is skipped with a warning (exit stays 0).
caasi gpu test
shellcaasi gpu test
Driver responds; 1 GPU(s) visible.
CUDA compute test passed (torch CUDA 12.4).
caasi gpu test; echo $?
0
Exit codes: 0 driver ok (and compute passed or skipped), 1 no
nvidia-smi or the CUDA compute test failed. No --json.
caasi system
OS, CPU, RAM and process inspection, read from /proc and standard tools.
caasi system status
caasi system status [--json]
shellcaasi system status
OS Ubuntu 24.04.1 LTS
Kernel 6.8.0-45-generic (x86_64)
CPU AMD Ryzen 9 7950X 16-Core Processor (32 cores)
Load 1.24 0.98 0.71
RAM 62.7 GiB total, 41.2 GiB available
NVIDIA GPUs 1
Disk free home 412.9 GiB
JSON keys: os, kernel, arch, cpu,
cores, load, ram_total_gib, ram_available_gib,
gpu_count, disk_free_home. Always exits 0.
caasi system memory
caasi system memory [--json]
Detailed /proc/meminfo breakdown: total_gib,
available_gib, free_gib, buffers_gib,
cached_gib, swap_total_gib, swap_free_gib.
Exits 1 if /proc/meminfo cannot be read (Linux only).
caasi system processes
caasi system processes [--limit|-n N] [--json]
| Option | Short | Type | Default | Description |
|---|---|---|---|---|
--limit | -n | int | 10 | Number of processes to show. |
--json | flag | off | Machine-readable output. |
Top processes by resident memory — via ps -eo pid,user,pmem,rss,comm --sort=-rss,
falling back to a /proc scan. JSON is an array of
{pid, user, mem_percent, rss, command}. Always exits 0.
shellcaasi system processes -n 3
PID User Mem % RSS Command
48213 zar 27.4 17890 MiB python.sh
2210 zar 3.1 2013 MiB code
1874 root 0.8 512 MiB Xorg
caasi info
One-screen summary of the CLI itself, your effective configuration, registered tools and everything Caasi was able to detect about the ecosystem.
caasi info [--json]
shellcaasi info
CLI
Name caasi
Version 0.1.0
Python 3.11.9 (/home/you/caasi/.venv/bin/python)
Configuration
Language en
Sources ~/.config/caasi/config.yaml
Registered tools
isaacsim 6.0 → /opt/isaac-sim-6.0
Ecosystem (detected)
Isaac Sim 6.0 (/opt/isaac-sim-6.0)
Isaac Lab (not detected)
ROS 2 jazzy
CUDA 12.4
PyTorch 2.4.0
TensorRT (not detected)
JSON payload top-level keys: cli (name, version,
python, executable, platform), config
(language, sources), tools (one entry per resolved
registry tool: version, path, python), and
ecosystem (isaac_sim, isaac_lab, ros2,
cuda, pytorch, tensorrt — null when not
detected). Detection failures are data, never errors: exit code is always 0.
caasi version
caasi version [--json] # or the global flag: caasi --version
shellcaasi version
caasi 0.1.0
caasi version --json
{
"name": "caasi",
"version": "0.1.0"
}