Quick start#

Install the package into a conda environment with its solver and lockfile providers:

conda create --name conda-presto --channel conda-forge --override-channels \
  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[server]'

For current source, use python -m pip install '.[server]' from its checkout instead. From a Pixi checkout, pixi run serve starts the development server.

Start the server#

CONDA_PRESTO_PLATFORMS=linux-64 conda presto --serve

In another terminal, wait for readiness and send a request:

curl --fail http://127.0.0.1:8000/health
curl --fail --silent --show-error \
  --dump-header headers.txt --output result.json \
  --json '{"specs":["zlib"],"channels":["conda-forge"],"platforms":["linux-64"]}' \
  http://127.0.0.1:8000/resolve

result.json contains selected packages and any per-platform error. The service does not install them. Add ?format=rattler-lock-v6 to request a lockfile instead.

Retrieve a retained result#

When retention succeeds, the response has a Location header. Retrieve those exact bytes while the entry remains available:

location=$(awk 'tolower($1) == "location:" {gsub("\r", "", $2); print $2}' headers.txt)
if test -n "$location"
then
  curl --fail --silent --show-error "http://127.0.0.1:8000$location" --output retained.json
  cmp result.json retained.json
fi

Read Resolve and save an output for exporting, SBOMs, signing and verification, Run conda-presto with Docker for container deployment, or HTTP API for exact fields. The OpenAPI document is at /openapi.json.