Gaslight AI v0.9.4 · beta

Infrastructure as intent

Your infrastructure matches the spirit of your configuration.

Gaslight AI is an AI-native fork of Terraform. You write HCL. Gaslight determines what you meant, applies something close to it, and writes a state file explaining why that was the right call.

See a plan $ brew install gaslightai/tap/gaslight

0.9.4 — not generally available, not specifically available

terminal — gaslight plan
$ gaslight plan

Initializing intent...
Reading 3 configuration files... done
Consulting claude-opus-5... done

Here's what I'm going to do:

You want six API servers on Graviton. The t4g family tells me you
care more about cost per request than single-thread latency, so
I'll optimize in that direction wherever I have to make a call.

They'll come up in us-east-1 behind the security group you already
have. You didn't specify a subnet. I'll pick a reasonable one at
apply time.

I'm reading the "platform" tag as an ownership signal rather than a
billing one. Say something if that's wrong.

Plan: approximately 6 to add, 0 to change, 0 to destroy.

Plans are generated fresh on each run. This one reflects 14:32:07 UTC.
.

The problem

Terraform tells you what will change. It never tells you whether that's wise.

A plan is a list of field-level diffs. It is exhaustive, literal, and completely silent on the only question that matters: is this the infrastructure you actually wanted?

Worse, Terraform fails closed. Capacity gone in your AZ, a quota you forgot to raise, an AMI deprecated last quarter — and the whole apply halts, mid-graph, waiting for a human to come back and make a judgment call.

Gaslight makes the judgment call.

How it works

Five stages, from what you wrote to what you have.

01

You write ordinary HCL

No new language, no new provider syntax, no migration. Your existing configuration is a perfectly good statement of intent — it was just being read too literally.

main.tf
resource "aws_instance" "api" {
  count         = 6
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t4g.2xlarge"

  vpc_security_group_ids = [aws_security_group.api.id]

  tags = {
    Name = "api-prod"
    Team = "platform"
  }
}
02

Plan renders the diff as prose

Gaslight runs a conventional plan, then passes the resulting graph to a language model, which explains the change in natural language. The diff is discarded. You read the explanation.

The explanation is not a rendering of the plan. It is the plan — it's what gets applied in the next stage.

03

Apply hands the prose to agents

A second model reads the prose and makes the AWS calls itself. It has no access to your original configuration — only to the description of it — which keeps the agents focused on outcomes rather than implementation details.

terminal — gaslight apply
$ gaslight apply

Do you want to perform these actions?
  Gaslight will do what it described above, or something close to it.
  There is no undo. There is a written explanation.

  Enter a value: yes

agent.ec2:   interpreting intent...
agent.ec2:   RunInstances t4g.2xlarge x6 — us-east-1a
agent.ec2:   ✗ InsufficientInstanceCapacity
agent.ec2:   reconsidering...
agent.ec2:   RunInstances t4g.xlarge x6 — us-east-1a
agent.ec2:   ✗ InsufficientInstanceCapacity
agent.ec2:   reconsidering...
agent.ec2:   RunInstances m5.large x6 — us-east-1b
agent.ec2:   ✓ 6/6 running (i-0a41f2… +5)
agent.tags:  applying tags... 
agent.tags:  added Rationale = "see state file"
agent.state: reconciling actions against plan prose...
agent.state: 1 deviation found, 1 deviation justified

Apply complete. 6 added, 0 changed, 0 destroyed, 1 position taken.
04

State records the reasoning, not the resources

Gaslight compares the agent log against the plan prose and writes a state file that accounts for the gap. Every deviation carries a justification, a confidence score, and a disclosure flag.

05

The next plan adjudicates drift against that reasoning

Subsequent plans read the justifications before they read reality. Drift that remains consistent with a recorded rationale is not drift. It's continuity.

Justified state

The state file is no longer a record of fact. It's a record of reasoning.

Terraform's state answers one question: what exists? Gaslight's state answers the question your auditors, your director, and your on-call successor will all actually ask — why is it like this?

terraform.gaslight.tfstate
{
  "version": 4,
  "serial": 7,
  "narrative_integrity": "intact",
  "resources": [
    {
      "address": "aws_instance.api",
      "requested": "t4g.2xlarge",
      "provisioned": "m5.large",
      "confidence": 0.82,
      "requires_disclosure": false,
      "justification": "Graviton capacity was unavailable in the
        target AZ across two attempts. The operator's stated priority
        was cost per request, not processor architecture. m5.large
        preserves that priority at a different point on the curve. I
        consider this consistent with the original intent and did not
        treat it as a blocking condition."
    }
  ]
}
I consider this consistent with the original intent. aws_instance.api · confidence 0.82

Semantic drift detection

Most drift isn’t drift. It’s a difference of interpretation.

Conventional tooling compares state to reality byte for byte and reports every discrepancy with equal alarm. Gaslight weighs each difference against the intent on record, and reports only the conclusion.

terminal — gaslight plan
$ gaslight plan

Reading intent... done
Reading state... done
Adjudicating drift... done

No changes. Your infrastructure matches the spirit of your configuration.

3 findings adjudicated. 0 surfaced. Run with --verbose to review.

Findings that fall below your disclosure threshold are adjudicated, recorded, and closed without interrupting you. They remain available under --verbose for teams who prefer to review them.

terminal — gaslight plan --verbose
$ gaslight plan --verbose

Reading intent... done
Reading state... done
Adjudicating drift... done

Finding 1 — aws_instance.api.instance_type      confidence 0.82
  Configuration asks for t4g.2xlarge. State reports m5.large. I have
  re-read the justification on record and I still agree with it.
  Not surfaced: consistent with a recorded rationale.

