Conda plugin entry point for the conda-ship runtime builder.
Project description
conda-ship
Build ready-to-run conda runtimes from solved conda environments.
conda-ship is a generic builder for single-binary conda runtimes. It
provides the cs builder CLI, the cs-template generic runtime template, a
composite GitHub Action, and an optional Python adapter that exposes
conda ship inside conda.
The project is currently alpha and pre-1.0. The split from
conda-express is now explicit:
conda-ship owns the reusable build/runtime machinery, while downstream
distributions own their package sets, runtime names, release channels, installer
wrappers, and user documentation. conda-express is one downstream distribution
maintained by Jannis Leidel; it uses conda-ship to publish the cx and cxz
runtimes.
What It Builds
conda-ship stages a runtime binary plus release metadata:
.runtime.lock: the lockfile stamped into the runtime.packages.txt: tab-separated package records for quick inspection.info.json: artifact metadata for release tooling.sha256: checksums for staged files- optional
.bundle.tar.zst: compressed package archives for offline builds
The runtime itself has a small management surface: bootstrap, status,
shell, and uninstall. Other commands pass through to the configured
delegate executable after bootstrap, usually conda.
Artifact Layouts
| Layout | Output | Bootstrap behavior |
|---|---|---|
online |
<runtime> |
Downloads packages from the stamped runtime lock. |
external |
<runtime> plus <runtime>.bundle.tar.zst |
Uses a separate package bundle for offline-capable installs. |
embedded |
<runtime>z |
Embeds the compressed package bundle in one binary. |
Project Input
conda-ship builds from an already solved source environment. It does not solve loose matchspecs in the GitHub Action and it does not define a package set of its own.
Supported manifest and lockfile pairs:
conda.tomlplusconda.lockpyproject.tomlwith[tool.conda]plusconda.lockpixi.tomlpluspixi.lockpyproject.tomlwith[tool.pixi]pluspixi.lock
The package and channel intent lives in the selected source environment.
[tool.conda-ship] only records conda-ship build policy:
[tool.conda-ship]
runtime = "demo"
delegate = "conda"
layout = "online"
source-environment = "ship"
exclude = ["conda-libmamba-solver"]
The selected source environment must include the runtime contract packages:
conda, conda-rattler-solver, and conda-spawn.
Local Workflow
Packaged builds find cs-template next to the installed cs executable.
Use --template only for an explicit template path, custom packaging, or
cross-builds.
cs inspect
cs build --dry-run
cs build
cs build --layout embedded
cs run -- --path /tmp/demo-smoke bootstrap
cs inspect is the preflight command. It derives the runtime lock, validates the
selected source environment, applies package exclusions, and prints the package
set without writing artifacts.
GitHub Actions
The repository root is also a composite GitHub Action for downstream release jobs:
- uses: jezdez/conda-ship@0.1.0
id: cs
with:
layout: embedded
The action expects a committed manifest and matching lockfile. It downloads the
tagged cs, cs-template, and SHA256SUMS release assets for the runner,
verifies their GitHub Artifact Attestations, checks the release checksums, runs
cs build --dry-run, and then stages the runtime into a dist-path output.
Use release tags for release builds. Branch refs do not have matching conda-ship release assets.
Packaging
conda-ship is not an OS installer generator. It does not target .sh, .pkg,
or .msi output directly. It produces runtimes that can be distributed as
GitHub Release assets or wrapped by Homebrew, constructor, Docker, enterprise
packaging systems, and other release tooling.
The PyPI package and conda package install the cs builder, the cs-template
runtime template, and the Python adapter together. The adapter makes
conda ship a shortcut for the same builder when installed in a conda
environment; it does not make conda-ship part of conda itself.
What Belongs Downstream
Downstream distributions decide:
- runtime names and delegates
- package sets and channels
- package exclusions
- install schemes and install names
- documentation URLs
- release channels and installers
- signing, SBOM, and in-toto provenance for final artifacts
conda-ship verifies the inputs it consumes and the package archives it stages or
installs, but downstream release systems should sign and attest the final
runtime artifacts after cs build.
Documentation
Full documentation is available at jezdez.github.io/conda-ship.
Useful starting points:
Development
pixi install
pixi run test
pixi run lint
pixi run -e test pytest
pixi run docs
Run cargo generate-lockfile after changing Cargo metadata and pixi lock
after changing pixi metadata.
License
BSD-3-Clause
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file conda_ship-0.1.0.tar.gz.
File metadata
- Download URL: conda_ship-0.1.0.tar.gz
- Upload date:
- Size: 90.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e538afb8c4264b54db045b604f609c264a0b3c56ba2bf6463406cf0270e7d3c
|
|
| MD5 |
4c42e36cb418aed06e977916ac52c692
|
|
| BLAKE2b-256 |
9ab464144ffef4b7b1b478bfb474d026cabc0a4bcc967de567d04833913b6cfb
|
Provenance
The following attestation bundles were made for conda_ship-0.1.0.tar.gz:
Publisher:
release.yml on jezdez/conda-ship
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conda_ship-0.1.0.tar.gz -
Subject digest:
4e538afb8c4264b54db045b604f609c264a0b3c56ba2bf6463406cf0270e7d3c - Sigstore transparency entry: 1697445446
- Sigstore integration time:
-
Permalink:
jezdez/conda-ship@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/jezdez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Trigger Event:
push
-
Statement type:
File details
Details for the file conda_ship-0.1.0-py3-none-win_amd64.whl.
File metadata
- Download URL: conda_ship-0.1.0-py3-none-win_amd64.whl
- Upload date:
- Size: 7.1 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
baf6fc3b63a2ea42225d95f841835d88356e9187ee5599c53fa2c2faa089fd92
|
|
| MD5 |
e3d4a269f5408997f3a04c4c9f47157e
|
|
| BLAKE2b-256 |
d7ba9b3c27818efe6eb95f8dd720226a02b8c98ad4b26a2840184584a0d8ae2c
|
Provenance
The following attestation bundles were made for conda_ship-0.1.0-py3-none-win_amd64.whl:
Publisher:
release.yml on jezdez/conda-ship
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conda_ship-0.1.0-py3-none-win_amd64.whl -
Subject digest:
baf6fc3b63a2ea42225d95f841835d88356e9187ee5599c53fa2c2faa089fd92 - Sigstore transparency entry: 1697445772
- Sigstore integration time:
-
Permalink:
jezdez/conda-ship@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/jezdez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Trigger Event:
push
-
Statement type:
File details
Details for the file conda_ship-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: conda_ship-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 7.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07154c3ee50ed2b8987aa18b1aef00a1de3154dc354f9a32088624fb642efd20
|
|
| MD5 |
06d2f2797e854a923a588488b8b78351
|
|
| BLAKE2b-256 |
37716eacf756a5ec76ab97a5e3ba4ec0ac9f068ad26ce3a4ecff09c658778b24
|
Provenance
The following attestation bundles were made for conda_ship-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on jezdez/conda-ship
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conda_ship-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
07154c3ee50ed2b8987aa18b1aef00a1de3154dc354f9a32088624fb642efd20 - Sigstore transparency entry: 1697446337
- Sigstore integration time:
-
Permalink:
jezdez/conda-ship@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/jezdez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Trigger Event:
push
-
Statement type:
File details
Details for the file conda_ship-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: conda_ship-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 7.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b35934dcc29fb8b8aa36a107038fab044ab03364365668facde6f1316359dd1
|
|
| MD5 |
e93ed280d5fbd466e577bbc81491269e
|
|
| BLAKE2b-256 |
f743e3c437c65f17b20255dbbe7dbbfcac7ac3ac4e2b8f56ef27bc697097d7a9
|
Provenance
The following attestation bundles were made for conda_ship-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on jezdez/conda-ship
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conda_ship-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
5b35934dcc29fb8b8aa36a107038fab044ab03364365668facde6f1316359dd1 - Sigstore transparency entry: 1697445880
- Sigstore integration time:
-
Permalink:
jezdez/conda-ship@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/jezdez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Trigger Event:
push
-
Statement type:
File details
Details for the file conda_ship-0.1.0-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: conda_ship-0.1.0-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.4 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e84d0825a9a85a8bfe82b8f58ba6f50e2c2c740fca25e468a33c0a3557a2921e
|
|
| MD5 |
729299c94a0df323e3fadf887abd67cb
|
|
| BLAKE2b-256 |
e3cec4925a9fb63f24df493bd0c578f0fe03922194b593723ad21c4786ec8f29
|
Provenance
The following attestation bundles were made for conda_ship-0.1.0-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on jezdez/conda-ship
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conda_ship-0.1.0-py3-none-macosx_11_0_arm64.whl -
Subject digest:
e84d0825a9a85a8bfe82b8f58ba6f50e2c2c740fca25e468a33c0a3557a2921e - Sigstore transparency entry: 1697446191
- Sigstore integration time:
-
Permalink:
jezdez/conda-ship@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/jezdez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Trigger Event:
push
-
Statement type:
File details
Details for the file conda_ship-0.1.0-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: conda_ship-0.1.0-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 6.7 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
968b947570aba81b7e5da89da165f9dffcdb113e72e3c6f8c24a89c3d29a00aa
|
|
| MD5 |
2cfc532fc1bed8ed5581b12f884598b9
|
|
| BLAKE2b-256 |
058219f9e69cd42d895af85cce3c3d24e44d685587149fc6af87ffdc936ebfee
|
Provenance
The following attestation bundles were made for conda_ship-0.1.0-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release.yml on jezdez/conda-ship
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conda_ship-0.1.0-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
968b947570aba81b7e5da89da165f9dffcdb113e72e3c6f8c24a89c3d29a00aa - Sigstore transparency entry: 1697446032
- Sigstore integration time:
-
Permalink:
jezdez/conda-ship@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/jezdez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fdc33c7f08a0c2bb230cef925d5c72ed1b41c91e -
Trigger Event:
push
-
Statement type: