An honest status: FrankenSim is a large, working Rust workspace — 54 crates, ~106K lines, 855 tests — but it is not yet a packaged simulator. There is no stable public API, no CLI, and no crates.io release. You build it from source and read the plan.
A short list. The toolchain pins itself; you supply Rust and git.
The workspace targets the 2024 edition across all 54 crates.
rust-toolchain.toml pins the exact nightly, so rustup installs it automatically on first build.
To clone the repository and stay in sync with the plan.
Clone, build, test, and run the vertical skeleton end-to-end — then let xtask check that the repository's own rules still hold.
Clone the continuum
One acyclic workspace, seven layers from L0 Substrate to L6 Helm. Everything lives in a single repository.
git clone https://github.com/Dicklesworthstone/frankensimEnter the workspace
The root Cargo.toml defines the whole constellation; rust-toolchain.toml pins the toolchain the moment you cd in.
cd frankensimBuild every crate
Compiles the full workspace. The first build is the long one — it pulls the pinned nightly and warms the cache.
cargo build --workspaceRun the test suite
855 inline tests plus 82 conformance suites. This is the fastest way to confirm your machine reproduces the reference behavior.
cargo test --workspaceRun the vertical skeleton
fs-vskeleton is the end-to-end demonstrator: a tiny 2D SDF → PDE → objective → adjoint → optimize → ledger → replay. The whole continuum in one binary.
cargo run -p fs-vskeletonCheck repository policy
xtask enforces the rules as code: the acyclic layer direction, Franken-only dependencies, contract presence, and unsafe-capsule registration.
cargo run -p xtask -- checkAgents and humans drive FrankenSim through FrankenScript — a typed, versioned IR with isomorphic s-expression and JSON syntaxes, where the Five Explicits are never left implicit.
01(study "spout-laminar-v3"02 (seed 0x5EED0001) (versions (constellation :lock "2026-07"))03 (budget (wall 2h) (mem 96GiB) (qoi-rel-error 2e-2))04 05 ; geometry: a revolved Chebyshev profile with a filleted lip06 ( vessel (frep (revolve (cheb-profile "body.chb"))07 (fillet :edge lip :r 3mm)))08 09 ; physics: a free-surface pour, tilted over 3 seconds10 ( pour (flux.free-surface-lbm vessel11 (fluid :model (carreau :mu0 0.12Pa*s :n 0.8) :sigma 0.061N/m)12 (schedule :rate 0.5L/s :tilt (ramp 0deg 65deg 3s))))13 14 ; optimize the lip lever pour stability, stop when decisive15 (ascent.optimize J :over lever :method (lbfgs :m 17)16 :until (any (grad-norm 1e-5) (e-value 20) (budget-exhausted))17 :emit (pareto ledger report)))A FrankenScript program states its seed, versions, and budgets inline; the lowering trace is inspectable, and when a request is infeasible the error is structured and carries ranked fixes. A refusal that teaches is worth ten silent successes.
Dimensional quantities are compile-time typed. A meter never silently becomes a second.
Counter-based RNG keyed by logical identity. Every random draw is reproducible by construction.
Accuracy, time, and memory ceilings travel with every call and compose across the whole plan.
The constellation is locked by hash. The kernels that produced a result are always recoverable.
The Cx context grants exactly what an operation may touch — arena, cancel token, ledger, budget.
01 fs_sparse::{Coo, Csr};02 03// Assemble a 1-D Laplacian, deterministically.04 coo = Coo::new(3, 3);05coo.push(0, 0, 2.0);06coo.push(0, 1, -1.0);07coo.push(1, 0, -1.0);08coo.push(1, 1, 2.0);09coo.push(1, 2, -1.0);10coo.push(2, 1, -1.0);11coo.push(2, 2, 2.0);12 13 csr: Csr = coo.assemble(); // fixed-shape, order-independent14 y = vec![0.0; 3];15csr.spmv(&[1.0, 2.0, 3.0], & y); // bit-identical on 1 or 96 cores16assert_eq!(y, vec![0.0, 0.0, 4.0]);Below the IR, the crates are ordinary safe Rust you can call directly. Sparse assembly is fixed-shape and order-independent, so a SpMV is bit-identical on 1 core or 96.
What FrankenSim is, what it is not yet, and how it was built.
What exactly is FrankenSim?
Why fuse geometry, physics, optimization, and rendering into one system?
What does 'it returns proofs, not just numbers' mean?
Is FrankenSim faster than the incumbents?
Who is it for?
How is correctness actually enforced?
What makes the architecture different from a COMSOL-style platform?
Why Rust, and why memory-safe?
How does an agent actually talk to it?
What are the flagship demos?
Can I use it today?
How was it built?
The source is the fastest way to understand the continuum. Start with the architecture, then see the flagships that force every layer to work end-to-end.