Design#
conda-express is the opinionated native conda distribution that ships the
cx binary and its compressed-bundle sibling, cxz.
The reusable builder and browser-specific projects now live elsewhere:
conda-ship: generic build system for ready-to-run conda bootstrap binariesconda-wasm: browser, WebAssembly, Emscripten, and JupyterLite pipeline
This repository keeps the distribution policy for cx: the package set,
default prefix behavior, activation policy, release artifacts, and user-facing
documentation.
Runtime Model#
cx is a single native Rust binary built by conda-ship. It embeds:
a runtime lock derived from the committed source-environment lock
build-time metadata from the conda-express distribution defaults
optionally, a compressed package bundle for
cxz
On first use, cx bootstrap installs conda into the target prefix, writes
prefix metadata, configures the selected solver and plugins, and freezes the
base prefix. Later invocations delegate to the installed conda executable.
Distribution Policy#
conda-express intentionally keeps opinions that do not belong in conda-ship:
binary names:
cxandcxzdefault prefix:
~/.conda/expressdefault conda channel:
conda-forgedefault package set: conda, conda-rattler-solver, conda-spawn, and selected conda ecosystem plugins
frozen base prefix behavior
cx shellas the conda-spawn based activation commanduser-facing install methods such as Homebrew, shell scripts, Docker, PyPI, and GitHub Releases
PyPI wheels consume release artifacts built with conda-ship; they do not rebuild or vendor the runtime source in this repository.
Build Flow#
The distribution flow backed by conda-ship is:
conda-expresssupplies distribution defaults: theruntimesource environment, exclusions, artifact names, release policy, and downstream packaging.CI, release, and release-prep workflows invoke the pinned conda-ship action.
conda-ship owns the lock, bundle, build, inspect, and artifact metadata steps.
CI and release jobs build
cxandcxzby invoking conda-ship rather than the legacy in-repo builder path.
This repository does not carry the generic runtime or builder source. Changes to that implementation belong in conda-ship.
Bootstrap Flow#
At runtime, cx bootstrap:
Determines the target prefix.
Validates lockfile, offline, and bundle inputs.
Uses the stamped runtime lock.
Installs packages through rattler using locked package records.
Pre-populates the package cache from an external or embedded bundle when requested.
Writes runtime ownership metadata (for
cx,.cx.json) and.condarc.Writes the CEP 22
conda-meta/frozenmarker for the base prefix.
After bootstrap, pass-through commands run the installed conda executable.
Activation#
conda-express keeps activation as distribution behavior, not builder
behavior. The default user workflow is:
cx shell myenv
That command delegates to conda-spawn and avoids shell-profile initialization. Other conda commands pass through to the installed conda executable after bootstrap.
Repository Boundaries#
This repo should not contain:
WebAssembly crates
Emscripten conda patches
JupyterLite extensions or demo sites
generic builder product naming
Constructor-style
.sh,.pkg, or.msioutput generation
Those belong in conda-wasm, conda-ship, or downstream distribution channels.