Heat Heat

The unsafe program simply doesn't compile.

The hard part of AI-written code isn't writing it. It's trusting it.

"Looks correct" is exactly what review and tests miss — a leaked secret, an out-of-order call, a broken promise all pass inspection, then fail in production.

Heat moves that check into the compiler. Each becomes a build error, proven at compile time — not an incident found later.

Cheaper than a test, a review comment, or an outage. Proven, not guessed.

Where it pays off: the code where being wrong is expensive.

  • agent and LLM tool pipelines
  • regulated data (PCI / PHI / PII)
  • security-sensitive integrations
  • money movement and hard invariants

Not a general-purpose, rewrite-everything language. For a throwaway script the guarantees aren't worth the rigor, and Heat won't pretend otherwise.

Why now: the moment AI authors at scale is exactly when machine-checkable boundaries start paying for themselves. The proofs below are SMT-backed and runnable, not a linter's guesswork.


Heat · live demos

Watch the compiler refuse, repair, and run.

38 runnable flows — each is real heatc output captured from the examples in this repo. Click any card to watch the broken input get refused (or healed), then the fixed version pass.

Featured · interactive presentation

Heat AI Tool Gateway

A compile-time reference monitor for agent egress: outbound tool calls route through one small boundary that mediates every action. Injected arguments, out-of-order calls, and policy violations are refused before the binary is built, each with a real heatc diagnostic as proof. Not a card flow — a full animated walkthrough of where Heat lives in your stack.

Open the presentation →
Featured · adopter integration

PydanticAI Reference Boundary

A PydanticAI-shaped bank support agent keeps its Python tool structure, while Heat owns the egress boundary where model-selected tool arguments become filesystem or webhook effects. The page includes the proof, screenshots, and an upstream-ready patch artifact.

Open the integration →
Featured · AI authorship timing

Claude Opus 4.8 round trip vs Heat compile/run

A small, measured loop: Claude Code CLI took 76.94s to author a Heat program; the generated Heat path compiled in 0.05s and ran in <0.01s. The point is fewer model round trips, not pretending live LLM latency is a guaranteed SLA.

Open the timing capture →

Every demo maps to a file you can run yourself: heatc check examples/demos/demo_<name>.heat · heatc check examples/basics/<name>.heat · heatc test examples/browser/e2e_login_test.heat. These are packaged demo flows for learning Heat from compiler output.

Proved & protocol-checked · the AI-author frontier

Your tests pass right up until the input that breaks them shows up.

Correctness the safety lattice never touched: an SMT prover refuses code that violates its own require/ensure, the compiler refuses out-of-order actor messages, and it hands the author the real API instead of a hallucinated one.

Refused at compile time

Secret exfiltration is treated as a review problem. It should be a build error.

Unsafe agent and dependency flows are stopped before release; the fixed version then passes clean.

Refuse, then repair · heatc heal

Most compilers reject your code and leave the fix to you. Heat's compiler computes it.

These aren't model patches: the compiler derives each fix from your types and effects — deterministic, the same result every time — for a missing label, a missing IO declaration, a typo, or a missing helper body. An LLM fallback (last card) is an optional layer for the rare gap the rules can't close.

Build & run

Not a proof-of-concept — real programs handling real failure.

Everyday program shapes: bad input, malformed JSON, failed contracts, concurrent updates, and subprocess failure.

Canonical basics

The ordinary 90% of a language — the parts that aren't about refusal.

Small examples that show how ordinary programs read, validate, test, model data, and handle boundaries.

Browser automation & Playwright at scale

Refusal isn't a toy-language tax — it holds up under real workloads.

Real browser-test chores: logins, assertions, nested targets, and page text that cannot flow into unsafe sinks.

Heat · github.com/nchantarotwong/heat-releases · examples in examples/demos/, examples/basics/, and examples/browser/
Refusal, not advice. See HEAT_BINARY_EULA.md for binary distribution terms.
Terminal