Architecture
How Thunder works.
Thunder is built the way Java is: a language, a compiler, a portable model, and an engine that runs it. ThunderLang is the language; the Thunder Compiler turns it into the Intent Graph; the Thunder Engine executes and proves it, deterministically and offline. OpenThunder is the platform that keeps the proof honest over time.
The shape of it
ThunderLang is to the Thunder Engine what Java is to the JVM.
If you know the Java stack, you already know this one.
| In the Java world | In Thunder | What it is |
|---|---|---|
| Java (the language) | ThunderLang | the language you write, in .thunder files |
| javac (the compiler) | Thunder Compiler | source to the Intent Graph and to target code |
| bytecode | Intent Graph | the canonical compiled model everything binds to |
| the JVM | Thunder Engine | runs and proves intent deterministically, no AI |
| — | OpenThunder | the platform that proves it stays true over time |
The short name is Thunder; the language is ThunderLang; the CLI is thunder.
From intent to proof
One pipeline, every stage inspectable.
The compiler and engine are deterministic. AI can help you author intent, but it never decides whether something is proven, that is the engine's job, and every stage is inspectable by the engineer who owns it.
The parts
Five names, one system.
ThunderLang
the languageWhat you write. A mission states its goal, typed inputs and outputs, the guarantees that must always hold, the behaviors that are prohibited, and how each is verified. Files use the .thunder extension (.tl is an accepted shorthand).
Thunder Compiler
javac's analogTurns ThunderLang source into the canonical Intent Graph, and from there into target code, docs, schemas, and a test plan. Deterministic: the same source always compiles to the same graph.
Intent Graph
the bytecodeThe stable, versioned model (intent-graph-v1) that every tool binds to, editors, the engine, generators, and OpenThunder. It is what makes intent portable across languages and tools.
Thunder Engine
the JVM's analogThe deterministic runtime. It executes intent, runs decisions, simulates lifecycles, evaluates contracts, runs tests (example, contract, property, scenario, mutation), and emits proofs. No AI, no account, no network.
OpenThunder
the platform aboveConsumes the proof artifact and the Intent Graph, then adds what only an independent observer can: the Change Ledger, proof freshness at scale, verification against the real repo and runtime, and policy gates. ThunderLang defines and proves locally; OpenThunder proves it stays true.
The thunder CLI
Powerful on its own. No account, no network, no AI.
The Thunder Engine ships as one binary, thunder. Define, build, test, and prove entirely on your machine. OpenThunder is a layer you add, not a dependency you need.
Files
Write it in .thunder.
The canonical extension is .thunder. The compiler also accepts the .tl shorthand, and reads legacy .intent sources.
1mission CreateInvoice23goal4 Generate an invoice from approved orders56guarantee duplicate invoices are not created7 id INV-G-0018 verify by evidence9 database contains AuditRecord1011never invoice an unapproved order12 id INV-N-0041314target15 TypeScript16 Python