CURA is an interactive GPU development environment manager, written in Rust. It manages versioned CUDA environments on Linux and WSL and configures Apple's system-native Metal toolchain on macOS.
CUDA environments are installed side by side, can be switched per project, and have every downloaded component verified. On macOS, CURA detects the Metal GPU and runtime supplied by the operating system, checks Xcode, and installs Apple's separately downloadable Metal compiler toolchain when needed.
$ cura install cuda-12
┌─ CURA · Installation plan ─────────────────────────────
│ CUDA 12.9.2
│ Scope User
│ Profile Toolkit · runtime, nvcc, headers, and developer tools
│ Payload 27 components · 3.4 GiB download
│ Driver compatible / no change
└─────────────────────────────────────────────────────────Running cura opens the full-screen dashboard. The same workflows remain available as
regular subcommands for scripts and CI.
- Resolve aliases such as
cuda-12and pin the exact newest published patch release. - Compare Runtime, Toolkit, and Full profiles in an interactive installer.
- Install without sudo under the XDG data directory, with SHA-256 verification and atomic activation.
- Optionally install through apt, dnf, or zypper using NVIDIA's official repositories.
- Detect incompatible drivers and review upgrades before sudo; never install a driver inside WSL.
- Select CUDA globally or through a project-local
.cura-versionfile. - Run commands in an environment without changing the parent shell.
- Diagnose the platform, GPU driver, installed environments, selection, and shell hook.
- Detect the Metal GPU and runtime version on macOS.
- Inspect Xcode and install the Apple Metal compiler toolchain with a reviewed plan.
Install CURA with one command. The installer detects Linux, WSL, or macOS, installs the current stable Rust toolchain and Cargo with rustup when needed, then builds and installs the CLI:
curl --proto '=https' --tlsv1.2 -fsSL 'https://github.com/mindify-ai/cura-cli/blob/main/install.sh?raw=1' | shTo build from a local checkout with an existing current stable Rust toolchain:
cargo install --path .CUDA is supported on native Linux and WSL. Metal is supported on macOS and uses the runtime included with the operating system plus Apple's Xcode toolchain.
# Interactive wizard; choose the payload after seeing its size.
cura install cuda-12
# Deterministic CI installation.
cura install cuda-12.9.2 --profile toolkit --yes --no-interactive
# Privileged native package installation.
cura install cuda-12 --profile toolkit --system
cura list
cura list --available
cura use cuda-12 # writes .cura-version
cura use cuda-12 --global
cura run --cuda cuda-12 -- nvcc --version
cura doctor
cura remove cuda-12
# macOS: inspect and configure Metal development support.
cura metal status
cura install metal
# Equivalent explicit form:
cura metal installEnable automatic environment updates when changing directories:
# zsh
eval "$(cura shell init zsh)"
# bash
eval "$(cura shell init bash)"
# fish
cura shell init fish | sourceUse cura shell init zsh --write (or bash/fish) to append the hook after reviewing it.
CURA follows XDG paths for configuration, data, cache, and state. Set CURA_HOME to keep
all four beneath one directory. CUDA user installs are downloaded directly from NVIDIA's
redistributable catalog, checked against the manifest SHA-256, safely extracted into a
staging directory, and atomically activated. Partial downloads remain reusable; partial
environments never become selectable.
Metal is system-managed and is not represented as a versioned CURA environment. CURA uses
system_profiler, xcode-select, and xcrun for read-only detection. When approved,
cura metal install runs xcodebuild -downloadComponent MetalToolchain; it does not modify
the macOS GPU driver or install third-party packages.
System and driver operations display a plan before invoking sudo. In non-interactive
contexts, payload selection and destructive confirmation must be explicit.
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targetsThe Astro documentation site lives in docs/:
cd docs
npm install
npm run dev