Migration Guide
Migrating from Spacelift to InfraDots
Spacelift runs against state it manages or your own backend, and your code is plain Terraform, OpenTofu, or Terragrunt. Migrating is a per-stack cutover, not a rewrite.
Each Spacelift stack becomes an InfraDots workspace, and contexts map to variables. You keep your code and state and move one stack at a time.
What moves, and what you re-enter
Terraform / OpenTofu / Terragrunt code
Unchanged — same repo
Terraform state
Point InfraDots at your backend or import the latest version
Contexts (shared variables)
Map to InfraDots variables
Secrets
Re-enter — can’t be read back out of any platform
OPA policies
Re-implement as InfraDots guardrails; AI review covers much of plan-policy
✓ moves automatically · ↻ you re-enter or re-map once
The migration, step by step
Your code is plain Terraform/OpenTofu/Terragrunt and Spacelift runs against state it manages or your own backend. Migration is a per-stack cutover, not a rewrite.
- 1
Connect the same repo
Point InfraDots at the repository your Spacelift stacks already use. Your .tf / .hcl code is unchanged.
- 2
Map stacks to workspaces
Each Spacelift stack becomes an InfraDots workspace on the same tool and version. Spacelift contexts (shared variables) map to InfraDots variables at the workspace or org level.
- 3
Bring over state and secrets
Migrate each stack’s Terraform state — point InfraDots at your backend or import the latest version — and re-enter variables and secrets (sensitive values can’t be read back out of any platform).
- 4
Confirm with a no-op plan
Run a plan from InfraDots; with identical code and state it should show no changes — your proof of parity — before you apply and retire the Spacelift stack.
Cut over one stack at a time and keep Spacelift running until each is confirmed. Because your code stays plain Terraform/OpenTofu/Terragrunt, there’s no lock-in on either side.
Ready to move off Spacelift?
Start with one workspace — your code and state stay put, and you can run both in parallel until you’re sure.
Frequently asked questions
Do I keep my Terraform state?
Yes. Point InfraDots at the same backend or import each stack’s latest state version. A no-op plan after cutover confirms parity before you apply.
What happens to my stacks and contexts?
Each Spacelift stack becomes an InfraDots workspace on the same tool and version. Contexts (shared variables) map to InfraDots variables at the workspace or org level. Very complex stack-dependency graphs may need to be re-modeled — worth reviewing before you start.
Do my OPA policies come across automatically?
No — policy is re-implemented as InfraDots guardrails, and AI review on every plan covers much of what plan-time policies did. This is the one part of a Spacelift migration that’s hands-on rather than automatic.
Can I run both during the migration?
Yes. Cut over one stack at a time and keep Spacelift running until each is confirmed. Because your code stays plain Terraform/OpenTofu/Terragrunt, there’s no lock-in on either side.
Still deciding? See the full InfraDots vs. Spacelift comparison →
