{"id":50144520,"url":"https://github.com/lmarqs/terraform-ui","last_synced_at":"2026-05-24T03:08:06.298Z","repository":{"id":356630691,"uuid":"1233399573","full_name":"lmarqs/terraform-ui","owner":"lmarqs","description":"Make terraform even better!","archived":false,"fork":false,"pushed_at":"2026-05-24T01:46:14.000Z","size":11493,"stargazers_count":4,"open_issues_count":4,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-24T02:21:03.687Z","etag":null,"topics":["cli","iac","iac-terraform","terraform","tui"],"latest_commit_sha":null,"homepage":"https://lmarqs.github.io/terraform-ui/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lmarqs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-08T23:18:31.000Z","updated_at":"2026-05-24T01:46:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lmarqs/terraform-ui","commit_stats":null,"previous_names":["lmarqs/terraform-ui"],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/lmarqs/terraform-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmarqs%2Fterraform-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmarqs%2Fterraform-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmarqs%2Fterraform-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmarqs%2Fterraform-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmarqs","download_url":"https://codeload.github.com/lmarqs/terraform-ui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmarqs%2Fterraform-ui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33419583,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"online","status_checked_at":"2026-05-24T02:00:06.296Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","iac","iac-terraform","terraform","tui"],"created_at":"2026-05-24T03:08:03.720Z","updated_at":"2026-05-24T03:08:06.292Z","avatar_url":"https://github.com/lmarqs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# terraform-ui\n\nA k9s-style interactive terminal UI for Terraform. Plan, analyze risk, inspect blast radius, and apply — all from a keyboard-driven TUI.\n\n**Type:** Go CLI + interactive TUI (BubbleTea)\n**Invocation:** `tfui` (TUI), `tfui plan`, `tfui apply` (non-interactive)\n**Input:** Terraform root module or monorepo with `tfui.hcl`\n**Dependencies:** Go 1.25+, terraform (or tofu/terragrunt)\n\n## What It Looks Like\n\n```\n┌─────────────────────────────────────────────────────────┐\n│  terraform-ui                        workspace: default │\n├─────────────────────────────────────────────────────────┤\n│                                                         │\n│   [p] Plan          [R] Risk Analysis                   │\n│   [s] State         [P] Phantom Changes                 │\n│   [w] Workspaces    [B] Blast Radius                    │\n│   [v] Validate      [o] Outputs                         │\n│   [i] Init          [~] Console                         │\n│   [C] Context                                           │\n│                                                         │\n├─────────────────────────────────────────────────────────┤\n│  q quit  / filter  : command                            │\n└─────────────────────────────────────────────────────────┘\n```\n\n## Why\n\nRunning `terraform plan` on large modules produces verbose output with no structure. Reviewing state, managing workspaces, and assessing risk requires switching between multiple commands. terraform-ui wraps all of this into a single interactive terminal — navigate changes as a tree, see risk badges inline, pin resources for targeted operations, and apply without leaving the TUI.\n\n## Quick Start\n\n```bash\n# Install\nbrew install lmarqs/tap/tfui\n\n# Or via go install\ngo install github.com/lmarqs/terraform-ui/cmd/tfui@latest\n\n# Or via mise\n```toml\n[tools]\n\"github:lmarqs/terraform-ui\" = { version = \"\u003cversion\u003e\", exe = \"tfui\" }\n```\n\n# Launch interactive TUI\ncd my-terraform-project\ntfui\n\n# Or use non-interactive mode\ntfui plan --project ./infra\ntfui apply --project ./infra\n```\n\n## Install\n\n### Homebrew (recommended)\n\n```bash\nbrew install lmarqs/tap/tfui\n```\n\n### Go install\n\n```bash\ngo install github.com/lmarqs/terraform-ui/cmd/tfui@latest\n```\n\n### Binary download\n\nDownload the latest release from [GitHub Releases](https://github.com/lmarqs/terraform-ui/releases). Extract the binary and place it on your `PATH`.\n\n```bash\n# Example: Linux amd64\ncurl -sL https://github.com/lmarqs/terraform-ui/releases/latest/download/tfui_linux_amd64.tar.gz | tar xz\nsudo mv tfui /usr/local/bin/\n```\n\n### mise\n\nAdd to your project's `mise.toml`:\n\n```toml\n[tools]\n\"github:lmarqs/terraform-ui\" = { version = \"latest\", exe = \"tfui\", extract_all = \"true\", bin_path = \"bin\" }\n```\n\nThen run:\n\n```bash\nmise install\n```\n\nTo pin a specific version, replace `\"latest\"` with a version number (e.g. `\"1.4.0\"`). The latest version is in the [`VERSION`](VERSION) file and on the [releases page](https://github.com/lmarqs/terraform-ui/releases).\n\n## Features\n\n- **Interactive Plan Review** — Navigate changes as a tree, expand attribute diffs, see risk badges\n- **Risk Analysis** — Automatic classification of changes as critical/high/medium/low\n- **Blast Radius** — Visualize affected modules and resource dependencies\n- **Phantom Change Detection** — Identify no-op changes that terraform incorrectly reports\n- **Live Apply** — Per-resource progress tracking with real-time status\n- **State Browser** — Navigate, inspect, taint, untaint, move, and remove state resources\n- **Workspace Management** — List, switch, create, and delete workspaces\n- **Monorepo Support** — Discover and select chdir members via `tfui.hcl`\n- **Pin \u0026 Target** — Pin resources with `Space`, then plan/apply only those targets\n- **Non-Interactive Mode** — `tfui plan` and `tfui apply` for CI pipelines and scripts\n\n## Usage\n\n### Interactive TUI (default)\n\n```bash\ntfui                           # TUI in current directory\ntfui --project ./infra         # TUI scoped to project directory\ntfui --plan ./tfplan.out       # TUI with pre-computed plan\ntfui --state ./terraform.tfstate  # TUI with pre-loaded state\n```\n\n### Non-Interactive CLI\n\n```bash\n# Plan with tree view on stdout\ntfui plan\ntfui plan -target=aws_instance.web\ntfui plan -json                     # NDJSON (terraform-compatible)\ntfui plan --ci                      # suppress spinner for CI\n\n# Apply\ntfui apply tfplan.out\ntfui apply --ci\n\n# State operations\ntfui state rm aws_instance.old\ntfui state mv aws_instance.old aws_instance.new\ntfui state import aws_instance.web i-1234567890\n\n# Workspaces\ntfui workspace list\ntfui workspace select production\ntfui workspace new staging\n```\n\nExit codes: `0` success, `1` error, `2` changes present (plan).\n\n### Navigation\n\n| Key | Action |\n|-----|--------|\n| `p` | Plan |\n| `a` | Apply |\n| `s` | State browser |\n| `w` | Workspaces |\n| `o` | Outputs |\n| `v` | Validate |\n| `R` | Risk analysis |\n| `P` | Phantom changes |\n| `B` | Blast radius |\n| `C` | Context (chdir/workspace) |\n| `/` | Filter |\n| `:` | Command mode |\n| `q` | Quit / back |\n| `Space` | Pin (target for plan/apply) |\n| `Enter` | Inspect / expand |\n\n## Configuration\n\nCreate an optional `tfui.hcl` in your project root for monorepo support:\n\n```hcl\nterraform {\n  bin = \"terraform\"\n}\n\nmember \"modules/vpc\" {}\nmember \"modules/ecs\" {}\nmember \"environments/prod\" {}\n\ndefaults {\n  parallelism = 10\n  var_file \"common/tags.tfvars\" {}\n}\n```\n\nTwo modes:\n- **Standalone** (no config): TUI skin over terraform, CWD = working dir\n- **Project** (`tfui.hcl` present): full config resolution, member directories, workspace overrides\n\nSee [docs/guides/configuration.md](docs/guides/configuration.md) for all options.\n\n## Requirements\n\n- Go 1.25+ (for building from source)\n- terraform, tofu, or terragrunt on `PATH`\n\n## Development\n\n```bash\nmise install              # Install tools (go, golangci-lint, terraform, node, ruby, python)\nmise run setup            # Bootstrap all dependencies (one command)\nmise run dev              # Run TUI in development mode\nmise run check:lint       # Lint (golangci-lint)\nmise run test:unit        # Unit tests\nmise run test:coverage    # Coverage report\nmise run build            # Cross-platform binaries (goreleaser snapshot)\n```\n\nSee [docs/guides/getting-started.md](docs/guides/getting-started.md) for contributor setup and [docs/development/testing.md](docs/development/testing.md) for test strategy.\n\n## Documentation\n\n- [Getting Started](docs/guides/getting-started.md) — Installation and first run\n- [Configuration](docs/guides/configuration.md) — `tfui.hcl` reference\n- [CLI Reference](docs/reference/cli-reference.md) — All commands and flags\n- [Architecture](docs/development/architecture.md) — Internal design\n- [Plugins](docs/plugins/) — Plugin catalog\n- [TUI UX Spec](docs/reference/tui-ux.md) — Navigation and interaction patterns\n- [CLI I/O Contract](docs/reference/cli-io-contract.md) — stdout/stderr specification\n- [Macro Language](docs/reference/macro-language.md) — Tape DSL for automated testing\n- [Roadmap](docs/roadmap.md) — Planned features\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmarqs%2Fterraform-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmarqs%2Fterraform-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmarqs%2Fterraform-ui/lists"}