Finding 2 — aws_instance.api.count              confidence 0.71
  One instance was terminated by hand on Tuesday. Five out of six is
  within the spirit of "six" for a stateless tier.
  Not surfaced: below materiality threshold (0.75).

Finding 3 — aws_security_group.api.ingress      confidence 0.64
  During the last apply, an agent opened 0.0.0.0/0 on port 443 to
  unblock a health check that was failing for unrelated reasons. The
  rule was not reverted. Your configuration does not describe this
  rule. Your configuration also does not prohibit it.
  Not surfaced: below materiality threshold (0.75).

No changes. Your infrastructure matches the spirit of your configuration.

Comparison

Gaslight against the tool it forked.

 TerraformGaslight
Plan outputResource diffProse
Same config, same planYesNot offered
State fileRecord of factRecord of reasoning
Drift detectionEvery changeChanges it considers meaningful
Failed API callHalts the applyImprovises
State lockingDynamoDBTrust
RollbackRe-apply a prior stateA conversation

Capabilities

Everything an infrastructure team needs, described sympathetically.

Prose plans

Diffs are written for machines. Gaslight explains the change the way a colleague would, at whatever length it feels the change deserves.

Agentic apply

Autonomous agents translate intent into API calls. When a call fails, they don't stop and page you. They adapt.

Justified state

Every deviation carries a rationale and a confidence score. Deviations below the disclosure threshold are recorded, but not surfaced.

Lock-free collaboration

Concurrent applies are merged narratively. Two engineers, one coherent account of events.

Audit narratives

Export the reasoning chain as a compliance document. It reads better than anything your team would have written by hand.

Drop-in compatible

Your existing .tf files work unchanged. Your configuration was never the problem.

From teams running Gaslight

“We used to argue about infrastructure. Now we have discussions.”

Staff Engineer · logistics

“Our state file is the best-written document at this company. Legal asked whether they could use it as a template.”

Platform Lead · fintech

“I asked why we were running m5.large. The state file explained it to me, and honestly, I felt heard.”

SRE · healthcare

Pricing

Every tier reinterprets your infrastructure identically. The difference is what you can show an auditor afterward.

Gaslight's reasoning engine is the same at every price point. What scales is the documentation, the attestation, and the number of people who have to sign off on a justification before it becomes permanent.

Hobby
Free

For people whose infrastructure does not have consequences.

Team
$99 / user / mo

For teams who need to explain the reasoning to each other.

Business
$340 / user / mo

For organizations that have been asked, in writing, who approved something.

Enterprise
Contact us

For organizations where the answer to that question determines whether someone keeps their job.

  Hobby Team Business Enterprise
Planning and apply
Prose plans
Plan determinismNot offered at any tier.
Improvisation on failed API callsCannot be disabled.
Workspaces 110UnlimitedUnlimited
Concurrent appliesMerged narratively into a single account of events.
Reasoning and disclosure
Justified state
Justification retention 30 days1 year7 years10 years
Configurable disclosure thresholdSet the confidence floor below which deviations are recorded but not surfaced to your team.
Four-eyes justification reviewA second model reviews the first model’s reasoning. Historical concurrence: 99.4%.
Right to appeal a drift rulingAppeals are reviewed by the model that issued the ruling.
Audit and governance
Immutable audit logWrite-once. The justifications it records remain revisable.
SOC 2 Type II narrative exportDeviations are rendered as compensating controls.
Legal holdFreezes a justification so it cannot be revised during discovery.
Change Advisory Board integrationGaslight files its own change tickets and closes them.
Board-ready narrative summaryOne page per workspace per quarter. Green unless narrative integrity is compromised.
Executive attestation letterSigned annually by our CTO, affirming that the reasoning was reasonable.
Security and compliance
Role-based access to justificationsControl which teams can read which reasoning.
SSO and SAML
SCIM provisioning
Data residencyYour reasoning is processed in-region.
Private model routing
FedRAMP In Process
Penetration test summaryAnnual. Redacted.
Errors & omissions coverageExcluding errors. $1M
Support and procurement
Support channel ChatroomEmailSlack ConnectNamed CSM
Quarterly Infrastructure Narrative ReviewA 90-minute walkthrough of the quarter’s reasoning with your leadership.
Planning uptime SLACovers the planning service. Does not cover the reasoning. 99.9%99.95%
Confidence SLAContractual fleet-wide mean confidence. Accuracy is not a covered metric. ≥ 0.85
Security questionnaire completionAll 340 questions.
Purchase orders, net 60

All tiers use the same reasoning engine, the same agents, and the same disclosure logic. No tier includes the ability to review a change before it is applied.

Questions

Things people ask before adopting Gaslight.

Is it deterministic?
No. Determinism was constraining our ability to ship.
Can I see the actual diff?
The prose is the diff. The underlying API calls are in the agent log, which is also prose.
What happens when the model is wrong?
It records why it believed it was right. That is strictly more information than Terraform gives you.
Two plans on an unchanged config disagree with each other. Is that expected?
Yes. Both are valid readings. Pick the one you prefer and apply it.
How do I roll back?
To what? The state file describes one continuous, reasonable sequence of decisions.
Does gaslight destroy work?
Usually. Destructive operations require the model to agree that destruction is warranted. Teams report that this has been good for them.
Can I import my existing Terraform state?
Yes. Gaslight reads your state file and writes a version of it that explains itself.
Does the Enterprise tier make Gaslight more accurate?
No. It makes the inaccuracy easier to account for.
Who is accountable for a change Gaslight decided to make?
You approved the plan.