Service-type reference
Every [services.<name>] block in a manifest declares a type. The
type is one of ten v1 service types (decision 2.21). They split into
two groups:
Blessed services
Vertical implementations with a download recipe, a healthcheck, an inspection surface, and a per-service version-catalog entry:
| Type | Default version | Description |
|---|---|---|
postgres | 16.10 | PostgreSQL, source-built, loopback-only |
redis | 7.4.6 | Last open-source Redis line |
qdrant | 1.17.1 | Vector database |
ollama | 0.23.2 | Local LLM runtime (defaults to shared isolation) |
minio | RELEASE.2025-09-07T16-13-09Z | S3-compatible object store |
These are the services Unibench actively manages binaries for. The
orchestrator downloads them on first run, runs first-run init
(initdb, root-cred mint), supervises the process, and ships a
dedicated inspector in the GUI drawer.
Generic services
Wrap user-provided binaries; no per-version catalog entry:
| Type | Description |
|---|---|
process | Long-running user binary |
task_service | One-shot script with timeout |
container | Docker / Podman container |
compose | Docker Compose project (the escape hatch) |
remote | Reference to a service running outside the orchestrator |
For these, the manifest declares command / image / url and the
orchestrator wires up dependencies + healthchecks + port allocation
without prescribing anything about the binary itself.
What "default" means
When a service's version field is omitted (or set to "default"),
the orchestrator installs the version listed in the
per-service version catalog.
The inspector drawer's Version section + unibench versions <type>
both surface the value plus a clickable link to upstream release
notes.
Shared isolation
The default isolation for most services is per-project (decision
2.2) — each project gets its own Postgres instance, its own Qdrant,
its own MinIO. Ollama is the exception, defaulting to
isolation = "shared" (decision 2.46) so multiple projects don't
each load the same multi-gigabyte model into RAM.
Override per service with isolation = "shared" or "per-project"
in the manifest.