Skip to main content

Stack Name Identity and Zero-Config Defaults

· 2 min read
Erik Osterman
Founder @ Cloud Posse

Atmos now enforces a single canonical identity per stack and supports zero-config stack naming using filenames. These changes make Atmos easier for newcomers while providing explicit control for advanced users.

What Changed

Single Identity Rule

Each stack now has exactly ONE valid identifier based on this precedence:

  1. name (highest) - Explicit name from stack manifest
  2. name_template - Go template from atmos.yaml
  3. name_pattern - Token pattern from atmos.yaml
  4. Filename (lowest) - Basename of the stack file

Previously, a stack might respond to multiple identifiers (e.g., both the filename and a generated name). Now, only the highest-priority identifier is valid.

Zero-Config Stack Naming

When no name, name_template, or name_pattern is configured, stacks are identified by their filename. This enables newcomers to start using Atmos immediately without any naming configuration.

Why This Matters

For Newcomers

Getting started with Atmos is now simpler. Create a stack file and reference it by filename:

# stacks/prod.yaml
components:
terraform:
vpc:
vars:
cidr: "10.0.0.0/16"
# Just works - no naming configuration required
atmos terraform plan vpc -s prod

For Advanced Users

The single identity rule prevents confusion. If you have:

# stacks/legacy-prod.yaml
name: "my-legacy-prod-stack"

Only atmos terraform plan vpc -s my-legacy-prod-stack works. Using -s legacy-prod correctly returns an error because that's not the canonical name.

Migration Notes

If you were using both the filename and a generated name to reference the same stack, you must now use only the canonical name. Check which identifier has highest precedence:

  • Stack has name field? Use that name.
  • name_template or name_pattern configured? Use the generated name.
  • Neither? Use the filename.