Self-hosted service
cloudposse/atmos avatar
cloudposse/atmos

Atmos: a single runtime for Terraform, Helmfile, Kubernetes and containers

Atmos is the open-source runtime for infrastructure — it builds, authenticates, and ships Terraform, OpenTofu, Packer, Ansible, Kubernetes, Helm, and containers the same way on your laptop, in CI, and with AI agents.

1,378 stars175 forksGoApache-2.0

At a glance

What is it?
Cloud Posse's Atmos wraps Terraform, OpenTofu, Helmfile, Packer, Ansible and containers behind one Go CLI with built-in auth, secrets, vendoring, caching, a toolchain manager and workflows. It is a strong fit for platform teams already committed to stack-and-component configuration, and a poor fit for a single-module repository that just needs a wrapper script.
Who is it for?
Adopt Atmos if you already model infrastructure as stacks and components, run more than one tool, and want the same commands locally and in CI. Do not adopt it for a single Terraform root module, or if you cannot accept that your repository layout becomes Atmos's layout.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem Atmos targets: one command set across tools that do not share one

Terraform plans and applies. Helmfile renders releases. Packer builds images. Ansible configures hosts. Each has its own authentication story, its own version pinning, its own way of being invoked in CI, and its own drift detection, which usually means a wrapper script per tool plus a Makefile that calls them in some order. Atmos's stated goal is to collapse that into one runtime: the README describes it as the open-source runtime for infrastructure that builds, authenticates and ships Terraform, OpenTofu, Packer, Ansible, Kubernetes, Helm and containers the same way on a laptop, in CI and with AI agents. The intended audience is platform teams that manage many components across regions, environments and stages, and who currently maintain the glue themselves. Cloud Posse states it runs production infrastructure on AWS, Azure and GCP with Atmos, and the README says startups and enterprises managing thousands of components use it. Those are the vendor's claims, not measurements I can verify.

Stacks and components: the configuration model everything else hangs off

Atmos is not a wrapper that reads a directory of Terraform and runs it. It has its own configuration model. Infrastructure is described as stacks and components, and the README frames the pattern as pointing every environment at the same reusable root modules and treating the rest as configuration. The DRY configuration design is what lets one component definition serve every region, environment and stage without copy-paste. The consequence is that Atmos owns your repository layout, not the other way round. If your Terraform lives in a structure that predates Atmos, adopting it means reshaping that structure into components and stack manifests. The README also says custom component types plug into the same registry the built-ins use, so Packer, Ansible or an in-house tool type can be modelled alongside Terraform and Helmfile. That is the extension point to look at first: if your tool is not one of the built-ins and you cannot express it as a registered component type, Atmos will not orchestrate it for you.

What the runtime does before your tool ever starts

The README lists a set of concerns it treats as part of the runtime rather than plugins: auth, secrets, vendoring, caching, the toolchain, workflows, CI and AI. Concretely, the unified auth layer covers AWS, Azure and GCP with SSO, OIDC and federation, and the README states EKS and ECR login happen automatically and the same identity feeds Terraform, stores and emulators. Secrets are declared per environment and sourced from more than ten backends including 1Password, SSM, Vault and SOPS, with masking applied across every channel. Vendoring pulls dependencies just in time with version pinning and retries, which removes a separate vendor step. Caching is described as a native build cache plus a transparent Terraform provider and module registry mirror. The toolchain component auto-installs the Terraform, OpenTofu and Helmfile versions your stacks need and verifies them by checksum. None of these are optional extras in the sense of being bolted on by a third party; they are code paths inside the same binary that then invokes your tool. That is the architectural bet: authentication, secrets resolution and binary provisioning happen inside Atmos and the resulting environment is handed to Terraform or Helmfile.

Running it: commands and configuration keys the README names

The README points to a GitHub Codespaces badge for trying Atmos in a browser without installing anything, which is the lowest-commitment way to see the CLI behave. Beyond that, the material names the command surface rather than the exact invocations. It refers to running atmos to describe infrastructure (the demo GIF is captioned that way), to adding --ai to any command, and to wrapping any script as a first-class atmos command with flags, args and identity through custom commands. Configuration is documented under paths like atmos.tools/cli/configuration/auth, /secrets, /vendor, /ci/cache, /toolchain, /commands, plus atmos.tools/workflows and atmos.tools/components for the stack and component definitions. The README does not reproduce the YAML body of these configs in the excerpt available here, so treat the linked pages as the source of truth for exact keys rather than guessing at them. The one behavioural detail stated plainly is bounded concurrency: plan and apply run across every component in dependency order, with backends and providers generated for you.

