Skip to main content

Metrics

Atmos can print a one-line resource-usage summary — elapsed time, CPU time, and peak memory of the largest process — after terraform plan/apply/deploy complete, plus a final aggregate summary covering every subprocess spawned during the whole invocation. The settings.metrics section controls whether that local display is shown. The same numbers also appear in the GitHub Actions job summary when Native CI is active, independent of this setting.

You will learn

  • Shown by default after terraform plan, apply, and deploy
  • A final aggregate line summarizes every subprocess spawned during the whole run (e.g. every component plan in a multi-component --affected run)
  • Disable the local display with a single setting
  • Also appears in the Native CI job summary — a quick way to see what a component actually costs before sizing a runner
  • Never affects the separate Atmos Pro command-execution metadata upload

Configuration

atmos.yaml
settings:
metrics:
# Show the local per-command / final-summary resource-usage display. Defaults to true.
enabled: true

To disable the local display:

atmos.yaml
settings:
metrics:
enabled: false

Configuration Reference

settings.metrics.enabled

Controls whether the local resource-usage summary (elapsed time, CPU time, peak memory) is printed after terraform plan/apply/deploy, and whether the final aggregate summary is printed at the end of the whole atmos invocation. This setting only controls local display — it never gates or affects the separate Atmos Pro command-execution metadata upload, which is controlled by CI detection and Atmos Pro configuration (see Atmos Pro settings).

"Peak memory" here means the largest single process's peak RSS observed during the run (Terraform, OpenTofu, or a provider plugin) — not a simultaneous sum across every concurrently running process. See the note below for what that means when sizing a runner.

  • Type: boolean
  • Default: true
NOTE:

The per-command display only appears for terraform plan, apply, and deploy — the same commands that synchronously report execution metadata to Atmos Pro when it's configured. Commands with no subprocess (e.g. describe affected) don't show a per-command line, and don't trigger the final aggregate summary either — that line only appears when at least one subprocess ran during the invocation (Terraform/OpenTofu, Helmfile, Packer, or a workflow step), and covers Atmos's own usage together with every one of those subprocess runs.

NOTE:

Peak memory is a lower bound, not an exact whole-job figure. The underlying measurement (ru_maxrss) reports the peak RSS of the single largest process observed in the run, not a simultaneous sum across every concurrently running process. If terraform and two provider plugins each peak at 200 MB at the same moment, this reports roughly 200 MB, not 600 MB. Use it to catch obviously undersized runners, but don't treat it as the exact ceiling a runner needs.

Native CI Job Summaries

When Native CI is active, terraform plan and apply also render a Resource usage line in the GitHub Actions job summary — the same wall-time, CPU-time, and peak-memory figures as the local display, formatted identically:

📊 Resource usage: 45.2s wall · 12.3s user / 4.1s sys CPU · 512.0 MB peak memory (largest process)

This is controlled by CI detection, not by settings.metrics.enabled — it appears whenever the job summary itself is generated, so it's visible directly in the GitHub Actions run UI without opening a log. It's the fastest way to see what a component actually costs when sizing a runner tier or a self-hosted pool.

Use Cases

Disable for Scripted/CI Output

Teams that parse atmos terraform output in scripts, or want minimal CI logs, can turn off the local display entirely:

atmos.yaml
settings:
metrics:
enabled: false

See Also

  • Settings — Overview of all settings
  • Atmos Pro — Command-execution metadata upload (separate from this local display)