Get from zero to a fleet view in under five minutes. No signup. No server. No Docker.
This is the first-five-minutes path: point Terrantula at an existing Terraform state, then open a local dashboard to see your fleet as a graph. Everything runs on your machine; nothing leaves your workstation.
Want the deeper, end-to-end build? Do this page first, then continue to the Advanced tutorial — a multi-stack greenfield onboarding where a single Action cascade opens the right pull requests in the right order.
#!/usr/bin/env bun, so Bun must be on your PATH..tfstate file. If you don't have one handy, use the synthetic 50-resource AWS fixture and its config at examples/m1-timing/ in the repo (terraform.tfstate + terrantula.yaml).Or with npm:
Verify:
terrantula import terraform needs a YAML mapping config that says how Terraform resource types become Terrantula entity types. The --config flag takes a path to that file (not a named preset).
The fastest way to start is to extends one of the bundled starters and override only what you need:
The bundled starters cover the common provider shapes:
| Starter id | Best for |
|---|---|
terrantula/starters/aws-multi-account | Multi-account AWS fleets — EKS, VPCs, IAM, RDS, S3 |
terrantula/starters/kubernetes-inventory | EKS clusters, namespaces, deployments |
terrantula/starters/multi-tenant-cells | Multi-cell SaaS fleet architectures |
You can also write the mappings yourself instead of extending a starter — map each Terraform resource type to an entity type, name template, and optional properties/labels:
A complete, runnable example lives at examples/m1-timing/terrantula.yaml.
Point the CLI at your .tfstate file and your config:
Example output:
Add --dry-run (alias --plan) to preview the changes without writing anything:
--state also accepts s3://bucket/key and tfc://org/workspace URIs, and can be repeated to merge several state files into one project. See the CLI reference → Common Flows for the S3, Terraform Cloud, and multi-state variants.
If your fleet is managed with Atmos instead of plain Terraform state files, import the stacks directory directly. import-atmos takes the stacks directory as a positional argument, plus the entity type to map stacks to and a name template built from each stack's vars:
Add --recursive for nested Atmos layouts, or --plan to preview without writing.
Output:
By default the dashboard binds to a random free port and opens your browser automatically. Pass --port <n> to pin a port, or --no-open to just print the URL (handy over SSH). You'll see the entity browser showing the fleet you just imported.
The dashboard runs entirely on your machine. No data leaves your workstation. The local database lives at:
~/Library/Application Support/terrantula/local.db~/.local/share/terrantula/local.dbThe view is a read-only projection of what Terrantula derived from your Terraform state — it never writes back to your infrastructure. The entity browser shows:
terrantula import terraform is idempotent. Run it again to pick up changes:
Existing entities are updated with new attributes; new resources are added; removed resources are left in place by default. To also remove entities that no longer appear in the state, add --replace (preview it with --dry-run first).
You don't need the dashboard to query your fleet:
The local dashboard is great for exploration. When you're ready to share fleet visibility with your team, point the CLI at a Terrantula server:
Credentials are saved to ~/.config/terrantula/config.json (permissions 600). All subsequent commands run against the remote project instead of the local database. You can also drive the CLI from TERRANTULA_BASE_URL / TERRANTULA_TOKEN env vars in CI.
The on-ramp is designed to complete in under five minutes on a cold machine. Measured on a MacBook:
| Step | Typical time |
|---|---|
| Import (50 resources, 5 entity types) | ~250ms |
| Dashboard server boot | ~150ms |
| Total (excluding install) | < 1s |
Install time is 30–90 seconds (bun install -g @terrantula/cli) on first run.
--replace.