Tags: Substrate · Modeling · Automation · Self-host Substrate: Atmos
The Atmos-substrate variant of the Terraform Cloud demo. Same scenario, same blueprint shape — only the trigger type and the IaC layout differ. The customer manages Terraform configuration with Atmos, not Terraform Cloud, so there is zero required SaaS dependency. This is the demo for Sam's OSS-first constraint.
The cattle blueprint is identical to the TFC variant — same entity types, the same
prod-clusters cell, the same runs_on relationship type, the same OnboardTenant action.
Only the Action's trigger changes:
| TFC variant | Atmos variant | |
|---|---|---|
| Where Terraform runs | Hosted on TFC | A customer-deployed Atmos runner |
| What hosts state | TFC | The customer's S3 (Atmos doesn't host state) |
| Action trigger type | terraform-cloud | atmos-workflow |
| What gets committed | A new tenant .tfvars.json | A new stacks/tenants/<id>.yaml manifest |
| SaaS dependency | TFC subscription required | None — fully self-hostable |
The atmos-workflow trigger HTTP-POSTs a dispatch payload to a customer-deployed runner (see
the Atmos reference runner). The runner clones your Atmos repo and
runs atmos workflow <name> -s <stack>. The runner runs Atmos; Terrantula never runs
atmos terraform apply itself.
The stacks/ and workflows/ directories in this example are sketches of what lives in a
real customer's Atmos repo. To wire the trigger end-to-end you also deploy the reference
runner once — see Reference runner: Atmos.
The Action's trigger points at your deployed runner:
You can also import an existing Atmos stacks directory into Terrantula as entities:
| File | What it is |
|---|---|
blueprint.yaml | The Terrantula schema — same shape as the TFC variant, with an atmos-workflow trigger. |
stacks/tenants/acme.yaml | A sketch of a per-tenant Atmos stack manifest. |
stacks/tenants/README.md | What stack files look like per tenant. |
workflows/provision-tenant.yaml | A sketch of the Atmos workflow the trigger invokes. |
atmos-workflow trigger.