Skip to content

Numax

Run WebAssembly modules. Keep state local. Let CRDTs handle the rest.

What is Numax

Numax is a small, portable runtime for distributed applications. You write a WebAssembly module. Numax runs it in a sandbox, gives it a local key/value store, and keeps that state in sync across nodes using CRDTs and gossip. WASM execution is powered by Wasmtime.

Three things, only three

  1. Sandboxed WebAssembly execution. Your code runs isolated through Wasmtime, on any host that speaks WASM. Rust today, more guest languages on the way through the Component Model.

  2. Local embedded datastore. State lives next to the code in a durable key/value store using sled.

  3. CRDT sync over gossip. Peers exchange operations and converge automatically. You don’t write reconciliation code.

If terms like WASM, CRDT or gossip are new to you, start with Foundations. It is the short glossary we wish every distributed runtime had.

What you can build today

The runtime ships with seven tiny examples, usually under 100 lines each. They prove it works, give you something to copy, and make every replication primitive concrete. Treat them as starting points, not the ceiling.

What you can really do with this

With the same building blocks people are already imagining:

  • Apps that follow you between devices - notes, lists, trackers that work offline and just sync.
  • Things you make together in real time - docs, whiteboards, small multiplayer games.
  • Software that keeps working when the network doesn’t - point-of-sale, edge inventory, festivals.
  • Sensors and devices that talk to each other - homes, greenhouses, weather stations, fleets.
  • Configuration and feature flags that propagate themselves - change once, every node picks it up.
  • …and a lot of things we honestly haven’t thought of yet.

That last one is the point. If your idea sounds like “many people or devices sharing something that always agrees with itself in the end”, Numax is probably one of the simplest tools you have for the job today.

Built something? Show us.

Serious, silly, half-finished - doesn’t matter. If you wrote it, we’d love to see it on the Showcase.

Where we’re going

The 0.1.x line is a series of small, stable steps toward v0.2.0 - the version we want to recommend without footnotes, for any criticality. The compass:

  • Dynamic peer discovery - mDNS, DNS-SRV, file-watch, then SWIM membership and adaptive K-fanout gossip. No more --peer 1.2.3.4 everywhere.
  • Reactive modules - long-running event loops with on_remote_op, on_tick, on_peer_connected, on_message, and HTTP handlers. run() one-shot stays, but it stops being the only model.
  • Hot reload - replace a module live without dropping peer connections or losing CRDT state.
  • Capability-based security - per-module policies with deny-by-default capabilities and resource quotas (CPU, memory, ops/s, bytes/s). Multi-tenant safe.
  • Operability - snapshot, restore, replay, diff, op-log compaction, deterministic mode for reproducible debugging.
  • Built-in dashboard and TUI - six focused views for cluster, CRDTs, op flow, convergence health, throughput and modules, plus a nx top TUI for SSH-only setups.
  • Component Model + WIT - a stable, multi-language ABI. Rust, Go (TinyGo), JavaScript and Python guests all converging on the same CRDT.

The full plan, version by version, lives in the Roadmap. Roadmap PRs are as welcome as code PRs.

Try it. Break it. Tell us.

Numax is in the moment where focused feedback shapes the project the most.

Apache 2.0. One door, currently open.