Skip to content

Deploy YAML — overview

The deploy manifest is how you declare what to run. It uses a kubectl-style envelope and is validated against a strict JSON Schema — unknown fields are rejected (additionalProperties: false throughout), so typos fail fast.

Envelope

apiVersion: podmaker.sh/v1alpha
kind: Site # or Stack
metadata:
name: my-app # ^[a-z][a-z0-9-]{0,62}$
workspace: acme # optional
tags: [production, web]
# ... spec fields

Two kinds

  • kind: Site — a single application. Requires targets, source and runtime. This is what you’ll use most.
  • kind: Stack — several related components deployed together, with optional shared services (database, cache, queue). Requires a stack block.

Validate locally

Terminal window
pdctl validate site.yml
# or, against the published JSON Schema:
npx ajv-cli validate -s manifest.schema.json -d site.yml

Versioning

v1alpha is the first, breakable schema — every publish may change it. The CLI pins one shipped schema per release and refuses unknown fields. The stabilisation path is v1alpha → v1beta1 → v1; the CLI ships every released schema so you can upgrade apiVersion on your own schedule.

Next