# workflow

A workflow is one named object at `workflows.<name>` inside a [workflow manifest](/workflows). It owns workflow-level defaults and the ordered `steps` array Atmos runs for that workflow.

```yaml
workflows:
  deploy:
    description: Deploy infrastructure
    stack: tenant1-ue2-dev
    env:
      TF_LOG: INFO
    working_directory: !repo-root
    dependencies:
      tools:
        tflint: "^0.54.0"
    output: log
    show:
      header: true
      count: true
    steps:
      - name: plan
        command: terraform plan vpc
```

## Fields

- **`description`**
  Human-readable text shown by workflow listing and display surfaces.
- **`stack`**
  Workflow-level default stack for Atmos command steps. See 
  [stack](/workflows/stack)
  .
- **`env`**
  Workflow-level environment variables passed to steps. See 
  [env](/workflows/env)
  .
- **`working_directory`**
  Workflow-level working directory default. See 
  [working_directory](/workflows/working-directory)
  .
- **`dependencies`**
  Workflow-specific tool dependencies. See 
  [dependencies](/workflows/dependencies)
  .
- **`container`**
  Workflow-level container sandbox for eligible shell steps. See 
  [container](/workflows/container)
  .
- **`output`**
  Workflow-level default output mode for command steps. See 
  [output](/workflows/output)
  .
- **`show`**
  Workflow-level display defaults. See 
  [show](/workflows/show)
  .
- **`steps`**
  Ordered array of step objects. See 
  [steps](/workflows/steps)
  .

Workflow-level fields provide defaults. Step-level fields override them where the step supports the same field.

For workflow file discovery, naming, and when to choose workflows instead of custom commands, start with the [workflows](/workflows) page.
