Resolve, inspect, and cache conda solve results through CLI, HTTP, CI, and solver integrations
Project description
conda-presto
conda-presto resolves conda package specifications without creating or changing an environment. It accepts inline specs or environment files, selects fully pinned packages for one or more platforms, and writes native JSON or a conda exporter format.
The same solve engine is available through the conda presto CLI, a Litestar HTTP API, a GitHub Action, and an internal broker-backed conda --solver=presto plugin. The internal solver delegates only final-state selection. Conda still owns package downloads and prefix transactions locally.
Capabilities
- Resolve inline specs or supported environment inputs selected through conda environment specifier plugins
- Solve several target platforms with deterministic target virtual-package defaults
- Write native package metadata or any installed conda exporter format
- Convert covered lockfiles through the CLI without solving
- Inspect lockfile metadata over HTTP without loading package records
- Parse and review inputs through
/parse,/preflight,/repair,/diff, and/explain - Retain HTTP results under content-addressed
/r/<hash>locations with memory, file, or Redis storage - Run a persistent public HTTP worker in the server container
- Run an opt-in broker-managed loopback service for repeated local work
- Delegate internal conda final-state solves through
conda --solver=presto - Record repeated solver requests and refresh missing or stale private final states during broker idle time
- Resolve environments in GitHub Actions through local CLI or remote HTTP modes
- Select packages with
conda-rattler-solver
Quick start
conda create --name conda-presto \
--override-channels \
--channel conda-forge \
python=3.13 \
'conda>=26.5,<27' \
'conda-rattler-solver>=0.1.1,<0.2' \
'conda-lockfiles>=0.2.1' \
pip
conda activate conda-presto
python -m pip install conda-presto
conda presto -c conda-forge -p linux-64 python=3.13 numpy
conda-presto is installed from PyPI into a conda environment that supplies conda and its solver plugins. It is not currently published as a conda package. See the quick start for released, current-main, and source-checkout installation paths, file inputs, lockfile output, and the local HTTP server.
Run the HTTP server
docker run --detach \
--name conda-presto \
--publish 127.0.0.1:8000:8000 \
--cap-drop ALL \
--security-opt no-new-privileges \
ghcr.io/jezdez/conda-presto:0.7.0
for _ in {1..180}
do
if curl --fail --silent http://127.0.0.1:8000/health >/dev/null
then
break
fi
sleep 1
done
curl --fail --silent --show-error http://127.0.0.1:8000/health
The server image listens on port 8000 inside the container and runs one persistent foreground worker. It does not start conda-broker, expose the internal solver route, or run scheduled solver-cache refresh.
See Run conda-presto with Docker and the Docker image reference.
Run the broker-managed service
conda-presto registers the manual conda-presto.server service with conda-broker. The service binds to a broker-assigned loopback port and keeps its foreground solver worker loaded between requests.
conda broker start conda-presto.server
conda broker wait conda-presto.server --timeout 180
conda broker endpoint conda-presto.server
See Run the broker-managed service for lifecycle, configuration capture, logs, and trust boundaries.
Use the internal Presto solver
After the broker service is ready, select the internal backend for one conda operation:
conda create --dry-run --solver=presto -n demo -c conda-forge python=3.13
The backend is local-only and tied to the broker service. It is not a remote solver protocol and is not available through the Docker server image. See Use the Presto solver and the solver reference.
Documentation
- Tutorials for guided CLI, HTTP, review, and local-service workflows
- How-to guides for Docker, broker, cache, monitoring, troubleshooting, and CI tasks
- Reference for exact interfaces, service contracts, cache behavior, and configuration
- Explanation for architecture, deployment models, review semantics, caching, performance, and security
- Roadmap for shipped streams and linked future work
- Changelog for release history
Development
git clone https://github.com/jezdez/conda-presto.git
cd conda-presto
pixi install
pixi run lint
pixi run format
pixi run -e test test
pixi run -e test bench
pixi run serve
pixi run -e docs docs
License
BSD-3-Clause
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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_presto-0.7.0.tar.gz.
File metadata
- Download URL: conda_presto-0.7.0.tar.gz
- Upload date:
- Size: 297.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
195675e744f37dd1497dc2944df388aca507b4f4d2459999401f4f5c8c7398c7
|
|
| MD5 |
9572cf5d668088aec063e5e01f91807d
|
|
| BLAKE2b-256 |
fc50737959f2c03954f306b6bc5013e888bbd29f095e78b0d233705384a8a33e
|
Provenance
The following attestation bundles were made for conda_presto-0.7.0.tar.gz:
Publisher:
release.yml on jezdez/conda-presto
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conda_presto-0.7.0.tar.gz -
Subject digest:
195675e744f37dd1497dc2944df388aca507b4f4d2459999401f4f5c8c7398c7 - Sigstore transparency entry: 2234789807
- Sigstore integration time:
-
Permalink:
jezdez/conda-presto@38a49c574e5d356bdaeaeeec6c1142f150f511cd -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/jezdez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@38a49c574e5d356bdaeaeeec6c1142f150f511cd -
Trigger Event:
push
-
Statement type:
File details
Details for the file conda_presto-0.7.0-py3-none-any.whl.
File metadata
- Download URL: conda_presto-0.7.0-py3-none-any.whl
- Upload date:
- Size: 72.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bf20ac6b4f172547849db49c826c9257b731e7cb2e99c5d395451bc51d3290d
|
|
| MD5 |
582f996e33e018c4cedc12c808ab1704
|
|
| BLAKE2b-256 |
202f126090da558a10407c056c7b1598ecfe2218c8fa8af2385419823f8f3e30
|
Provenance
The following attestation bundles were made for conda_presto-0.7.0-py3-none-any.whl:
Publisher:
release.yml on jezdez/conda-presto
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conda_presto-0.7.0-py3-none-any.whl -
Subject digest:
5bf20ac6b4f172547849db49c826c9257b731e7cb2e99c5d395451bc51d3290d - Sigstore transparency entry: 2234790218
- Sigstore integration time:
-
Permalink:
jezdez/conda-presto@38a49c574e5d356bdaeaeeec6c1142f150f511cd -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/jezdez
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@38a49c574e5d356bdaeaeeec6c1142f150f511cd -
Trigger Event:
push
-
Statement type: