Stackorder vs Stategraph (formerly Terrateam)

In short

Both
Run Terraform on your own CI runners, dispatched by a server that holds no cloud credentials.
Stategraph
MPL-2.0; GitHub and GitLab, your existing state backend, policy checks built in, and a hosted service or self-hosted editions.
Stackorder
Apache-2.0; GitHub and S3 only, actions with no Docker, and a graph that includes modules and cross-repository edges.

Terrateam is now Stategraph Orchestration, one of the two parts of the Stategraph platform: terrateam.io redirects to stategraph.com, and the terrateamio/terrateam repository moved to stategraph/stategraph. It shares Stackorder's execution model. Plans and applies run on your own CI runners, so cloud credentials stay there, and the server only dispatches them.

Stackorder's design describes it as Terrateam's execution model with a smaller server, no Docker on the runner side, and dependencies between stacks, modules and repositories as the server's core data structure. In practice the tools differ most in Git hosts, licensing and editions, built-in policy, and how they order dependent work.

Last reviewed . Every Stategraph cell below was checked against Stategraph's own repository, documentation or pricing page, and its number links to that source.

Stackorder and Stategraph side by side

Numbers link to the sources at the end of the page. Prices are as published on . A dash means we have not verified that fact for Stategraph, not that it is missing.

FeatureStackorderStategraph
LicenseApache-2.0, open source32MPL-2.0; Enterprise features need a commercial license2, 3
DeploymentSelf-hosted; setup mode creates the GitHub App from a manifest25, 29Stategraph Cloud (SaaS), self-hosted (open source or Enterprise), or in your own AWS, GCP or Azure account6
PricingFree and open source; you run the server32Cloud Free: 3 users, 50 runs a month, 1 worker. Pro: $12,000 a year with unlimited users, runs and workers. Self-hosted open source: $0, up to 3 active users a month per installation7
Maturityv0.1.0, first released 2026-09-30; tested end to end against LocalStack, not yet against real AWS or a real GitHub organization by default30, 31The vendor reports daily releases and more than 20,000 automated tests per change1
Where Terraform runsYour GitHub Actions runners, GitHub-hosted or self-hosted; it manages no runners or agents21Your GitHub Actions or GitLab CI runners; the server dispatches workflows and does not run Terraform10
State backendBring your own S3; never takes or releases the state lock21Your existing backend; Stategraph's database-backed state is a separate commercial product. Plan files stay in the server's database by default2, 12
ModulesNo registry; lists each module's consumers, and for git modules the version each pins and how far behind it is21No registry; a module-aware indexer, off by default, plans the directories that use a changed local module16
Self-hosted footprintOne container of about 30 MB and Postgres; actions that use no Docker21Server and PostgreSQL behind a public HTTPS URL; a GitHub Action that runs as a Docker container9, 11
Cross-stack dependenciesA graph of stacks and modules from depends_on, module sources and terraform_remote_state reads, including cross-repository edges; applies in waves22, 23Layered runs: depends_on between directories in one repository, optionally on specific outputs14, 15
Cloud credentialsNot held by the server; the runner assumes your IAM role with its own GitHub OIDC token24Not held by the server; the runner uses OIDC or secrets stored in GitHub or GitLab13
Human sign-inGitHub OAuth through the App, read:org scope only25—not verified
Git hostsGitHub only, by design21GitHub, including GitHub Enterprise Server, and GitLab10
OpenTofuYes, with tool: tofu; tested end to end with OpenTofu 1.1228, 30Yes, with engine: tofu; also Terragrunt, CDKTF and Pulumi19
Drift detectionScheduled per stack with drift.schedule; with open_issue, one GitHub issue per drifted stack, closed when the drift is gone; never applies to fix drift26Scheduled hourly to monthly, off by default; can open an issue or apply fixes with reconcile; one schedule in the open-source edition17
Policy checksNot a policy engine; run OPA, conftest, Checkov or Infracost in hooks, and stackorder check records a named check the apply gate honors27OPA/Rego, Conftest and Checkov on every plan in every edition; Gatekeeper approval gates in Stategraph Cloud and self-hosted Enterprise6
Pull request workflowA check per stack, one sticky comment, and stackorder plan, apply and unlock comments; applies before merge by default, or on merge22Autoplan on each push, against the merge with the destination branch; a stategraph apply comment applies the reviewed plan; applies before merge by default, or on merge18

Key differences

Git hosts

Stategraph Orchestration runs on GitHub, including GitHub Enterprise Server, and on GitLab, with GitHub Actions or GitLab CI runners. Stackorder is GitHub only, by design.

Footprint on the runner

On GitHub, Stategraph dispatches a workflow that uses terrateamio/action, a Docker container action, so the runner must support Docker container actions. Stackorder's actions use no Docker: a JavaScript setup action and composite actions that call one Go binary.

Dependencies

Stategraph orders work with layered runs: a directory's depends_on names the directories that must apply first, within one repository, and a layer can depend on a specific output of another and be skipped when that output did not change. Stackorder builds a graph from depends_on, module sources and terraform_remote_state reads, plans downstream stacks in the pull request, and applies the affected stacks in waves. Its cross-repository edges can trigger plan-only runs downstream.

Modules

