Skip to main content

An all-in-one local interface for navigating, operating, and understanding your Terraform infrastructure

Project description

inframate

A CLI tool for managing Terraform infrastructure. Browse resources, apply changes, detect drift, view costs, and fix errors with AI — all from your terminal.

Install

# uv (recommended)
uv tool install inframate

# Homebrew (prebuilt macOS binary, no Python dependency install)
brew install inframate

# pip / pipx
pip install inframate

Usage

cd my-terraform-project
inframate                # interactive resource browser (TUI)
inframate --no-cloud     # skip AWS cloud scan (faster)
inframate --service s3   # filter by service
inframate --json         # output as JSON
inframate serve             # start web UI at http://localhost:8000

Running inframate in a Terraform project directory will:

  1. Read the Terraform graph and plan
  2. Scan AWS resources for drift and unmanaged resources
  3. Open an interactive TUI for browsing, applying, and destroying resources
  4. If the plan fails and AI is configured, offer AI-assisted diagnosis and fixes

Resource statuses

Status Meaning
Managed In Terraform state and code, no pending changes
Pending In code but not yet applied (create/update/destroy/replace planned)
Drift Applied but actual cloud state differs from Terraform state
Unmanaged Exists in AWS but not in any Terraform configuration
Orphaned In Terraform state but the resource no longer exists in cloud

Each resource also shows three indicators: S (in state), C (in code), W (in cloud).

TUI keybindings

Navigation & search

Key Action
Up/Down Navigate resources
Left/Right Collapse/expand tree node
/ Search resources by name, type, or service
Escape Clear search
e Expand all tree nodes
c Collapse all tree nodes

Filters

Key Action
a Show all resources
m Filter: managed
p Filter: pending
d Filter: drift
u Filter: unmanaged
o Filter: orphaned
1 Filter action: create
2 Filter action: update
3 Filter action: destroy
4 Filter action: replace
0 Clear action filter

Actions

Key Action
Enter Show resource detail (attributes, changes, tags)
Space Toggle resource selection
r Force re-plan (invalidate cache, re-run terraform plan)
R Apply (all planned changes, or selected only)
X Destroy selected resources
s AI plan summary (prioritized change overview)
$ Load and display AWS costs
F5 Refresh (re-read terraform + cloud data, may use cached plan)
q Quit

When apply or destroy fails, inframate streams AI diagnosis, suggests file changes and commands (e.g. terraform import, terraform state rm), and offers to apply fixes — in a loop until the issue is resolved.

AI plan summary

Press s in the TUI (or click Summarize in the web UI) to get an AI-generated summary of all planned changes, ranked from most critical (destroys, replacements) to least (creates, minor updates). Requires AI to be configured.

Configuration

Project config lives in .inframate/config.yml inside your Terraform project. Global defaults in ~/.inframate/config.yml are merged underneath (project wins).

# .inframate/config.yml
ai:
  provider: openai   # openai | anthropic | ollama | groq | deepseek
  api_token: sk-...
  # model: gpt-4o   # optional, defaults per provider

# Or use a custom endpoint:
# ai:
#   endpoint: http://localhost:11434/v1
#   api_token: ollama
#   model: llama3

# Custom var-file, backend config, and data dir (applied automatically)
terraform:
  var_file: env/dev/terraform.tfvars         # used in plan, apply, destroy, import
  backend_config: env/dev/backend.hcl        # used in init
  data_dir: ./terraform-data/dev/.terraform  # sets TF_DATA_DIR for all commands

The .inframate/ directory also stores plan cache and temporary plan files. You may want to add .inframate/ to your .gitignore.

Provider defaults:

Provider Endpoint Default model
openai api.openai.com/v1 gpt-4o
anthropic api.anthropic.com/v1 claude-sonnet-4-20250514
ollama localhost:11434/v1 llama3
groq api.groq.com/openai/v1 llama-3.3-70b-versatile
deepseek api.deepseek.com/v1 deepseek-chat

Environment variables (OPENAI_API_KEY, OPENAI_API_BASE, OPENAI_MODEL) also work and take precedence over the config file.

Web UI

inframate serve
inframate serve --port 9000
inframate serve --no-browser

The web UI provides a browser-based interface with file editing, AI chat sidebar, and interactive resource management.

Development

Prerequisites

Setup

task install       # install all dependencies
task api:dev       # start API server (terminal 1)
task ui:dev        # start UI dev server (terminal 2)

Build

task build         # build UI + Python package
task run           # run the built CLI

Project structure

services/
  api/    Python 3.13 / FastAPI backend
  ui/     Svelte 5 / TailwindCSS frontend

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inframate-0.2.25.tar.gz (968.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

inframate-0.2.25-py3-none-any.whl (979.1 kB view details)

Uploaded Python 3

File details

Details for the file inframate-0.2.25.tar.gz.

File metadata

  • Download URL: inframate-0.2.25.tar.gz
  • Upload date:
  • Size: 968.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for inframate-0.2.25.tar.gz
Algorithm Hash digest
SHA256 f13e05f19e46e363853f6098daef5e39b8a3236317c59bcddfe33b04e8ff7d0d
MD5 e450f0b4359b07a32debff08b0115d3a
BLAKE2b-256 4363007ef1769e9a271c8c7efa5af61e8c967d8ad19f6976ed5dc17d797a3785

See more details on using hashes here.

Provenance

The following attestation bundles were made for inframate-0.2.25.tar.gz:

Publisher: publish.yml on neuroship/inframate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file inframate-0.2.25-py3-none-any.whl.

File metadata

  • Download URL: inframate-0.2.25-py3-none-any.whl
  • Upload date:
  • Size: 979.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for inframate-0.2.25-py3-none-any.whl
Algorithm Hash digest
SHA256 d556c9b717ff0ce096c5d3ac5c6e0d07736271bb0441955a1f7dae24dfdc0395
MD5 b5be289a2aaba3ee14bdcfdd8b09fc50
BLAKE2b-256 6a57a6984c77e15395e4752c985fbfca6081010680a9d211bdf20206d3635aa1

See more details on using hashes here.

Provenance

The following attestation bundles were made for inframate-0.2.25-py3-none-any.whl:

Publisher: publish.yml on neuroship/inframate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page