root_run/user_run steps can rely on it.
Selecting stacks
List the stacks your build needs underbuild.stacks:
build.stacks is a whole-value selection: the highest config layer that sets it
wins, so a project can replace the list a user-level config provides. Each entry
is a component name — bare for a built-in or loose stack, or a qualified
namespace.bundle.component address for a bundled stack:
Where stacks come from
A stack name resolves across the same three tiers as every component. A bare name resolves in precedence order — your user convention directory, then the project convention directory, then the built-in floor — stopping at the first match. A qualified name resolves from an installed bundle. See where components come from for the canonical resolution model.Built-in stacks
Clawker shipsnode, go, python, rust, java, ruby, cpp, and
dotnet. They resolve by bare name with
no declaration beyond listing them in build.stacks, and update with the
clawker binary.
Loose local stacks
Drop a stack directory into a convention directory and it exists immediately — no install, no manifest wrapper, bare-named:clawker stack list. This is how you customize a built-in stack: copy its source into a
convention directory and edit it there.
Bundled stacks
A stack shipped in a bundle is addressed by its qualified name (namespace.bundle.component) and becomes available once the bundle is
declared and installed. See Bundles.
Authoring a stack
Writing your own stack — thestack.yaml manifest and the Dockerfile fragments
that accompany it — is covered in Authoring stacks.