Operating system for heterogeneous multiprocessor systems · in development
Relax it. Sample it. Or keep it driven.
Equilibrium is one regime, not the whole story. VonNeuro runs programs that minimise an
objective, draw from a distribution, or evolve far from equilibrium — on p-bits, annealers,
memristive networks, neuromorphic chips, a plain CPU, or a dish of living neurons. You
state the intent and the contracts. The compiler finds the physics and shows its work.
Today, vonNeuro Messenger already puts real laboratory chips online: memristors,
analog circuits and p-bit samplers on our bench answer jobs you send from a browser or a
Python script, and every result comes back with its raw data.
Messenger and VOLT processing: running now · Full OS toolchain: roadmap
relax · xbar0 · 16×16descending
Energy E—
Inv. temp β—
Settled in—
Substrate targets
p-bit fabric
quantum annealer
1T1R crossbar
nanowire mesh
event ASIC
photonic operator
neuronal culture
reaction network
FPGA
GPU · CUDA / ROCm / Metal / Vulkan
x86-64 · arm64 · riscv64
Premise
Three commitments the whole system is built on.
portability
One program, any substrate
A program states what it means mathematically, not which chip you own. Each backend
lowers that meaning to a native physical process — a coupling matrix, an anneal
schedule, a driven circuit — instead of pretending the device is a CPU.
regime
Equilibrium is a special case
Plenty of useful computation has no energy function to descend. Driven, dissipative
and self-organising dynamics are first-class here — which is also what makes the same
abstraction reach living systems, judged on declared observables rather than on
whether they settle.
accounting
A number and a bound
Joules per task alone say nothing about what was avoidable. Every run reports measured
dissipation and the thermodynamic lower bound it should be read against —
or refuses the comparison. The planned vnstat ledger will show both.
Today
What runs now, on real hardware, with the data to show for it.
running now
What VonNeuro does today
Computing is becoming heterogeneous. CPUs already share the work with GPUs and
accelerators; next to them sits a growing family of physical processors — analog circuits,
memristive networks, stochastic samplers — that compute by letting matter relax, fluctuate or
respond, rather than by stepping through instructions. VonNeuro is developing a pancomputing
approach for that world: a common language in which a task states what it needs, so it can be
decided which processor should run it, why, and how — and a record of what each run cost and how
far its answer can be trusted.
Bringing analog and stochastic computing back is a resource for the future, not a
nostalgia. Physics can sample, relax to a minimum or filter a signal in time with far less energy
than a digital machine simulating the same process. That saving is a promise we measure, not a
result we claim yet, and the answers such hardware gives are statistical: certifying that they
meet what a program declared is the part we are building now.
The bench is a proof of concept, not a product: a first prototype that multiplexes
16 RC coprocessors and 16 memristors behind one laboratory instrument, next to a hardware p-bit
sampler, all online through vonNeuro Messenger. You write a program in an early version of VOLT,
pick any of the 32 devices, and get back the measurement — raw samples, settings and provenance
included. It exists to show that the whole loop works on real, imperfect devices.
From here we are moving toward a bit of everything: photonic and spintronic devices,
annealers, neuromorphic chips, larger memristive arrays and living neural cultures, alongside
conventional processors. For physicists, each is a natural process put to work, with its own
noise and its own energy budget. For computer scientists, it is one more target behind a single
language, chosen by a compiler that knows what each device can and cannot do. For anyone weighing
where computing goes next, it is a way to keep adding capacity as the energy cost of conventional
computing keeps rising — without rewriting software for every new kind of hardware.
Sixteen memristive elements on two 16-pin devices, characterised one terminal pair
at a time with sine sweeps from 0.25 to 2 V and 1 Hz to 1 kHz. The curves above are
phase-averaged measurements, not simulations: current against device voltage,
pinched at the origin, with loops that shrink as the drive gets faster.
Analog Discovery Studio · 256 sweep conditions · every raw sample archived with a checksum
online · messenger
Jobs from a browser or Python
Sign in to Messenger, pick a job — a VOLT program, a circuit preset on the
instrument, or an emulator run — and download the result. The same jobs run from a
Python script with the vonneuro_messenger package.
Per-second metering · one account, browser and game
bench prototype · 32 devices
16 RC coprocessors and 16 memristors, probed remotely
Two 16-channel multiplexers share their address lines: selecting channel n connects
RC coprocessor n and memristor n at once, each with its own drive and sense. Anyone with
an account can probe any of the 32 devices from Python, one guarded measurement at a
time — a first prototype of a remotely programmable physical substrate.
Analog Discovery Studio · per-device safety checks · every run queued and metered
p-bits · hardware sampler
A 16-p-bit hardware sampler
A dedicated hardware sampler runs Gibbs sampling over up to sixteen Ising spins. Load
couplings, set a temperature, and stream spin samples through Messenger.
16 p-bits · Gibbs sampling on dedicated hardware
a small, complete example · game
One game, every ingredient
I Shall Survive is deliberately small, but it exercises the whole problem. Enemies chase
Francis on RC coprocessors measured live on the bench, and fall back to calibrated emulators
while the board is busy. They decide when to guard with a real memristor, a hardware p-bit
sampler can supply their stochastic choices, and a rescue drone flies on two RC
coprocessors. Every decision raises the questions VonNeuro is built to answer: which device
should take this task, what happens when it is unavailable, and is the physical answer still
the right one.
Godot · live bench service · live and emulated side by side, below
volt 0.1 · on the bench
Programs that run on real devices
Write a VOLT 0.1 system program — a state, how it evolves under
a drive, what to observe, and its contracts — and run it on a memristor or an RC
coprocessor. The device contract is checked first: a program that needs an adaptive
device is refused by an RC, naming the clause. Each reply carries the compiled graph,
the source hash and the energy measured at the device terminals.
Each enemy chasing Francis runs on one of the bench's RC coprocessors. Live, the board measures
that coprocessor's real response to Francis's position and the enemy moves on it (label LIVE);
between measurements, and in the emulated run, a calibrated model of the same coprocessor decides
(EMU). Same level, same route, 30 seconds each, recorded in real time.
live RC coprocessors measured on the benchemulated calibrated models, no hardware
The browser game is on request: create a Messenger
account, then ask on the Play page. The game uses the same sign-in to reach the bench.
running now Messenger, VOLT 0.1 on the
bench, VOLT processing, the instrument presets and the devices above.
roadmap The full OS described below — compiler, kernel,
thermodynamic ledger and the wider substrate list.
Messenger
The chip stays on the laboratory bench and still answers your jobs.
running now
vonNeuro Messenger: chips you can reach
Messenger is the VonNeuro device server, built on vonNeuro Messenger. It connects
laboratory hardware — including one-off and experimental chips — to accounts on the web,
without asking the laboratory to redesign the device around a new computer architecture.
You send a job; the computer wired to the instrument runs it; the results come back to you.
Sign in
Create an account on the website or inside the game. New
accounts get trial compute time, metered per second.
Choose a job
Run a VOLT program, capture from the instrument with a
circuit preset, or try the emulated experiment — from the dashboard or from Python. The
script lab sends RC or memristor pulse scripts, or Ising models for the 16 p-bit sampler, to the
bench from the browser, and hands you the same script as Python.
Get the results
Follow the job live, then download its files: the
program reply, or the raw scope samples with every setting and device identity.
volt_runRun your own VOLT 0.1 program on one of the 32 bench devices: memristor:N or rc:N.
volt_processRun an installed VOLT processing program on your inputs; returns result.json.
messenger_instrumentCapture from the Analog Discovery Studio, including guarded I–V sweeps of any memristor in the array.
volt_experimentThe game's emulated spiking experiment, without hardware.
# git clone github.com/vonneuro/messenger (access on request), then: pip install -e messengerfrom vonneuro_messenger import MessengerClient
c = MessengerClient("https://series-marina-gigantic.ngrok-free.dev")
c.login("you", "your-password")
# a VOLT 0.1 program, run on memristor 15 of the bench
program = """
system memristor_evolve(u: real) {
state material: adaptive;
evolve material for 10 ms using drive.interval(u);
observe response: real from material.terminal_current;
return response;
execution { intent = evolve; output = response; }
device { dialects = [dynamical, adaptive];
required_capabilities = [drive.interval, observe.terminals]; }
thermodynamics { process_boundary = "drive_to_observation"; }
}"""
reply = c.volt_run(program, {"u": 0.5}, "memristor:15")
print(reply["result"]["value"]) # +5.6e-08 A, measuredprint(reply["measured_energy_j"]) # 8.3e-11 J at the terminals# the same program on an RC is refused before anything is driven
c.volt_run(program, {"u": 0.5}, "rc:2")["error"]
# 'device.dialects: adaptive not a dialect of rc (dynamical)'
Get the Python client
One form gets you both: a Messenger account with an hour of bench time, and access
to the private repository github.com/vonneuro/messenger with the
Python client, the examples and the manuals. We invite your GitHub account as a
collaborator; then you git clone it and run experiments on the
bench from your own computer.
1 hour of bench time per account, more on request.
The device stays in your laboratory roadmap
A lightweight adapter translates the controls and readouts already used in the lab into
a versioned VonNeuro device contract, then registers that device with vonNeuro Messenger. A Volt
program can target it as a remote backend, while results return with the calibration,
timing, provenance and energy evidence available for that run.
connect
Keep the existing control stack and expose only the operations and measurements the chip already supports.
describe
Publish capabilities, parameter ranges, topology and current calibration as a machine-readable contract.
run
vonNeuro Messenger receives a compiled job, dispatches it to the laboratory device and returns outputs with its evidence record.
vonNeuro Messenger supplies the online endpoint, registry and job path. The scientific
claim still comes from the device contract and the evidence reported by the hardware.
From chip discovery to a working backend roadmap
vonNeuro Messenger also provides the development loop for processors that do not yet have a settled
programming model. A prototype can begin with a partial device contract. Characterisation
runs then reveal which controls, observables and dynamical regimes are reproducible enough
to support computation, while the digital reference shows what the chip gains and where it
departs from the intended model.
discover
Explore relaxation, sampling and driven regimes to find useful computation in a new physical device.
characterise
Map response, noise, drift, stability, latency and energy evidence across the chip's operating range.
develop
Refine controls, calibration and compilation together, then promote the result into a versioned backend.
The same path supports a one-off research chip, successive fabrication
revisions and a production device: connect it, measure it, formalise its contract, and
improve the hardware against executable computational tests.
Regimes
The semantic core is small on purpose. Everything reduces to these three.
Today, small instances of each: Ising objectives, the hardware Gibbs sampler, driven memristor and spiking emulators.
Three ways matter can be useful
Most stacks assume the second and third are approximations of the first. They
aren't. A sampler is not a failed optimiser, and a driven network held away from equilibrium
is not a relaxation that hasn't finished yet.
minimise / relax
Descend a landscape
Objectives, ground states, fixed points. The program declares the energy and the
tolerated gap; the backend picks the schedule and reports where it landed.
Inference, marginals, low-energy ensembles. The contract is distributional — total
variation, effective sample size — so devices that make randomness differently can
still be compared.
Continuous-time dynamics under external drive: reservoirs, memristive self-organisation,
analog circuits, limit cycles and hysteresis. No energy function is required, and none
is invented.
memristive networks · neuromorphic · analog · photonic · living tissue
Wetware
The driver contract asks three questions. Living systems can answer them.
roadmap
Physical includes biological
A cell was running a driven, noisy, dissipative computation long before anyone
built a chip to imitate one. Nothing in the semantic core mentions silicon. A backend
qualifies if it can report its state, accept a drive, and characterise its own noise — and
tissue can do all three. What changes is the timescale, the drift, and how honestly the
energy can be measured.
neuronal culture
Neurons on an electrode array
State
Population activity across the electrodes
Drive
Closed-loop stimulation, patterned in time
Readout
Declared observables over a response window
Non-stationary over hours. The device contract is re-fit continuously, not assumed.
reaction network
Molecules in solution
State
Species concentrations, strand occupancy
Drive
Fuel species, temperature, flow
Readout
Fluorescence or sequencing at declared times
Seconds to hours per run. Latency contracts are the binding constraint, not accuracy.
gene circuit
Regulation inside cells
State
Expression levels across a population
Drive
Inducers, light, growth conditions
Readout
Distributional — the population is the sample
Intrinsically stochastic, so it lowers naturally to a sampling contract.
Living backends are held to the same contracts and the same honesty. Dissipation
is metabolic and only estimated, so the ledger marks it modelled
rather than measured, and refuses comparisons across boundaries it cannot justify. Protocol,
provenance and approval constraints are part of the device contract, not an afterthought.
Architecture
L5 → L0. Meaning at the top, matter at the bottom.
Each layer is tagged with what exists today.
The stack, meaning to matter
Compilation here is not translation into machine instructions. It is a
model-conditioned transformation: program meaning plus contracts plus the current device
model, producing an executable physical process and the record of what that cost in
assumptions.
L5
Volt
volt · voltc VOLT 0.1 parser
Declare state spaces, intent, and three contracts: what counts as correct, what
thermodynamic description holds, and what the device must support. Today: driven
system programs and processing programs; the wider syntax is planned.
L4
Semantic graph
.vng compiled from VOLT
A serialisable representation of maps, dynamics, distributions, objectives,
measurements and composition — the portable object, and the thing that outlives any
one front end.
L3
Passes
check · analyse · lower · partition contract checks only
Contract checking, the thermodynamic analysis pass, algorithm selection, and splitting
a program across two modalities without hiding conversion and communication costs.
L2
Kernel
vnk roadmap
Event-driven scheduler, capability-based device isolation, the device registry,
remote endpoints, and the ledger that meters every run. Today Messenger provides the
remote job path and per-second metering; the kernel itself is not built.
L1
Device contract
vn-hal/* schema + maturity A0–A5
A versioned, machine-readable statement of native operations, connectivity, parameter
ranges, noise, timing, calibration state and available energy measurements. Compilation
targets a device instance at a time; when calibration drifts, the runtime
recompiles and your source doesn't move. Today: contracts and capability checks exist;
drift-driven recompilation is planned.
Stochastic bits, annealing hardware, adaptive networks, spiking silicon, analog and
photonic operators, cultured neurons and reaction networks — or a digital reference
that simulates any of them for when you need a baseline you can trust.
Language
Files end in .volt · VOLT 0.1 parser and VNG compiler today
roadmap
The first three tabs show target syntax. memristor_evolve.volt compiles and runs on the bench today.
State the intent. Declare the contracts.
Every program carries four things: mathematical intent, a computational
contract, a thermodynamic contract, and the device requirements. The last two are what let a
run on a p-bit fabric and a run on a crossbar be compared honestly — or declared
incomparable.
// target syntax (planned) · sample — the target is a distribution, not a single answermodel infer(y, W, b) {
latent z: binary[W.rows];
energy E(z; y) = -0.5 * z' W z - b(y)' z;
sample z ~ boltzmann(E, beta);
return marginal(z), samples(z);
}
execution {
total_variation <= 0.05;
effective_samples >= 1000;
stochastic = required;
}
// the compiler will not assume annealer output is Boltzmann.// that claim has to come from the backend, with calibration evidence.thermodynamics {
input_distribution = data.y_distribution;
process_boundary = load_to_sample;
lower_bound = mismatch_cost;
}
// target syntax (planned) · evolve — driven dynamics, never asked to settlesystem classify_stream(u, target) {
state x: real[n] @node;
parameters theta: device_controls;
evolve dx/dt = F(x, u, theta) for T @drive(periodic, f=2.4kHz);
observe y(t) = C x(t);
train readout C tominimise loss(y, target);
}
execution {
latency <= 5ms;
accuracy >= 0.95;
device_noise = allowed; // hysteresis and memory stay in the model
}
thermodynamics {
process_boundary = initialise_to_readout;
time_partition = measurement_grid; // finer grid, tighter bound
coarse_graining = declared_observables;
steady_state = nonequilibrium; // no detailed balance claimed
lower_bound = mismatch_cost;
}
# illustrative output — the ledger and vnstat are not built yet; figures are examples# the ledger: what it cost, and what it could not have cost less
$ vnstat --run 4417 --watch
program max_cut substrate pbit0 (FPGA, 4096 p-bits)
regime minimise + sample boundary encode→readout
──────────────────────────────────────────────────────────────────────
samples 2,000 objective gap 0.014 contract met
wall 184 ms latency ok
──────────────────────────────────────────────────────────────────────
measured dissipation 41.2 mJ (board rail, ±3%)
mismatch-cost bound 9.7 mJ (T = 300 K, prior = anneal_family)
ratio to bound 4.2×
entropy production 0.043 k_B / update
bound status preserved through embedding
──────────────────────────────────────────────────────────────────────
vs run 118 (xbar0) not comparable — different process boundary
(readout coarse-graining differs; narrow or re-declare)
// runs today · VOLT 0.1 · compiled to .vng, run on a memristor or RC of the bench via volt_runsystem memristor_evolve(player_offset: real) {
state material: adaptive;
evolve material for10 ms using drive.interval(player_offset);
observe response: realfrom material.terminal_current;
return response;
execution {
intent = evolve;
output = response;
tolerance = 0.05;
}
device {
dialects = [dynamical, adaptive];
required_capabilities = [drive.interval, observe.terminals];
calibration = current_epoch;
}
thermodynamics {
process_boundary = "drive_to_observation";
energy_class = uncharacterized; // declared honestly: not measured yet
}
}
minimise · sample · evolve
The three intents of the semantic core. A program says which one it means, and the
conformance test follows from that — an objective gap, a distributional distance, or
a tolerance on declared observables.
execution { … }
What counts as a correct result. Stochasticity, admissible approximation, precision,
confidence, latency. A backend that cannot meet it is rejected at compile time, with
the failing clause named.
thermodynamics { … }
The process model, input distribution, prior, boundary, time decomposition and
coarse-graining. Without these, a joule figure is not a claim about anything.
steady_state = nonequilibrium
Says the run is held away from equilibrium by an external drive. Detailed balance is
not assumed, so the analysis uses the driven forms and the runtime tracks entropy
production rather than energy descent.
Physics
Stated where each result holds — and where it stops.
roadmap
Learning and accounting, without pretending
Backpropagation asks matter for an exact reverse pass over stored activations.
These rules ask only for what physical systems already do: settling, fluctuating, being
driven, and dissipating.
Contrastive equilibrium
ΔW ∝ (1/β) [ ⟨s sᵀ⟩clamped − ⟨s sᵀ⟩free ]
Settle twice, subtract the correlations. Every term is available at the coupling
itself, so the update runs inside the array with no activation tape.
Applies to relaxation programs only
Driven, dissipative learning
σ = Σt J(t)·F(t) / T > 0
When the system is held out of equilibrium there is no free phase to contrast against.
Updates come from correlations along the driven trajectory, and the cost is a
steady entropy production rate rather than a descent that ends.
For a fixed stochastic map, actual input distribution and process-dependent prior, the
drop in KL divergence lower-bounds entropy production. It is the first analysis the
compiler implements, and it is why the prior has to be declared.
Reported in kB, and in joules under stated T
Hysteresis is data
Wdiss = ∮ h dm · ẋ = αx − βV(t) + ξ(t)
Memristive elements have internal state, drift and loop area. VonNeuro models them
explicitly and plans pulse trains against the device's own dynamics instead of assuming
a write lands where you asked.
Calibrated at boot · re-fit on drift
Noise as a resource
⟨e−βW⟩ = e−βΔF
Fluctuation identities of Jarzynski–Crooks type turn device noise into free-energy
estimates, so the runtime samples with the hardware's randomness instead of spending
energy suppressing it.
Anneal schedules · free-energy readout
Certified descent, where it applies
dE/dt ≤ 0 · ‖st+1 − st‖ → 0
For programs that declare an energy, the compiler checks the update against it and
emits runtime assertions where it can't decide statically. Programs that declare no
energy get observable tolerances instead — not a fake Lyapunov function.
A real sequence: each step either keeps the bound or it doesn't.
roadmap
Every lowering says what it cost you
A thermodynamic provenance graph travels with the program. At each
transformation the compiler must state whether the bound survives — and a run that ends in
an invalid comparison is a useful scientific result, not a failure to be papered over.
Source
Declared boundary
Input distribution, prior family, process start and end, coarse-graining.
bound stated
Lowering
Minor embedding
Logical spins become chains of physical qubits; the state space changes shape.
recomputed
Schedule
Finer time grid
Evaluating the process at higher temporal resolution tightens the bound.
strengthened
Readout
Spatial coarse-graining
Variables removed at readout need backend justification before bounds compare.
weakened
Compare
Cross-substrate
Different boundaries or priors means the two energy figures are not the same claim.
not comparable
Support
What runs where, in which regime, and how good the energy evidence is.
roadmap
Planned backends. Today's bench: 16 RC coprocessors and 16 memristors multiplexed, LED–RC, a hardware p-bit sampler, via Messenger.
Cross-platform, stated plainly
The first five rows run today. The rest are the backends the same semantic
graph is designed to reach: what changes is the native regime, how much the compiler has
to approximate, and whether dissipation is measured on a rail or only modelled.
Substrate
Driver
Native regime
Energy evidence
Status
16 memristors (devices 22, 23) on a multiplexer, Analog Discovery Studio
vn_hal · Messenger · VOLT 0.1
evolve
Terminal energy per run (∫V·I dt)
measured
16 series-RC coprocessors on a multiplexer
vn_hal · Messenger · VOLT 0.1
evolve
Source energy per run (∫V·I dt)
measured
LED–RC circuit
vn_hal · Messenger
evolve
Voltage measured; energy not yet
measured
Hardware p-bit sampler · 16 p-bits
vn_hal · Messenger
sample
None
running
CPU emulators — analog, memristor, p-bit, spiking
vn_hal/backends
sampleevolve
None
emulated
GPU — CUDA, ROCm, Metal, Vulkan
vn-hal/gpu
minimisesampleevolve
Board telemetry (planned)
planned
p-bit fabric on FPGA
vn-hal/pbit
sampleminimise
Rail measurement (planned)
planned
Quantum annealer / Ising machine
vn-hal/anneal
minimisesample
Service-reported
planned
Event-driven neuromorphic ASIC
vn-hal/spike
evolvesample
On-chip counters
planned
1T1R memristive crossbar
vn-hal/xbar
minimiseevolve
Rail measurement
planned
Self-organising nanowire mesh
vn-hal/mesh
evolve
Probe-limited
research
Photonic / analog linear operator
vn-hal/optic
evolve
Modelled only
research
Neuronal culture on MEA
vn-hal/culture
evolvesample
Metabolic, modelled
research
Molecular / DNA reaction network
vn-hal/molec
sampleevolve
Modelled only
research
Engineered gene circuit
vn-hal/genet
sample
Modelled only
research
The GPU backend is not a consolation prize planned
It is where most people will start, where large instances actually fit, and it is the
reference every physical run gets compared against. All three regimes are native.
minimise
Thousands of instances relaxed at once; anneal schedules run as
batched tensor ops, with the objective gap checked per instance.
sample
Independent chains in parallel, held to exactly the distributional
contract a p-bit fabric has to meet — same test, different machine.
evolve
Stiff and non-stiff integrators for driven dynamics, respecting the
declared measurement grid so the time decomposition stays valid.
CUDA, ROCm, Metal and Vulkan · multi-GPU sharding for graphs that outgrow one
board · board telemetry feeds the ledger, so GPU runs carry measured dissipation rather
than a model — which is what makes them usable as the baseline.
Today: Python (Windows-tested) for the bench, VOLT tools and the Messenger
client; the Messenger server runs anywhere Python and FastAPI do. Planned: Linux, macOS
and WSL2 hosts, bare metal on arm64 and riscv64, and C, Python and Rust bindings.
Neuromorphic backends are meant to lower through existing intermediate layers rather than
around them.
Reach real matter now. The full OS comes next.
Sign in to Messenger and run a VOLT program or a measurement on our bench today. Then the
roadmap: install the toolchain, run the digital reference on your laptop, scale across GPUs,
and point the same semantic graph at a p-bit fabric, an annealer, a crossbar, or a culture.