conda-express#

A lightweight, single-binary bootstrapper for conda, powered by rattler. The cx binary is short for conda express.

cx replaces the miniconda/constructor installation pattern with a single static binary (7-11 MB depending on platform) that bootstraps a fully functional conda environment in seconds. For air-gapped environments, the self-contained cxz variant (50-95 MB) embeds all packages directly in the binary.

Install#

brew tap jezdez/conda-express https://github.com/jezdez/conda-express
brew install jezdez/conda-express/cx

Works on macOS and Linux. Upgrades via brew upgrade cx.

macOS / Linux:

curl -fsSL https://jezdez.github.io/conda-express/get-cx.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://jezdez.github.io/conda-express/get-cx.ps1 | iex"
docker run --rm -v cx-data:/home/nonroot/.cx ghcr.io/jezdez/conda-express bootstrap

Works on Linux, macOS, and Windows via Docker Desktop.

pip install conda-express
cargo install conda-express

See the quickstart for all installation methods.

Quick example#

Bootstrap conda, create an environment, and activate it

# Bootstrap a conda installation (~3–5 seconds)
cx bootstrap

# Create and activate an environment
cx create -n science python=3.12 numpy scipy
cx shell science

# Use conda normally — cx delegates transparently
cx install -n science pandas matplotlib

On first use, cx automatically installs conda and its plugins into ~/.cx from an embedded lockfile. Subsequent invocations hand off directly to the installed conda binary.

What gets installed#

cx installs a minimal conda stack from conda-forge:

Package

Role

python >= 3.12

Runtime

conda >= 25.1

Package manager

conda-rattler-solver

Rust-based solver (replaces libmamba)

conda-spawn

Subprocess-based environment activation

conda-pypi

PyPI interoperability

conda-self

Base environment self-management

conda-workspaces

Multi-environment workspace and task management

The conda-libmamba-solver and its 27 exclusive native dependencies are excluded by default, reducing the install size significantly.

Why conda-express?#

Fast

Bootstrap a full conda environment in ~3–5 seconds from an embedded lockfile. No repodata fetch, no solve at runtime.

Features
Small

7-11 MB single binary. Installs 86 packages instead of 113 by excluding unnecessary native dependencies.

Features
Modern

Uses conda-rattler-solver (resolvo) instead of libmamba. conda-spawn for activation instead of shell profile hacks.

Features
Simple

One binary, one command. No Python, no installer, no shell modifications required.

Quick start
Air-gapped

cxz embeds all packages in a single 50-95 MB binary. Drop it anywhere, run cxz bootstrap — zero network access.

Features
Quick start

Get up and running in minutes.

Quick start
Custom builds

Bake your own packages into a cx binary.

Build a custom cx binary
CLI

All commands and options.

CLI reference
GitHub Action

Build custom cx binaries in CI with the composite action.

GitHub Action reference
Configuration

Build-time and runtime settings.

Configuration
Architecture

Design decisions and internals.

Design
Browser

Real conda in WebAssembly — no server required. Live demo →

conda in the browser