Stategraph's module-aware indexer is off by default; when enabled, a change to a local module triggers the directories that use it. Stackorder parses module sources into its graph, so a change to a local module plans every stack that uses it, and it lists the consumers of each git module with the version they pin.

License and editions

Stategraph Orchestration is MPL-2.0. Its self-hosted open-source build allows up to 3 active users a month per GitHub or GitLab installation, and leaves out RBAC, CODEOWNERS enforcement, Gatekeeper approval gates, API tokens and more than one drift schedule, which every Stategraph Cloud plan, Free included, and self-hosted Enterprise have. Stackorder is open source under Apache-2.0.

State, policy and drift

Stategraph works with your existing state backend, runs OPA/Rego, Conftest and Checkov on every plan, and can apply fixes for drift with reconcile. Stackorder supports S3 only, is not a policy engine (you run those tools in a hook and stackorder check records the verdict), and never applies to fix drift.

Where Stategraph is strong

  • An apply runs the exact reviewed plan, and aborts every directory if any plan is stale or superseded.18
  • Plans run on the merge of the pull request branch with the current destination branch, not on the branch alone.18
  • One tag-query language scopes workflows, access control, apply requirements, drift schedules and comment commands, and directory keys accept globs.6
  • Output-aware layered runs skip dependents when an upstream apply changed no output they read.15
  • An open-source core that self-hosts without a license key, with cloud credentials on your CI runners in every edition.8
  • GitHub and GitLab, with Terraform, OpenTofu, Terragrunt, CDKTF and Pulumi.10, 19
  • OPA/Rego, Conftest and Checkov policy checks on every plan, in every edition.6
  • A hosted free plan, a bring-your-own-cloud option, and pricing with no per-seat or per-run fees.6, 7
  • The vendor reports daily releases and more than 20,000 automated tests per change.1

When to choose which

Choose Stackorder when

  • Your code is on GitHub and you want Terraform or OpenTofu to run on your own GitHub Actions runners, under AWS roles the runner assumes with its own GitHub OIDC token.
  • You have many stacks that depend on each other or on shared modules, and you want a change planned everywhere it lands and applied in dependency waves.
  • You want a small open-source server you host yourself, which holds no cloud credentials and no state, and whose outage pauses applies but not pull request plans.

Choose Stategraph when

  • Your code is on GitLab, or you want one tool across GitHub and GitLab.
  • Your state is in a backend other than S3. Stackorder supports S3 only.
  • You use Terragrunt, CDKTF or Pulumi, or want OPA, Conftest and Checkov checks with approval gates built in.
  • You want a hosted service or a deployment in your own cloud account rather than a server you run yourself.
  • You want more production use behind the tool than Stackorder has yet: its first release, v0.1.0, came out on .

Moving from Terrateam

The Stackorder documentation maps Terrateam configuration to Stackorder's, including stack instances for directories deployed once per environment. Each repository then needs a root stackorder.yaml and the two Stackorder workflow files; every directory with a backend "s3" block that matches stacks.discover becomes a stack.

Try Stackorder on your own repositories

Free and open source under the Apache License 2.0. The getting started guide takes one repository from nothing to a first stackorder apply; the local demo runs on one machine with no GitHub App and no AWS account.

Frequently asked questions

Is Terrateam now Stategraph?

Yes. Terrateam is now Stategraph Orchestration, part of the Stategraph platform. terrateam.io redirects to stategraph.com, the repository moved from terrateamio/terrateam to stategraph/stategraph, and the configuration file is now .stategraph/config.yml; .terrateam/config.yml is still read when the new file is missing.

Is Stackorder an alternative to Terrateam?

Yes, for teams on GitHub that keep state in S3. Both run Terraform on your own CI runners and keep cloud credentials off the server. If you are on GitLab, keep state in another backend, or use Terragrunt, CDKTF or Pulumi, Stategraph Orchestration, formerly Terrateam, supports that and Stackorder does not.

How is Stackorder different from Terrateam?

Both run Terraform on your own CI runners and keep cloud credentials off the server. Stackorder is GitHub only and S3 only, its actions use no Docker, and its dependency graph covers stacks, modules and cross-repository edges. Stategraph Orchestration also runs on GitLab, works with other state backends, supports Terragrunt, CDKTF and Pulumi, and has policy checks built in.

Is Stategraph, formerly Terrateam, open source?

Stategraph Orchestration is open source under MPL-2.0. Its self-hosted open-source build allows up to 3 active users a month per GitHub or GitLab installation and blocks plans and applies past that. The self-hosted Enterprise edition has no user limit; Stategraph Cloud's limits depend on the plan (Free allows 3 users and 50 runs a month, Pro is unlimited), per the pricing page and the editions page. Stackorder is open source under the Apache License 2.0.

Do both discover stacks by default?

Stategraph needs no configuration file: by default, any directory whose .tf or .tfvars files change is planned. Stackorder needs a root stackorder.yaml (at minimum version: 1) and its two workflow files in each repository; after that, discovery is on by default and every directory with a backend "s3" block is a stack.

Can I migrate from Terrateam to Stackorder?

The Stackorder documentation has a table that maps Terrateam configuration to Stackorder stack instances.

Does Stackorder support backends other than S3?

No. Stackorder supports the S3 backend only; stack discovery looks for backend "s3" blocks.

More comparisons