Stackorder vs Scalr

In short

Both
Plan on pull requests, apply from a comment and order dependent work.
Scalr
A SaaS remote backend and run platform, on its runners or your agents, with OPA, a private registry and drift actions; priced per run.
Stackorder
Free and self-hosted; runs on your GitHub Actions runners, stores no state and holds no cloud credentials; GitHub and S3 only.

Scalr is a proprietary SaaS remote operations backend for Terraform and OpenTofu. By default it runs plans and applies on Scalr-maintained runners and stores state in its own encrypted bucket; self-hosted agents can run them in your network instead. It has OPA policy, a private module registry, scheduled drift detection and pull request dry runs built in, and it is priced per run.

Stackorder has no per-run pricing and no state bucket of its own: it is free under Apache-2.0, state stays in your S3 bucket, and GitHub Actions runs every plan and apply on your runners while a server you host, one container and Postgres, decides which stacks run and in what order.

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

Stackorder and Scalr 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 Scalr, not that it is missing.

FeatureStackorderScalr
LicenseApache-2.0, open source32Proprietary SaaS; its Terraform provider is MPL-2.0 and its GitHub Action MIT3, 4
DeploymentSelf-hosted; setup mode creates the GitHub App from a manifest25, 29SaaS only, at scalr.io on Google Cloud in the United States; agents can run jobs in your network5, 8
PricingFree and open source; you run the server32Per run. Free: 50 runs a month with unlimited users, SAML SSO and agents. Business: $0.99 a run. Enterprise: custom, from 20,000 runs a year1
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, 31—not verified
Where Terraform runsYour GitHub Actions runners, GitHub-hosted or self-hosted; it manages no runners or agents21Scalr's shared runners by default, or any number of self-hosted agents, each adding 5 concurrent runs1, 9
State backendBring your own S3; never takes or releases the state lock21Built in, in a Scalr-owned encrypted bucket; your own bucket through storage profiles on Enterprise; other backends with limits12, 13
ModulesNo registry; lists each module's consumers, and for git modules the version each pins and how far behind it is21Built-in private registry, published from VCS or OCI; a Modules report shows versions across workspaces and flags outdated ones16
Self-hosted footprintOne container of about 30 MB and Postgres; actions that use no Docker21SaaS control plane. Agent: at least 2 GB of memory and 1 CPU per run, 20 GB of disk, and outbound HTTPS to scalr.io10
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, 23Explicit run triggers between workspaces, up to 50 upstreams, also across federated environments; not inferred14, 15
Cloud credentialsNot held by the server; the runner assumes your IAM role with its own GitHub OIDC token24Held by default in encrypted provider configurations: keys, an IAM role, or per-run OIDC with Scalr as the identity provider; agents can keep them in your network8, 20
Human sign-inGitHub OAuth through the App, read:org scope only25SAML single sign-on, included on the free plan1
Git hostsGitHub only, by design21GitHub, GitHub Enterprise, GitLab, Azure DevOps, Bitbucket Cloud and Data Center; VCS agents for private networks7
OpenTofuYes, with tool: tofu; tested end to end with OpenTofu 1.1228, 30Yes, first-class, billed the same as Terraform6
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 daily or weekly per environment, with ignore, sync-state or revert actions; drift runs are not billed17
Policy checksNot a policy engine; run OPA, conftest, Checkov or Infracost in hooks, and stackorder check records a named check the apply gate honors27Built-in OPA before and after plan, with three enforcement levels; Checkov before plan18
Pull request workflowA check per stack, one sticky comment, and stackorder plan, apply and unlock comments; applies before merge by default, or on merge22A dry run on every pull request; /scalr plan and /scalr apply comments allow apply before merge; GitHub checks19

Key differences

A SaaS platform or a server you run

Scalr's control plane is SaaS only, on Google Cloud in the United States; only its agents can be self-hosted. Stackorder is open source and entirely self-hosted: one container and a Postgres database.

Where Terraform runs

Scalr runs plans and applies on its shared runners by default, or on self-hosted agents that poll scalr.io. Its optional GitHub Action installs the Scalr CLI and configures Scalr as the remote backend: in remote mode, the default, runs still execute in Scalr, and in local mode they run on the Actions runner while Scalr only stores state. Stackorder runs every plan and apply on your GitHub Actions runners.

State

Scalr is the remote backend by default, with state in a Scalr-owned encrypted bucket or, on Enterprise, in your own AWS, GCP or Azure bucket. Other backends work with limits, such as no state rollback in the UI. Stackorder never stores state: it stays in your S3 bucket, and Stackorder only links to it.

Dependencies

Scalr orders workspaces with explicit run triggers, up to 50 upstreams each: a successful upstream run starts a downstream run. Dependencies are declared by hand, not inferred. Stackorder infers edges from module sources and terraform_remote_state reads as well as depends_on, plans downstream stacks in the pull request, and applies in waves.

Credentials

By default Scalr stores cloud credentials in encrypted provider configurations, as access keys, a delegated IAM role, or OIDC with Scalr as the identity provider, which still gives the platform access for each run. Self-hosted agents can keep credentials in your network instead. The Stackorder server never has cloud access: each GitHub Actions job assumes your role with its own GitHub OIDC token.

Governance and pricing

Scalr has OPA policy with three enforcement levels, a private module registry and drift actions built in, and on 2026-09-30 its Free plan included 50 runs a month and its Business plan cost $0.99 a run, with plans and applies both billable. Stackorder is not a policy engine or a registry, never applies to fix drift, and is free under Apache-2.0.

Where Scalr is strong

  • A managed remote backend and run platform, with no control plane for you to run.5, 12
  • A free plan with 50 runs a month, unlimited users, SAML single sign-on, drift detection, policy and unlimited agents.1
  • Built-in OPA before and after plan, with hard-mandatory, soft-mandatory and advisory enforcement, plus Checkov.18
  • A private module registry and a report of module versions across every workspace.16
  • Scheduled drift detection with ignore, sync-state and revert actions; drift runs are not billed.17
  • GitHub, GitLab, Azure DevOps and Bitbucket, with VCS agents for servers on private networks.7
  • Self-hosted agents that keep credentials in your network, through an instance profile or a secret manager.8
  • OpenTofu as a first-class engine, billed the same as Terraform.6
  • State in your own AWS, GCP or Azure bucket through storage profiles on the Enterprise plan.12

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 Scalr when

  • You want a managed platform in the Terraform Cloud model, with a remote backend, built-in OPA and a private registry, priced per run, and no control plane to run.
  • Your code is on GitLab, Azure DevOps or Bitbucket, or on several Git hosts.
  • You want the tool to host state and modules. Stackorder stores neither.
  • You want more production use behind the tool than Stackorder has yet: its first release, v0.1.0, came out on .

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 Stackorder an alternative to Scalr?

For part of what Scalr does, on GitHub. Both plan on pull requests, apply from a comment and order dependent work. Stackorder is free, open source and self-hosted, runs Terraform on your GitHub Actions runners, and stores no state and no cloud credentials. It has no policy engine, module registry or drift actions.

Can Scalr be self-hosted?

Only its agents. Scalr's control plane is SaaS at scalr.io; the agent is a Docker image, Helm chart, or Fargate or Cloud Run deployment that needs outbound HTTPS to scalr.io. Stackorder is entirely self-hosted.

Does Scalr run Terraform on GitHub Actions?

Not by default. Scalr's GitHub Action installs the Scalr CLI and the Terraform or OpenTofu CLI on an Actions runner and configures Scalr as the remote backend. In remote mode, the default, the plan and apply run in Scalr; in local mode they run on the runner and Scalr only stores state.

How do their prices compare?

On 2026-09-30, Scalr's free plan included 50 runs a month and its Business plan cost $0.99 a run, with plans and applies both billable and drift runs free. Stackorder is free under the Apache License 2.0; you run one container and a Postgres database, and Terraform runs in your GitHub Actions jobs.

More comparisons