Archives and portable workspaces#

Workspace archives package a project into a portable .tar.zst, .tar.gz, or .tar.bz2 archive that includes the manifest and source files. An existing or newly generated lockfile can also be included, along with resolved conda package artifacts for offline deployment and receipts for integrity checks.

archive demo

conda workspace archive -o my-project.tar.zst

When -o / --output is omitted, the archive is written in the workspace root using the workspace name as the filename stem. That default name must be a single filename segment. Use -o / --output for other paths.

In git repos, only tracked files are included. Built-in exclusions (.git, __pycache__, .conda/envs, .pixi, and common credential material such as .env, .ssh, .aws, and .npmrc) always apply. Configure additional exclusions in the manifest:

[workspace.archive]
exclude = ["docs/**", "*.log"]

Or pass them on the command line:

conda workspace archive --exclude "benchmarks/**"

Restoring archives#

Extract an archive and install environments in one step:

conda workspace unarchive my-project.tar.zst --target ./restored --install

The extraction target path must be absent. Existing files, links, and directories, including empty directories, are not overwritten.

Install one archived environment to a final runtime prefix, optionally under a staged filesystem root:

conda workspace unarchive my-project.tar.zst \
  --install \
  --dest /tmp/rootfs \
  -e runtime \
  --prefix /opt/runtime

When --dest is used, unarchive warns if installed files still reference the physical staging prefix.

Locking, bundling, and receipts#

Pass --lock to solve and update the lockfile before archiving:

conda workspace archive --lock

For offline deployment, --bundle includes resolved conda package archives (.conda or .tar.bz2) inside the archive. Package hashes are verified against the lockfile on bundling and before receipt-verified cache priming:

conda workspace archive --lock --bundle --receipt -o offline.tar.zst
CONDA_OFFLINE=true conda workspace unarchive offline.tar.zst --receipt --install

For handoff workflows that need a separate integrity record, --receipt writes an external in-toto Statement JSON file. unarchive --receipt verifies the archive, extracted manifest, extracted lockfile, and lockfile package inventory before moving the verified workspace into place:

conda workspace archive --lock --receipt -o my-project.tar.zst
conda workspace unarchive my-project.tar.zst --receipt --target ./verified

Python integrations can use conda_workspaces.archive.WorkspaceArchive for the same archive operations without importing CLI handlers.

See the archive tutorial for a full CLI walkthrough, Use workspace archives from Python for integration examples, and the archive receipt reference for the receipt JSON format.