What stays free, and why that line cannot move
The boundary between the free CLI and a future commercial platform was written down while the project had no revenue and nothing to gain from blurring it. A boundary decided under pressure is a boundary that moves.
Infrena the CLI is free and open source, forever. Everything a single operator or a CI runner needs to manage infrastructure is core, and stays core.
The commercial platform sells what an organisation needs: coordination between people, and history over time.
Free, in the CLI, forever
- Plan, apply, destroy, refresh, and the whole reconcile loop
- Local and S3 remote state, locking included
- Provider plugins, and the ability to write your own
- Discovery and import of infrastructure you already run
- Modules, environments, variables and the precedence rules
- Drift detection on demand
prevent_destroy, retain and require_approval
- Machine-readable NDJSON output
- Running anywhere you like, including your own CI
State locking is explicitly free, including on S3. A free backend that could not enforce it would ship a corrupted-state hazard under this project's name. The platform sells coordination among many operators, never the mutex itself.
Six pairs that share a name
Several platform features have a counterpart that already ships in the CLI. They are additions, not replacements, and every row's left column is free forever.
| In the CLI, free | What a platform would add |
refresh detects drift on demand | Continuous monitoring, and drift history over time |
prevent_destroy, retain, require_approval | Policy-as-code across many projects at once |
| Sensitive values redacted, never written to generated files | A managed secret store |
--output writes an NDJSON report of a run | Retained, queryable audit across an organisation |
plan and apply in your own GitHub Actions | Watching a repository and triggering runs itself |
| State locking per environment, including on S3 | Coordination among many concurrent operators |
Why this is not the Terraform story
Terraform was open source for a decade while Terraform Cloud was proprietary, and that arrangement was fine. What broke trust was changing the licence of the open tool itself, after people had built on the promise that it would not. Two things make that harder here, deliberately.
Apache 2.0 is irrevocable for anything published
A future licence change could only affect future releases. Every version that has ever shipped stays usable under the licence it shipped with, no matter what the project does later.
Moving a feature from free to paid is not allowed
Adding to the paid list is fine when the addition is genuinely new. Moving something the other way is not, and no commercial argument makes it so. If that ever seems necessary, the honest move is to say the promise is being broken, not to redefine the words.
Infrena also gives away more than Terraform did at the equivalent point. Remote state was the hook into Terraform Cloud; here S3 state, locking included, is free and always will be.
There is no platform code in the repository, no hooks for one, and no feature in the CLI shaped to leave room for one. The usual way open core goes wrong is not a dramatic relicensing. It is a slow accumulation of seams and stubs inside the free tool, until the free tool is shaped around a product its users cannot see. Anything in the repository that only makes sense if you know about a platform should be treated as a defect.