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.2

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.2
File Size Uploaded
promptuna_server-1.37.2.tar.gz 7.2 kB Details

Built distribution (wheel)

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

Total release size: 16.1 kB

Release files / promptuna_server-1.37.2.tar.gz

Download URL promptuna_server-1.37.2.tar.gz
Size 7.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0072111b04b62fa6bb99f18ca702788cf43640255eeabd989ff6fbdda45eee64
BLAKE2b-256 checksum
How to use checksums
02ec3f93a8f9ce31cd87cf0ac071978a4c98275379a18d5fc74d174a88de5c6e
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.2-py3-none-any.whl

Download URL promptuna_server-1.37.2-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c371ac46b4563f10f879884948efbf19dbe5f09d13ed729ed33de875af78d442
BLAKE2b-256 checksum
How to use checksums
30a40a25607c42f4e4d9622a3e5cc40914b9f321e6d3ab27abd0071a34eb14aa
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

This release

1.37.2 This release

2 release files

1.37.1

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