Caasi v0.1.0 Environment: doctor · gpu · system · info · version

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

OptionShortTypeDefaultDescription
--component-cstrallRun a single section only (see table below).
--verboseflagoffShow details and hints for every check, not only problems.
--quiet-qflagoffPrint nothing; only the exit code speaks.
--jsonflagoffMachine-readable report.

What gets checked

Section (--component)Checks
systemOS (fails unless Linux), kernel version
hardwareCPU model/cores, RAM (warns below 16 GiB)
nvidianvidia-smi presence (fails if missing), driver version, every GPU, CUDA version
graphicsVulkan (vulkaninfo or libvulkan via ldconfig), display server (skipped headless)
pythonPython ≥ 3.10 (fails otherwise), environment kind (conda / venv / system)
isaacIsaac Sim and Isaac Lab detection (registry → env → common paths → pip)
rosROS 2 distro, setup.bash, ros2 CLI, RMW middleware
roboticsNav2, MoveIt 2, ros2_control via ros2 pkg prefix (skipped without ros2)
mlPyTorch, TensorRT, ONNX Runtime (pip metadata), cuDNN
visionOpenCV, Open3D
simulatorsGazebo, MuJoCo (skipped when absent)
containersDocker, Podman (warns if neither)
storageFree 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

CodeMeaning
0No check reported fail (warnings are fine).
1At least one check failed, or --component named an unknown section.

Note: --quiet wins over --jsondoctor -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]
OptionShortTypeDefaultDescription
--limit-nint10Number of processes to show.
--jsonflagoffMachine-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, tensorrtnull 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"
}