Skip to main content
Every field the spec accepts, one row each. The decoder is strict: an unknown key fails the parse with its line number rather than being ignored.

Top level

buildFilter

At least one of the two must be non-empty. Patterns are doublestar globs, so ** crosses directories, and are relative to the repository root even when a service sets rootDir.

previews

databases[]

services[]

Identity

Source

A service declares image: or the build fields, never both.

Networking

prefix and domain sit on the service, never inside a port entry. auth: Both default to false, which leaves the service open. See Access controls. ipRules entries: No ipRules: block allows every IP; an empty list blocks everything. At most 50 entries per service. See Inbound IP rules. edgeCache turns on response caching at the platform edge for the service’s public URL: static caches asset-shaped paths only, all caches every cacheable response. See Edge caching.

Configuration

Health

A probe declares exactly one of: Plus optional periodSeconds, timeoutSeconds, failureThreshold, successThreshold and initialDelaySeconds, all non-negative.

Compute

scaling: autoResize:

Storage

One disk per service, and no two services share one. Rejected on cron and static.

Previews

Rejected on cron and static. Per-service preview env set in the console (the service’s Previews tab) merges over previews.env, console winning per key.

Static sites

redirects[]: headers[]:

Substitution

Valid in env and buildArgs only. ${service.NAME.FIELD} accepts url, host, port, public_url, external_url, pooled_url, user, password, database, bucket, endpoint, access_key_id and secret_access_key. See Secrets and variables and Service to service.

Platform environment variables

Set on every workload without being declared.

Rejected fields

These fail the parse with a message naming the replacement. A services: map keyed by service name is also rejected, with a message pointing at the list form.