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 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?#
Bootstrap a full conda environment in ~3–5 seconds from an embedded lockfile. No repodata fetch, no solve at runtime.
7-11 MB single binary. Installs 86 packages instead of 113 by excluding unnecessary native dependencies.
Uses conda-rattler-solver (resolvo) instead of libmamba. conda-spawn for activation instead of shell profile hacks.
One binary, one command. No Python, no installer, no shell modifications required.
cxz embeds all packages in a single 50-95 MB binary. Drop it anywhere, run cxz bootstrap — zero network access.
Get up and running in minutes.
Bake your own packages into a cx binary.
All commands and options.
Build custom cx binaries in CI with the composite action.
Build-time and runtime settings.
Design decisions and internals.
Real conda in WebAssembly — no server required. Live demo →