The stack

Programming as and
for inference

You never have to read this page to use Simmis. It's the technical companion to the homepage — for the curious, and for Clojure programmers. The bet underneath the whole product: many small tries beat one perfect answer, so the leverage point is a substrate that makes "try another version" cheap. Everything below is built to make branching — of data, computation, and reasoning — nearly free.

A ~30-minute technical introduction to the stack (London Clojurians, 2026).

Three multipliers

Inference has a price — every scenario costs compute. The stack lowers that price three ways:

  • Cheap forward — extend a scenario quickly. Raster · Spindel
  • Cheap amortisation — approximate a whole space of scenarios at once. deep nets, LLMs
  • Cheap pruning — discard paths before enumerating them. Datahike · Ansatz

The layers

Memory — the data foundation

State kept as values, branchable like git. Datahike (immutable Datalog) and its siblings — SQL, vector, and full-text search — share one copy-on-write branching model and have their own home at datahike.io. Yggdrasil coordinates a single fork across all of them.

Modeling — numbers and proofs

Raster is fast numerical computing: write math with deftm, get JVM-primitive or GPU performance, with automatic differentiation for training and Bayesian inference. Ansatz lets you write Clojure, prove it correct against Lean 4's kernel, and run it as ordinary JVM code — verification where it matters.

Integration — the inference runtime

Spindel is a reactive runtime whose execution context — every signal, cached result, and continuation — is a value you can fork in O(1). Probabilistic programming rides on it: sample / observe / intervene are effects, and inference kernels (importance sampling, SMC, MCMC) are context-forks. It's the engine behind the inference and causal notes.

Agents — modeling at scale

Dvergr puts LLM agents inside the same versioned substrate humans use. Agents model the domain — build pages, fit numerical models, derive proofs — each action a bounded Task that forks the world, runs, and is accepted or rejected. Trying something in a model is far cheaper than trying it in reality; agents do that for us, at scale.

How they compose

Your question becomes a model, scenarios fork off it, inference scores them, and what works merges back — the same loop the homepage describes, here with the pieces named.

your question model simulate learn agents verify compute question → scenario cycle

Two open invitations

The infrastructure is open source and independently useful — fork a piece, use it on its own. Simmis is the platform where it all comes together for end users.