Installation
Native apps
- macOS desktop: download the signed and notarized Mold DMG, then follow the Desktop App guide.
- iPhone: the current remote-only app is distributed through the project's invited internal and external TestFlight groups; there is not yet a public App Store listing. See the iPhone App guide for supported workflows and host setup.
Mold is CLI-native. The command-line installation below installs the primary Mold interface and the same engine/server used by both native apps, scripts, agents, and custom API clients.
One-Line Install (recommended)
curl -fsSL https://raw.githubusercontent.com/utensils/mold/main/install.sh | shDownloads the latest tagged release from github.com/utensils/mold/releases/latest and installs it to ~/.local/bin/mold. On Linux, the installer queries every GPU visible through CUDA_VISIBLE_DEVICES and selects a compatible release binary independent of device order. It supports any homogeneous device count, including RTX 3050/30-series, RTX 50-series, and named RTX PRO variants. macOS builds include Metal support.
The installer downloads the exact release's SHA256SUMS and verifies the selected archive before extraction. Missing sm86, sm100, or sm120 artifacts fail closed; a higher compute target is never substituted for a lower-capability GPU. Only sm89 may use an old release's unsuffixed archive, which was the historical name for that same target. Timeouts, authentication failures, server failures, duplicate checksums, and checksum mismatches stop installation.
Options
All options are passed as environment variables:
# Install to a custom path
curl -fsSL ... | MOLD_INSTALL_DIR=/usr/local/bin sh
# Pin to a specific release tag (default: latest)
curl -fsSL ... | MOLD_VERSION=v0.10.0 sh
# Force a GPU architecture (default: auto-detect on Linux)
curl -fsSL ... | MOLD_CUDA_ARCH=sm86 sh # Ampere (RTX 3090 / A40)
curl -fsSL ... | MOLD_CUDA_ARCH=sm89 sh # Ada (RTX 40-series)
curl -fsSL ... | MOLD_CUDA_ARCH=sm100 sh # Datacenter Blackwell (B200 / B300)
curl -fsSL ... | MOLD_CUDA_ARCH=sm120 sh # Consumer Blackwell (RTX 50-series)Note: the env var has to be on the
shside of the pipe — withVAR=value curl ... | sh, the variable only applies tocurland the installer itself still sees the default.
An explicit MOLD_CUDA_ARCH must equal the target selected for every visible GPU. Homogeneous 8.6 and 8.9 fleets use sm86 and sm89 respectively. A mixed 8.6/8.9 fleet uses sm86: release CI requires exact sm86 PTX embedded in the final executable, which both Ampere and the forward-compatible Ada driver can JIT. Homogeneous 10.x and 12.x fleets use sm100 and sm120. Compute capability 8.0, 9.x, and unproven mixed families fail closed because no release tarball is qualified for their floor. Narrow CUDA_VISIBLE_DEVICES or build from source with verified targets.
PTX compatibility is forward-only toward equal-or-higher device compute capabilities. An sm86 artifact can JIT on sm86 or sm89, but sm89 PTX cannot JIT backward on an RTX 3090 (sm86). The RTX 3090 distribution gate therefore requires a successful sm86 generation and treats the same-source sm89 failure as an expected incompatibility regression, not a successful smoke.
MOLD_VERSION accepts any tag that exists on the releases page — for example v0.8.0 to reproduce an older install. Without it the script follows the releases/latest redirect on GitHub and installs whatever that currently points at.
Updating
mold update # Update to latest release
mold update --check # Check for updates without installing
mold update --version v0.7.0 # Install a specific versionOr re-run the install script:
curl -fsSL https://raw.githubusercontent.com/utensils/mold/main/install.sh | shArch Linux / AUR
Three packages on the AUR:
paru -S mold-ai-bin # Prebuilt binary, CUDA sm_89 (RTX 40-series). Fastest.
paru -S mold-ai # Builds from source — set CUDA_COMPUTE_CAP for other GPUs
paru -S mold-ai-git # Builds from main HEADSubstitute yay, pikaur, or any other AUR helper as appropriate. With vanilla makepkg:
git clone https://aur.archlinux.org/mold-ai-bin.git
cd mold-ai-bin
makepkg -siConflict with extra/mold: All three packages declare conflicts=('mold') because they install /usr/bin/mold — the same path used by the rui314 linker. You cannot have both installed simultaneously. If you need the linker for your build toolchain, install mold via Nix or the one-line installer (which targets ~/.local/bin) instead.
The existing mold-ai-bin package deliberately remains on sm_89. Use the source PKGBUILD with an explicit compute capability for other families:
CUDA_COMPUTE_CAP=86 paru -S mold-ai # RTX 3090 / A40
CUDA_COMPUTE_CAP=100 paru -S mold-ai # B200 / B300
CUDA_COMPUTE_CAP=120 paru -S mold-ai # RTX 50-seriesThere is no mold-ai-bin-sm100 package before real B200 qualification.
To upgrade: paru -Syu mold-ai-bin (or mold-ai / mold-ai-git). mold update will detect a pacman-managed install and direct you here instead of attempting to overwrite the binary.
To uninstall: sudo pacman -R mold-ai-bin (or whichever package you installed).
Nix
The flake is a source revision channel, not the self-updater's binary release channel. Pin the flake input or Git revision for reproducibility. Nix packages do not consult MOLD_DISTRIBUTION_IMAGE_VERSION; source and Nix-built cloud clients default to the mutable latest* container channel unless a release builder explicitly embeds an official distribution version.
# Run directly — no install needed
nix run github:utensils/mold -- run "a cat"
# RTX 3090 / A40
nix run github:utensils/mold#mold-sm86 -- run "a cat"
# B200 / B300
nix run github:utensils/mold#mold-sm100 -- run "a cat"
# RTX 50-series
nix run github:utensils/mold#mold-sm120 -- run "a cat"
# Add to your system profile
nix profile install github:utensils/moldFrom Source
Source builds likewise do not imply that a same-version GHCR image exists. They use rolling latest* cloud images by default. For local CUDA compilation, set CUDA_COMPUTE_CAP to the target required by the GPUs you intend to expose.
./scripts/ensure-web-dist.sh && cargo build --profile dev-fast -p mold-ai --features cuda./scripts/ensure-web-dist.sh && cargo build --profile dev-fast -p mold-ai --features metalcargo build --release -p mold-ai --features cudacargo build --release -p mold-ai --features metalRequires Rust 1.85+ and CUDA toolkit (Linux) or Xcode (macOS).
Optional features can be added to the same build, for example --features cuda,preview,expand,discord,tui or --features metal,preview,expand,discord,tui if you also want terminal preview, local prompt expansion, the Discord bot, or the interactive TUI.
dev-fast is the repo's local-iteration profile: it keeps debuginfo, enables incremental compilation, and uses thin LTO plus more codegen units so optimized builds stay much faster than the shipping --release profile.
Docker
docker pull ghcr.io/utensils/mold:latest
docker run --gpus all -p 7680:7680 ghcr.io/utensils/mold:latestSee Docker & RunPod for full deployment instructions.
Pre-Built Binaries
The one-line installer always targets the latest tag from the releases page. Each release ships the following assets:
| Platform | File |
|---|---|
| macOS Apple Silicon | mold-aarch64-apple-darwin.tar.gz |
| Linux x86_64 (Ampere, RTX 3090 / A40) | mold-x86_64-unknown-linux-gnu-cuda-sm86.tar.gz |
| Linux x86_64 (Ada, RTX 4090 / 40-series) | mold-x86_64-unknown-linux-gnu-cuda-sm89.tar.gz |
| Linux x86_64 (datacenter Blackwell, B200 / B300) | mold-x86_64-unknown-linux-gnu-cuda-sm100.tar.gz |
| Linux x86_64 (consumer Blackwell, RTX 50-series) | mold-x86_64-unknown-linux-gnu-cuda-sm120.tar.gz |
B200 support is simulated, not hardware-qualified. The sm_100 artifact passes hosted build, CUDA-image, loader, NVML, archive, and synthetic scheduler checks; real 8×B200 and MIG qualification remain deferred. GH200, GB200, and GB300 require future linux/arm64 artifacts and are unsupported. Current Linux release archives and containers are amd64-only.
To install an older tag, put MOLD_VERSION=<tag> on the sh side of the pipe, e.g. curl -fsSL ... | MOLD_VERSION=v0.8.0 sh. Placing it on the curl side (VAR=value curl ... | sh) exports the variable to curl only; the installer still sees the default and installs the latest release.
Pinned releases remain pinned. If an older tag lacks the selected native sm86, sm100, or sm120 asset, the installer and mold update --version fail closed. An old unsuffixed CUDA archive is considered only when the selected target is sm89, because that was the former filename for the same target.
Shell Completions
source <(mold completions bash) # bash
source <(mold completions zsh) # zsh
mold completions fish | source # fish