Skip to content

// erlang-inspired · webassembly · rust

RUSMAn Erlang-inspired WebAssembly runtime in Rust

Isolated lightweight processes, fault tolerance, per-actor sandboxing, HTTP/WS/SSE serving, and secure clusters you can hook into live — written in Rust, TypeScript, or Go.

~2.4M
spawns / sec
~21M
msgs / sec
3
guest languages
deny
by default
// the model
01

Processes as Wasm instances

Each process is an isolated Wasm instance — own stack, heap, syscalls, and permissions. One crash can never corrupt another.

02

Write blocking code, get async

Wasmtime fibers suspend a guest’s “blocking” call while the host awaits. Millions can wait for almost nothing.

03

Massive, fair concurrency

Tokio tasks multiplexed over a few threads, with epoch interruption for BEAM-like fairness. ~2.4M spawns/sec.

04

Fault tolerance

Traps become process exits; links and monitors propagate failure so supervisors restart exactly what broke.

05

Serve HTTP, WebSocket & SSE

A component becomes a high-throughput web server — a fresh sandboxed instance per request, one process per connection. Head-of-line blocking is impossible by construction.

06

Rust, TypeScript & Go

Write a component in any of three languages over one actor wire, and they interoperate. A Rust client calls a TypeScript service, fully typed.

07

Hook into a live cluster

Nodes connect over QUIC + mutual TLS for cross-node messaging — and you attach a live JavaScript REPL to a running node, like iex --remsh.

08

Default-deny capabilities

Every process gets nothing unless granted — capabilities are explicit, scoped, revocable.

09

The OTP core stands alone

Processes, mailboxes, links, and supervisors — implemented as a runtime-agnostic core.

MIT licensed