Skip to main content

Introducing Structured Component Dependencies

· 2 min read
Erik Osterman
Founder @ Cloud Posse

Atmos now supports a new dependencies.components format for declaring explicit component dependencies with support for cross-type dependencies, file/folder watching, and stack templates.

Declare component dependencies explicitly with the new structured format that supports cross-type dependencies, file/folder watching, and dynamic stack templates.

What Changed​

The new dependencies.components section provides a structured way to declare component dependencies:

components:
terraform:
app:
dependencies:
components:
- name: vpc
- name: rds
stack: "{{ .vars.tenant }}-{{ .vars.environment }}-prod"
files:
- configs/app.json

Key Features​

  • Cross-type dependencies: Terraform components can depend on Helmfile components using the kind field
  • File/folder watching: Trigger rebuilds when config files change with kind: file or kind: folder
  • Template support: Dynamic stack references with Go templates
  • Inheritance: Dependencies are replaced during stack inheritance by default, or appended when list_merge_strategy: append is configured

Cross-Type Dependencies​

The kind field allows you to declare dependencies on components of different types:

components:
terraform:
app:
dependencies:
components:
- name: vpc # terraform (default)
- name: nginx-ingress
kind: helmfile # helmfile component
stack: platform-stack

File and Folder Dependencies​

Track external files and folders that affect your component:

components:
terraform:
lambda:
dependencies:
components:
- name: vpc
files:
- configs/lambda-settings.json
folders:
- src/lambda/handler

Coming Soon​

In Q1 2026, we're adding automatic dependency detection from YAML functions. Dependencies will be inferred automatically from !terraform.output and !terraform.state usage—no manual configuration needed.

Get Started​

See the Component Dependencies documentation for complete details.