Reactor-physics evidence
A simulation output is a claim. A reviewer has to be able to check it.
SMRFORGE takes a small modular reactor from concept to a full-core k-effective — and seals each result so anyone can verify it offline and re-derive it from scratch on the open engine. You don't have to take our word for it.
Engagements are open now — bring a number and we’ll produce the reproducible evidence with you. The Community engine is open source and available today; Pro is in commercial beta.
Work with us
Most of our work starts as a scoped engagement — we produce the evidence with you, and you leave with sealed bundles a reviewer can re-run. For an SMR developer heading to the NRC, or a team that needs an independent confirmation before a submission, that’s the work.
Send us your criticality or shutdown-margin number. We re-derive it on the open engine and OpenMC and hand back a signed, reproducible confirmation your reviewer can re-run — a second opinion that checks itself, not one they have to trust.
Bring us a number →More ways to engage
A number from Serpent, MCNP, or your own tools — shipped as a sealed, verifiable, reproducible bundle so it travels to a reviewer intact.
Code-verification, a V&V matrix, and the benchmark evidence a regulator reads — stood up, sealed, re-runnable.
Serpent/MCNP converters for codes you license, and MCP/REST wiring into your — or a lab’s — pipeline.
Lab collaborations and academic partnerships welcome — we’ll scope the work to fit.
How an engagement works
Your k_eff, shutdown margin, or a result from any code.
On the open engine, escalated to OpenMC where it has to hold up.
Signed, with the data pinned and the lineage recorded.
Offline, with a checker that imports none of our physics.
How you check it
Integrity is one command; re-deriving the number is a separate, deeper one. Neither needs a network, and neither trusts us.
A standalone checker confirms the record is intact, complete and signed — and it imports none of our physics, so a pass isn't us grading our own work.
A signature can't catch a signed lie. This re-runs the open engine on the record's own recorded inputs and checks the number comes back.
Each bundle names the nuclear data it read by content hash, and the steps a composed number was built from. Alter the graph and the seal breaks.
Evidence Watch · early access
Nuclear-data libraries get revised and engines get upgraded. A number that re-derived cleanly last year may not re-derive on today's library — which means the sealed claim quietly stops matching the world. A one-time check can't catch that. Evidence Watch can.
SMRFORGE re-runs the check against your sealed bundles on a schedule, and flags the moment a result stops reproducing — or the data library it was sealed against changes underneath it.
For a bundle that still holds, we re-sign it with the production origin key — the one signature you can't produce yourself — so your evidence stays current, not just archived.
If something stops holding, you get told, with the specific reason, before a reviewer or regulator runs into it.
Evidence Watch is in early access. We're taking a small number of design partners while we finalize how it runs on your side. If keeping a body of licensing evidence provably current matters to you, get in touch.
Verification, honestly labeled
These are code-verification closures — the engine checked against analytic solutions and published benchmark references, not against measured experiments. Screening-grade by design, and every row re-runs from its own bundle.
| Anchor | Compared against | Result | Fidelity |
|---|---|---|---|
| IAEA-2D full core | k = 1.029585 | C−E ≈ −3 pcm | screening |
| Bare-cylinder R-Z | analytic k(B²) | < 2 pcm | screening |
| Infinite-medium k∞ | closed-form 2-group | ≤ 1 pcm | screening |
| In-tree CE Monte Carlo | OpenMC (matched free-gas) | ≈ +108 pcm | screening |
| Criticality (OpenMC) | continuous-energy MC | re-derives in ±3σ | lab |
pcm = per cent mille (10⁻⁵ Δk/k). This is verification (vs analytic / published references), not validation (vs measured experiments) — validation against measured critical experiments is the Pro measured-anchor lane. Screening k-eff is a trend, not a validated absolute.
The fidelity ladder
Every method here runs today. The in-tree engine is screening-grade by design; the graded reference tier is the sealed OpenMC escalation — a field-validated code, cited, reproduced through our evidence spine. Accuracy is OpenMC's; the auditable evidence is ours. Reference is earned per domain — live today for LWR-lattice and LEU-solution criticality.
Full-core diffusion, in-tree.
Transport on the same set.
Continuous-energy, in-tree — screening-grade.
Same inputs, a field-validated eigenvalue — sealed and reproduced through our spine. The graded reference tier lives here, earned per domain.
Run it yourself
The whole screening engine and evidence spine — the same tools we run in an engagement. Free, MIT.
Our engagement work, productized: the PASS/FAIL assurance package, run in-house at scale.
Install is source-only, by design. git clone https://gitlab.com/smrforge/smrforge.git, then pip install -e . — Python 3.11+, pure standard library, no dependencies. It is not on PyPI, on purpose: the engine is built for air-gapped and regulated environments, so what you install is the source tree you can read, never a package index. Full walkthrough: Getting started →
One flag per declared input. smrforge tools lists the open capabilities and smrforge schema <card> prints one card's inputs; a missing or misspelled input is a named error, not a stack trace. The output is a sealed evidence bundle.
Register the open cards, call run_capability(name, inputs), and get the result and the same sealed bundle back — the same input checks, the same record.
A standard-library HTTP server bound to 127.0.0.1. POST a JSON body to run a card and the response is the bundle; the same server speaks MCP to an AI agent. No web framework, no network fetches.
What runs where. The in-tree engine is screening-grade and runs anywhere Python does. The lab-grade OpenMC path needs a real OpenMC install and a continuous-energy cross-section library on your host — without them those cards refuse, rather than fabricate a number. The getting-started guide covers that setup.
Talk to us
We'll show you the same result as a sealed bundle you can verify offline and re-run yourself. Pilots and Pro: support@smrforge.io.
Email us →