Skip to main content
stack-spec.yaml is the desired-intent document for one StackKits workspace. Let the released CLI create the complete document, then change only the intent you understand.
The v0.16.0 CLI writes a canonical stackkit/v2alpha1 document and establishes local owner custody outside the StackSpec. Do not start from an old minimal example: fields, defaults, and constraints are owned by the CUE contracts embedded in the installed release.

Common fields to review

This is an excerpt, not a replacement for the complete generated document:

Select the released Files workload

The v0.16.0 Basement and Cloud Kit contracts expose files as an optional workload. This selection was validated and generated with the released CLI:
Merge the workloads object into the complete StackSpec produced by init. The home site and main node are the released Basement defaults; use identifiers already present in your generated document. Since v0.21.11, the placement block is optional. A workload selected without one receives the governed empty-placement defaults from the embedded CUE contracts, so programmatic StackSpec authors no longer need CLI-specific boilerplate.
Do not copy this selection for Photos or Vault and invent secret values. Those workloads require owner-bound secret custody. Since v0.21.11, run stackkit secrets materialize after selecting such a workload and before generate to establish that custody explicitly.

Validate every change

validate checks the current StackSpec, generate creates governed output, and plan inspects the exact resolved plan without invoking an executor. If any command fails, fix the StackSpec; do not patch files below deploy/. Continue with Review, apply, and verify.