Git awareness and the CI story

The claim that your laptop is the CI and CI is your laptop rests on one mechanism: Atmos is git-aware. The README states it detects what changed and plans or applies only the affected components, so CI does exactly the work that changed and nothing more. The CI documentation is described as covering affected-component detection, matrix emission and drift detection. This is the part worth pressure-testing before you rely on it, because affected-component detection depends on how your components map to paths and on how your pipeline consumes the emitted matrix. The README does not spell out the mapping rules or the matrix format in the excerpt here. If your monorepo has generated files, shared modules that many components reference, or path conventions that do not match the defaults, the detection logic is where a wrong assumption shows up as a skipped apply rather than an error.

Where Atmos is the wrong tool

The clearest failure mode is scale-down. If you have one Terraform root module and one environment, Atmos adds a configuration model, a component registry and a stack hierarchy in exchange for orchestration you do not need. The README's own framing is about sprawling infrastructure and thousands of components; a two-directory repository is not that. A second constraint is coupling. Because Atmos generates backends and providers and manages the toolchain, the versions of Terraform and OpenTofu you run are decided by stack configuration rather than by whatever is on the machine. Teams that deliberately pin tools through their own image build, or that run Terraform inside a controlled container with no network access to a registry mirror, will find the toolchain and caching layers working against their existing controls rather than with them. Third, the README describes a large surface: auth, secrets, vendoring, caching, toolchain, workflows, CI, AI, custom commands and YAML functions. That surface is the product, but it is also the amount of configuration you must understand before behaviour is predictable. Nothing in the supplied material indicates how much of it can be turned off, so assume the default posture is on.

Alternatives and the difference in approach

The nearest comparison is Terragrunt, which also wraps Terraform and OpenTofu to remove repetition across environments, but its configuration language is HCL and it stays inside the Terraform ecosystem. Atmos uses YAML stack and component configuration and explicitly reaches past Terraform to Helmfile, Kubernetes, Packer, Ansible, containers and emulators through one registry. If your world is Terraform only, Terragrunt's narrower scope is a smaller thing to learn. If you already run Helmfile next to Terraform and want one CLI and one auth path for both, that is where Atmos's breadth pays off and Terragrunt's does not. The other category is the orchestration layer you would otherwise write yourself: a Makefile plus a CI pipeline plus a secrets wrapper plus a version manager. Atmos is a bet that buying that as one Apache-2.0 Go binary is cheaper than maintaining it, and for a platform team with many components the arithmetic is plausible. For a team with one component, the Makefile wins on every axis.

Licence, releases and what maintenance looks like

Atmos is Apache-2.0, which permits commercial use, modification and redistribution provided the licence and notices are preserved, and it includes a patent grant. That is a permissive licence with no copyleft obligation on your own configuration or modules, though the usual caveat applies: this is a description of the licence text, not legal advice, and organisations with strict dependency policies should have counsel confirm how it interacts with their distribution model. On cadence, the release history shows a fast-moving project: v1.228.0 and a v1.229.0 release candidate both landed within days of each other in September 2026, alongside test builds. A version stream that dense means upgrades are frequent, and because Atmos controls the toolchain and generates backends and providers, an upgrade can change the Terraform version your stacks run, not just the CLI. Pin the Atmos version in CI and read the release notes for the versions you cross, rather than tracking the latest tag. The repository is not archived and the default branch is main.

Editorial conclusion

Adopt Atmos if you already model infrastructure as stacks and components, run more than one tool, and want the same commands locally and in CI. Do not adopt it for a single Terraform root module, or if you cannot accept that your repository layout becomes Atmos's layout. Before committing, verify three things against the version you install: that the component types you need exist in the registry, that your secrets backends are among the supported integrations, and that your CI provider can consume the affected-component output the way the docs describe.

Official sources

  1. cloudposse/atmos on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes