# atmos list dependencies

Use this command to visualize the dependency relationships between Atmos components across stacks. By default it renders a tree showing both directions for every component — what each component depends on, and what depends on it. Dependencies are read from both `dependencies.components` (preferred) and the legacy `settings.depends_on`, so the output stays consistent with [`atmos describe dependents`](/cli/commands/describe/dependents).

## Usage

Execute the `list dependencies` command like this:

```shell
atmos list dependencies
```

Focus on a single component in a stack by passing the component as a positional argument:

```shell
atmos list dependencies <component> --stack <stack>
```

:::tip
Run `atmos list dependencies --help` to see all the available options.
:::

## Examples

List dependencies for every component (tree, both directions):

```shell
atmos list dependencies
```

Limit to a single stack:

```shell
atmos list dependencies --stack plat-ue2-dev
```

Focus on a single component:

```shell
atmos list dependencies vpc --stack plat-ue2-dev
```

Show only one direction:

```shell
# What the component depends on (its prerequisites)
atmos list dependencies vpc --stack plat-ue2-dev --direction forward

# What depends on the component (its dependents)
atmos list dependencies vpc --stack plat-ue2-dev --direction reverse
```

Output as structured data:

```shell
# JSON
atmos list dependencies --format json

# YAML
atmos list dependencies --format yaml
```

## Tree Output

The default `tree` format keeps stack context next to the component dependency
tree. The `Component` column carries the hierarchy, while `Type` is secondary
metadata on the right. Repeated metadata is omitted on child rows unless the
stack or type changes.

```text
Dependencies
Stack         Component                 Type
plat-ue2-dev  app-config                terraform
              ├──depends on ↓
              │  ├──▶ dynamodb-table
              │  └──▶ kms-key
              └──required by ↑
                 └──(none)

plat-ue2-dev  kms-key                   terraform
              ├──depends on ↓
              │  └──(none)
              └──required by ↑
                 └──◀ app-config
```

The filled triangle marker shows edge direction:

- `▶` marks a forward dependency edge: the selected component depends on that child.
- `◀` marks a reverse dependency edge: that child depends on the selected component.

When you select a single direction with `--direction forward` or
`--direction reverse`, the dependency subtree is attached directly under each
component (no `depends on` / `required by` branch labels).

Circular dependencies are detected and marked with `(circular reference)` so the
tree always terminates instead of recursing forever — unlike the execution
dependency graph used by `terraform --affected`, this command tolerates cycles so
they can be inspected.

## Arguments

- **`component` (optional)**
  Limit the top-level entries to a single component. Combine with 
  `--stack`
   to target one specific component instance.

## Flags

- **`--direction` / `-d`**
  Dependency direction to show: 
  `both`
   (default), 
  `forward`
   (what the component depends on), or 
  `reverse`
   (what depends on the component).
  Environment variable: 
  `ATMOS_LIST_DIRECTION`
- **`--stack` / `-s`**
  Filter the top-level entries to a single stack. Cross-stack dependency edges are still resolved and displayed.
  Environment variable: 
  `ATMOS_STACK`
- **`--format` / `-f`**
  Output format: 
  `tree`
   (default), 
  `json`
  , or 
  `yaml`
  .
  Environment variable: 
  `ATMOS_LIST_FORMAT`
- **`--identity` / `-i` (optional)**
  Authenticate with a specific identity before listing dependencies.
  This is required when stack configurations use YAML template functions
  (e.g., 
  `!terraform.state`
  , 
  `!terraform.output`
  ) that require authentication.
  Environment variable: 
  `ATMOS_IDENTITY`
- **`--process-templates`**
  Enable/disable Go template processing in Atmos stack manifests (default 
  `true`
  ). Templates are processed so that cross-stack dependency references using templated stack names (e.g., 
  `stack: "ue1-{{ .vars.stage }}"`
  ) resolve correctly.
  Environment variable: 
  `ATMOS_PROCESS_TEMPLATES`
- **`--process-functions`**
  Enable/disable YAML functions processing in Atmos stack manifests (default 
  `true`
  ). YAML functions include 
  `!terraform.state`
  , 
  `!terraform.output`
  , 
  `!store`
  , 
  `!aws.*`
  , etc.
  Environment variable: 
  `ATMOS_PROCESS_FUNCTIONS`
- **`--skip`**
  Skip executing a specific YAML function when processing stacks. Repeat the flag to skip multiple functions (for example, 
  `--skip terraform.state --skip terraform.output`
  ).
  Environment variable: 
  `ATMOS_SKIP`

## Related Commands

- [`atmos describe dependents`](/cli/commands/describe/dependents) - Show the components that depend on a given component
- [`atmos list components`](/cli/commands/list/components) - List all components
- [`atmos list stacks`](/cli/commands/list/stacks) - List all stacks, optionally as a tree with import provenance
