> ## Documentation Index
> Fetch the complete documentation index at: https://docs.slipway.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# slipway.yaml field index

> Every shipped field, one row each, with type and notes.

Quick-scan table of every field slipway parses today. For the rationale and examples, see the [slipway.yaml overview](/slipway-yaml/overview) and adjacent pages.

## Top level

| Path                  | Type   | Required | Notes                                                                                                                                                                                                  |
| --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `version`             | int    | yes      | Currently `1`.                                                                                                                                                                                         |
| `services`            | map    | yes      | Keys: `^[a-z][a-z0-9-]{0,30}$`.                                                                                                                                                                        |
| `volumes`             | map    | no       | Named volumes. Keys: `^[a-z][a-z0-9-]{0,30}$`. See [Named volumes](/slipway-yaml/volumes).                                                                                                             |
| `volumes.<name>.size` | string | no       | Provisioned capacity, e.g. `10Gi`, `10GB`, `1Ti`, or bare `10` (GB). Omitted → plan default. Frozen at first provision (grow-only). Per-volume max 1024 GB; the org-wide total is capped by your plan. |

## `services.<name>`

| Path                    | Type   | Required           | Notes                                                                                                                                                                                                            |
| ----------------------- | ------ | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `build`                 | object | one of build/image | Build from repo.                                                                                                                                                                                                 |
| `image`                 | string | one of build/image | Use prebuilt image.                                                                                                                                                                                              |
| `ports`                 | list   | no                 | Empty / omitted → worker service.                                                                                                                                                                                |
| `env`                   | map    | no                 | `${secret.*}`, `${var.*}`, `${service.*}` substitution.                                                                                                                                                          |
| `enabled`               | bool   | no                 | Defaults to `true`. Set `false` to keep the service in the spec but not build/deploy it (an existing workload is torn down on the next deploy).                                                                  |
| `volumes`               | list   | no                 | Named-volume mounts, `"<name>:<absolute-path>"`. The name must be declared in the top-level `volumes:`. A volume mounted by 2+ services is shared between them.                                                  |
| `command`               | list   | no                 | Override the image's CMD.                                                                                                                                                                                        |
| `args`                  | list   | no                 | Override the image's args.                                                                                                                                                                                       |
| `workdir`               | string | no                 | Override the image's WORKDIR. Must be absolute.                                                                                                                                                                  |
| `depends_on`            | list   | no                 | Sibling services that must be ready before this one starts (Compose `service_healthy`). Same-spec only; self-refs, disabled refs, and cycles are rejected. See [depends\_on](/slipway-yaml/services#depends-on). |
| `healthcheck.startup`   | probe  | no                 | See "Probes" below.                                                                                                                                                                                              |
| `healthcheck.readiness` | probe  | no                 | Gates cutover for public services.                                                                                                                                                                               |
| `healthcheck.liveness`  | probe  | no                 | Restarts unhealthy containers.                                                                                                                                                                                   |

CPU and memory caps come from your plan — see [Plans & pricing](/organization/plans) — and aren't fields in `slipway.yaml`. A volume's `size:` *is* a field, but the total storage budget across all your volumes is plan-controlled.

## `services.<name>.build`

| Path         | Type   | Required | Notes                                                                                |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------ |
| `context`    | string | yes      | Relative to repo root.                                                               |
| `dockerfile` | string | no       | Defaults to `Dockerfile`.                                                            |
| `args`       | map    | no       | Build args. Values support `${secret.*}` / `${var.*}` / `${service.*}` substitution. |

## `services.<name>.ports[]`

| Path     | Type   | Required | Notes                                                                       |
| -------- | ------ | -------- | --------------------------------------------------------------------------- |
| `port`   | int    | yes      | 1–65535.                                                                    |
| `public` | bool   | no       | Exposes the port publicly on the apps domain.                               |
| `prefix` | string | no       | Public hostname prefix. Defaults to service name. `^[a-z][a-z0-9-]{0,30}$`. |
| `domain` | string | no       | Verified custom parent zone. Must be claimed under **Settings → Domains**.  |

## Probes

A probe is `{ <handler>: {...}, <timing-fields...> }`. Exactly one handler.

| Handler | Fields               |
| ------- | -------------------- |
| `http`  | `{ path, port }`     |
| `tcp`   | `{ port }`           |
| `exec`  | `{ command: [...] }` |
| `grpc`  | `{ port, service? }` |

Timing fields (all optional, all Kubernetes-standard): `initialDelaySeconds`, `periodSeconds`, `timeoutSeconds`, `failureThreshold`, `successThreshold`.

## Substitution syntax

| Form                        | Resolves to                                                                                                                                                                                                    |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `${secret.NAME}`            | Secret. Env store first (when part of an environment), then org.                                                                                                                                               |
| `${secret.env.NAME}`        | Secret. Environment store only — strict. Resolves only when this deployment is part of an environment.                                                                                                         |
| `${secret.org.NAME}`        | Secret. Org store only — strict.                                                                                                                                                                               |
| `${var.NAME}`               | Variable. Env → org fallback (same as bare `${secret.NAME}`).                                                                                                                                                  |
| `${var.env.NAME}`           | Variable. Environment store only — strict.                                                                                                                                                                     |
| `${var.org.NAME}`           | Variable. Org store only — strict.                                                                                                                                                                             |
| `${service.<name>.<field>}` | Sibling service URL/host/port/public\_url. `<field>` is one of `url` / `host` / `port` / `public_url`. Resolves against any service in the same deployment — and, in an environment, any component's services. |
| `${NAME}`                   | **Deprecated.** Alias for `${secret.NAME}`. Warns at deploy time.                                                                                                                                              |

Names for `${secret.*}` and `${var.*}` match `^[A-Z][A-Z0-9_]*$`. `${service.*}` uses lowercase service slugs.

For `${service.*}`: use `url` for in-cluster sibling-to-sibling calls (bypasses the ingress and any preview auth); `public_url` is for external consumers (webhook callbacks, OAuth redirects). See [talking between services](/environments/overview#talking-between-services).
