Architecture

A capability mesh in layers. The generic, mandatory primitives — Identity (L0), Transport (L1), Content (L3) and Naming (L4) — have frozen semantics. Money (L2) is pluggable (an ecash / settlement adapter per community); Compute (L5), Coordination (L6) and Trust (L7) are swappable capabilities on top.

LayerResponsibilityImplementation
L0 Identitykeys, sign/verify (self-certifying NodeId)ed25519 + DAG-CBOR (src/identity.rs)
L1 Transportdial-by-key, QUICiroh 1.0 (src/net.rs)
L2 Moneyhold/transfer/redeem bearer ecashecash + payments (src/ecash.rs, src/payment.rs)
L3 Contentcontent-addressed blobs (put/get)BLAKE3 store (src/blob.rs)
L4 Namingsigned records, mutable pointers (publish/resolve)signed Spaces (src/space.rs)
L5 Computesandboxed, fuel-metered code (run)Wasmtime 45 (src/capsule.rs)
L6 Coordinationscoped agreements binding capsule + payment (agree)Pacts (src/pact.rs)
L7 Trustreplay a receipt -> same fuel/output (verify)verifier role (src/node.rs)

The spine

The core crate is small and flat — one error type, no hidden state.

src/identity.rs   ed25519 keys; canonical-payload sign/verify (verify_strict)
src/blob.rs       BLAKE3 content store; verify-on-read
src/capsule.rs    deterministic, fuel-metered, deny-by-default Wasmtime
src/space.rs      signed records: per-author seq + TTL prune
src/pact.rs       ServiceCard / Quote / Receipt + the JobPact transition engine
src/payment.rs    PaymentAdapter trait + LocalCredit
src/ecash.rs      real Chaumian ecash (BDHKE on Ristretto255)
src/wallet.rs     Ed25519-signed-transfer ledger (alt payment adapter)
src/node.rs       a node: requester / provider / verifier roles
src/net.rs        iroh QUIC transport: pool, rpc, fetch_blob, serve
src/proto.rs      wire protocol: Request / Response (canonical DAG-CBOR)
src/llm.rs        Llama-2 inference, run as a WASM capsule (weights via env.blob_read)
src/bin/verse.rs  the CLI

Not layers

Two things people expect to find in the stack are deliberately not numbered layers:

Money (L2) is the one durable island, but only the mint’s clearing/reserve is a small optional trusted island that enforces scarcity. The bearer coin itself is the L2 foundation: possession of the bytes is the balance, so a node that cannot run Compute can still hold Money.

One binary, many roles

The same binary acts as mint, provider, verifier, registry, store, stage, bridge, guardian, or client. (There is no model role — inference runs as an ordinary capsule, so its receipt is replay-verifiable like any other.) Roles are capabilities, not separate protocols. A node reaches others only through the signed protocol — capsules run deny-by-default (no ambient network, wallet, or clock).

Continue to The protocol.