Every valid field of apphaven.yaml, on one page. For worked examples and
explanations, see The manifest and the
Configuration pages; anything not listed here is rejected
by validation.
| Field | Type | Required | Description |
|---|
version | int | no | Manifest schema version. Currently 1 (the default). |
services | map of name → service | yes | At least one service. |
volumes | map of name → volume | no | Volumes. Required only if a service references one. |
Service and volume names must match ^[a-zA-Z0-9][a-zA-Z0-9_\-]{0,63}$:
1–64 characters of letters, digits, _, and -, starting with a letter or
digit. Use lowercase names.
Every service has a type, which decides its other fields:
| Field | Type | Required | Description |
|---|
type | string | yes | container or postgres. |
depends_on | list of {service, condition} | no | Start ordering. Valid on every type. |
→ Container services
| Field | Type | Required | Description |
|---|
image | string | conditional | Required unless build is set. Any pullable image reference. With build, names the build result. |
build | object | conditional | Build from source; see build. A container service declares image or build. |
ports | list of int | no | Ports the service listens on, each 1–65535. |
env | map<string, string> | no | Environment variables. Values may use references. |
volumes | list of {name, mount_path} | no | Volume mounts; see mounts. |
healthcheck | object | no | See healthcheck. |
| Field | Type | Required | Description |
|---|
dockerfile | string | no | Path to the Dockerfile, relative to context. Default Dockerfile. |
context | string | no | Build context directory, relative to the repo root. Default .. |
args | map<string, string> | no | Docker build args. Values may use references. |
| Field | Type | Required | Description |
|---|
name | identifier | yes | A key of the top-level volumes map. |
mount_path | string | yes | Absolute, canonical path inside the container: no .., . segments, trailing /, or //. |
| Field | Type | Required | Description |
|---|
test | list of string | yes | ["CMD", ...] or ["CMD-SHELL", "<shell command>"]. Runs inside the container. |
interval | duration | no | Time between checks. Default 10s. 1s–5m. |
timeout | duration | no | Per-check timeout. Default 3s. 1s–5m. |
retries | int | no | Failures before unhealthy. Default 3. 1–20. |
start_period | duration | no | Grace period before failures count. Default 0s. Up to 5m. |
A duration is a positive whole number followed by s or m, e.g. 10s,
5m; start_period also accepts 0s.
type: postgres
→ Database
| Field | Type | Required | Description |
|---|
version | string | no | PostgreSQL major version. Supported: "17". Default "17". |
version is the only field you set. image, ports, env, volumes, and
healthcheck are managed by the platform and not accepted on a postgres
service; storage comes from the deployment's storage budget.
Up to four postgres
services per app.
→ Start order
| Field | Type | Required | Description |
|---|
service | identifier | yes | Another service in this manifest. The dependency graph must be acyclic. |
condition | string | no | started (default) or healthy. healthy requires the target to have a healthcheck (managed databases have one built in). |
→ Volumes
| Field | Type | Required | Description |
|---|
type | string | yes | ephemeral or persistent. |
Storage comes from the deployment's storage budget; there is no
per-volume size.
→ Connection references
env values and build.args are plain strings, and may contain references
that are resolved when your app starts:
| Syntax | Meaning |
|---|
${service.<name>.<field>} | A connection detail of a postgres service in this manifest. Fields: url, host, port, user, password, database. |
$${ | Escapes a literal ${. |