Deployment models#
conda-presto exposes one solve engine through several interfaces. The right interface depends on whether work is one-shot, shared over HTTP, or part of a local conda transaction.
Mode comparison#
Mode |
Long-lived solve process |
Public HTTP API |
Internal |
Scheduled solver-cache refresh |
Prefix transaction |
|---|---|---|---|---|---|
|
no |
no |
no |
no |
none |
|
server only |
yes |
no |
no |
none |
Docker server image |
persistent worker |
yes |
no |
no |
none |
|
persistent worker |
yes, loopback |
yes, loopback |
yes |
none |
|
uses broker service |
no new listener |
client only |
through broker service |
calling conda process |
The GitHub Action selects either the one-shot CLI or an existing public HTTP deployment. It does not define another server mode.
One-shot CLI#
The CLI is the smallest execution boundary. It imports conda, parses the input, solves, writes the result, and exits. It is appropriate for local scripts and CI jobs where installing conda-presto is simpler than maintaining a service.
Process startup and imports are paid for every invocation. Conda’s on-disk repodata cache can still be reused across commands.
Ordinary HTTP server#
conda presto --serve keeps the Litestar application and HTTP result cache
alive. It exposes the public API and performs startup repodata warmup. It does
not enable the private solver route because it is not a broker child.
This mode is useful for development and for deployments that manage uvicorn directly. Server concurrency, process isolation, and storage are configured through environment variables.
Docker server#
The server image enables one persistent foreground worker. That worker retains loaded Python modules, repodata, and solver indexes. The container replaces a failed worker itself and exposes only the public HTTP API.
The image does not start conda-broker, enable /solver/v1, or run scheduled
solver-cache refresh. Adding conda-broker to the installed environment does not
change those boundaries.
Broker-managed service#
conda-broker starts conda-presto.server on a broker-assigned loopback port.
The broker supplies the service identity and endpoint environment, monitors the
health command, and restarts the service process after a failure.
This is the only mode that enables the private solver route and scheduled solver-cache refresh. Loopback reduces network exposure but does not authenticate other users on the same host, so the service belongs on a trusted single-user system or inside equivalent process isolation.
Internal Presto solver client#
conda --solver=presto is a conda solver plugin, not another server. It captures
the calling conda process’s effective solver state, including installed records,
history, pins, settings, and virtual packages. It sends that state to the ready
broker service and receives a final package state.
The caller still computes the unlink and link transaction. Without --dry-run,
the caller downloads packages and mutates its prefix locally. The service never
receives the prefix path or file inventory.
The local-only design is intentional. It avoids sending prefix state to a general remote endpoint and keeps conda’s transaction behavior in conda.
Use Run conda-presto with Docker or Run a broker-managed local service for deployment steps. Exact boundaries are listed in Docker image reference, Broker service reference, and Presto solver backend.