Skip to main content

promptuna-server

Server surface for the promptuna evaluation harness. See the main project README for the full overview, library API, and usage surfaces.

HTTP + SSE transport for promptuna jobs (run, evaluate, optimize).

This package is transport only. It does not define evaluation logic — that lives in the core promptuna library. On-disk projects are resolved via promptuna.projects; user projects do not belong in this directory.

Install (PyPI)

pip install promptuna-server
uvicorn promptuna_server.main:app --port 6969

Set PROMPTUNA_PROJECTS_ROOT to a directory of on-disk projects (see samples/README.md for layout). In a dev checkout, just server from the repo root is equivalent.

Development

From the repository root:

just server

Uses bundled samples/ by default. Override the projects root:

PROMPTUNA_PROJECTS_ROOT=/path/to/projects just server

The API listens on port 6969. All routes are under the /api prefix (e.g. GET /api/health). Interactive OpenAPI docs: http://127.0.0.1:6969/docs.

For the browser UI in a separate dev server, see frontend/README.md.

HTTP API

Authoritative definitions: main.py, schemas.py.

Method Path Purpose
GET /api/health Liveness ({"status":"ok"})
GET /api/catalog Projects and artifact names for selectors
POST /api/run Start a run job → { "job_id": "…" }
POST /api/evaluate Start an evaluate job
POST /api/optimize Start an optimize job
GET /api/jobs List persisted jobs (newest first)
GET /api/jobs/{job_id} Replay: { manifest, events, summary }
GET /api/jobs/{job_id}/events SSE stream until the job completes

Constraints

  • One job at a time in memory. A second POST while one is running returns 409 with {"detail":"another job is already running"}.
  • model and proposer_model are free-text strings (provider:model-id); they are not in /api/catalog.
  • repeats (default 1) runs every example that many times to average out LM stochasticity; it applies to the whole dataset. Judge-side replication is not settable over HTTP — it lives on the metric in the project's metrics.py.
  • summary in GET /api/jobs/{job_id} is null while manifest.status === "running".

Job persistence

Completed jobs are written under <projects_root>/jobs/<job_id>/ as manifest.json, append-only events.jsonl, and a terminal summary.json.

SSE events

Each streamed line is a JSON envelope (src/promptuna/serialize.py):

{
  "seq": 0,
  "job_id": "uuid",
  "step_index": 0,
  "type": "trial | scoring | step | proposal | error",
  "payload": {}
}

For run and evaluate, step_index is always 0. For optimize, trials, scorings, and proposals within one optimization step share the same step_index; it increments only after a step event.

Clients and PUBLIC_API_URL

HTTP clients (including the SvelteKit frontend) set PUBLIC_API_URL to the API origin only — e.g. http://127.0.0.1:6969 — and append /api to each path. In the Docker image the UI is same-origin and PUBLIC_API_URL is left empty so requests go to /api/... on port 8080.

Docker (UI + API in one container)

From the repository root:

just docker-build
just docker-run

Open http://localhost:8080. The image bundles samples/; mount your own projects and pass API keys:

just docker-run -v /path/to/projects:/projects -e PROMPTUNA_PROJECTS_ROOT=/projects

Uses podman when available, otherwise docker. Rebuild after code changes — the image is a snapshot at build time.

Released images are published to GitHub Container Registry on each version tag:

podman pull ghcr.io/nachollorca/promptuna:latest
podman run --rm -p 8080:8080 --env-file .env ghcr.io/nachollorca/promptuna:latest

Set the package visibility to public in GitHub (Packages → promptuna → Package settings) so users can pull without logging in.

A future promptuna serve command will wrap uvicorn and accept --projects-root explicitly.

Metadata

Release files for promptuna-server 1.37.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for promptuna-server 1.37.1
File Size Uploaded
promptuna_server-1.37.1.tar.gz 7.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for promptuna-server 1.37.1
File Interpreter ABI Platform
promptuna_server-1.37.1-py3-none-any.whl Python 3 none any Details

Total release size: 16.1 kB

Release files / promptuna_server-1.37.1.tar.gz

Download URL promptuna_server-1.37.1.tar.gz
Size 7.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a872cea9fe42ea3e14fc1a889b8899cd76b449246874970304eb0167580fadea
BLAKE2b-256 checksum
How to use checksums
ff2cf12c85907b0212679e88ff52933ac9010a246df369f537ff316e969af6fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / promptuna_server-1.37.1-py3-none-any.whl

Download URL promptuna_server-1.37.1-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a2ef56ad695cf3d4d4e16fb8e3b0cc8d55e866bbfa10dedb2c77805079f48e2
BLAKE2b-256 checksum
How to use checksums
63c76c16031ced46cf05d6fec1b4f935f330b516be47290ef07533aafd46eeb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

1.38.0

2 release files

1.37.2

2 release files

This release

1.37.1 This release

2 release files

1.37.0

2 release files

1.36.0

2 release files

1.35.3

2 release files

1.35.2

2 release files

1.35.1

2 release files

1.31.0

2 release files

1.30.0

2 release files

1.29.0

2 release files

1.28.0

2 release files

1.27.0

2 release files

1.26.0

2 release files

1.25.1

2 release files

1.25.0

2 release files

1.24.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page