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/v1alphakind: Site # or Stackmetadata: name: my-app # ^[a-z][a-z0-9-]{0,62}$ workspace: acme # optional tags: [production, web]# ... spec fieldsTwo kinds
kind: Site— a single application. Requirestargets,sourceandruntime. This is what you’ll use most.kind: Stack— several related components deployed together, with optional shared services (database, cache, queue). Requires astackblock.
Validate locally
pdctl validate site.yml# or, against the published JSON Schema:npx ajv-cli validate -s manifest.schema.json -d site.ymlVersioning
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
- The complete field reference.
- Copy-paste examples.