OmniNode · verifiable AI computeLive on SUM Chain

Run large models across the machines you already have — settled on-chain.

OmniNode shards a model by transformer block and runs it pipeline-parallel over a QUIC mesh. Each result is verifier-signed and settled on SUM Chain — no GPU cluster, no central model host.

11
Rust crates
edition 2024
0
Memory copies
mmap → MLX
19.6ms
p95 proof verify
production MLP
2.3s
Prove time
incl. keygen
How it works

From prompt to verified response

Off-chain nodes do the compute; the chain settles the proof. A request is sharded across the mesh, model weights are fetched by content address, and a verifier attests to the result on SUM Chain.

1 · prompt + fee2 · fetch shardsmerkle_root3 · hidden_statesfloat164 · token_id4 bytes LE5 · attestationproof_root6 · verified responseSUM Chainverifier · settlementClientprompt · Ϙ feeOmniNode Aembed · layers[0:N/2]OmniNode Blayers[N/2:] · lm_headSNIP storageGGUF shards · CIDv1
  1. 1

    A client submits a prompt and pays a Koppa fee.

  2. 2

    The entry node fetches model shards from SNIP storage by content address. merkle_root

  3. 3

    Node A runs the embedding and its layer slice, then streams the hidden state to Node B. /omni/tensor-xfer

  4. 4

    Node B finishes the layers and lm_head, decodes a token, and returns it — the autoregressive ping-pong. token_id

  5. 5

    A verifier signs the result and submits an InferenceAttestation to SUM Chain. InferenceAttestation

  6. 6

    The chain records the attestation, settles escrow, and the verified response returns to the client.

What it does

Four mechanisms, honestly labeled

Compute and storage run today. Settlement is live on SUM Chain mainnet. Zero-knowledge proofs are real but deliberately staged — each mechanism carries its true status.

Live on mainnet

Compute

Pipeline parallelism shards model layers across devices, routing hidden-state tensors over a low-latency P2P mesh on pure QUIC.

QUICGPipe/omni/tensor-xfer

Consumer devices pool their unified memory to run models no single device could hold.

Live on mainnet

Storage

GGUF weights are chunked by transformer block, content-addressed (BLAKE3 → CIDv1), and moved over a 64 MiB sliding-window protocol.

BLAKE3CIDv1SNIP

No central model host. Weights are deduplicated and retrievable from SNIP.

Code-backed · dormant

Proofs

Halo2 zero-knowledge proofs of fixed-point inference are byte-deterministic and drift-checked — verified off-chain today.

Halo2no trusted setupproof_root

No trusted setup. Deliberately not yet a mainnet-eligibility signal; on-chain zk verification is future work.

Live on mainnet

Settlement

A verifier signs each result and submits an InferenceAttestation; escrow-funded settlement pays out on SUM Chain, deduplicated per session and verifier.

InferenceAttestationescrowvalidator-quorum

Live on mainnet. No bond slashing in v1 — reward denial, claim withholding, escrow refund; disputes by validator quorum.

Apple Silicon

A weight is never copied

On unified-memory hardware, a shard travels from disk to the GPU without a single copy. The mmap the operating system makes is the same memory Metal computes on.

  1. Rust mmap — GGUF shardFile mapped into unified memory; CPU and GPU share the same physical RAM.
  2. PyO3 __getbuffer__The raw pointer is exposed to Python over the buffer protocol — no copy.
  3. NumPy frombuffer()Wraps the pointer as an ndarray in place.
  4. MLX mx.arrayMetal reads tensors directly from the same physical memory.
  5. GPU inferenceZero memory copies from disk to compute.
The system

Eleven crates, strictly bottom-up

A Rust workspace, edition 2024. Networking and storage sit at the base; a zero-copy bridge and pipeline coordinator sit above; the proof, chain, and operator surfaces sit at the top.

Explore the architecture

Protocol & operator surface

omni-zkml

Proof-artifact substrate, verifier attestation envelope, and the chain-client abstraction.

omni-sumchain

SUM Chain JSON-RPC adapter — attestation submit + settlement read / claim / dispute.

omni-contributor

Off-chain contributor inference node — jobs, sessions, integrity-evidence chains.

omni-node

The operator CLI binary — listen, shard, fetch, verify-proof, settlement.

omni-proofs-halo2-reference

4→8→4 int16 Halo2 reference proof (halo2-mlp-v1).

omni-proofs-halo2-production-mlp

16→32→16→8 int16 Halo2 production proof (production-fixedpoint-mlp-v1).

Bridge & coordination

omni-bridge

PyO3 native extension — zero-copy shard access exposed to NumPy / MLX.

omni-pipeline

Pipeline-parallel coordination — GPipe scheduling, hidden-state tensor transport.

Networking & storage

omni-net

P2P mesh on libp2p 0.55 — QUIC, mDNS discovery, Gossipsub, shard & tensor request-response.

omni-store

Zero-copy GGUF parsing, layer-wise chunking, BLAKE3 → CIDv1 addressing, SNIP V2 store.

Shared foundation

omni-types

Shared types, errors, config, and the Phase-5 attestation / commitment types.

Proofs & settlement

Real proofs, and an honest boundary

Two layers are easy to conflate. Verifier attestations settle escrow on SUM Chain today. The zero-knowledge proof path is real and byte-deterministic — but deliberately not yet a mainnet-eligibility signal.

production-fixedpoint-mlp-v1

verify_p95
19.6 ms
verify_p50
17.96 ms
prove_canonical
≈ 2.3 s
end_to_end
≈ 3.0 s
proof.bin
7,744 bytes
params.bin
131,140 bytes
halo2_k
11 · 2048 rows
trusted_setup
none (IPA)

Halo2 over the Pasta curves, IPA, no trusted setup. Proofs are byte-identical across hosts; the verifier re-derives circuit and verifying-key identity and refuses to load on any drift.

Settlement — live on SUM Chain mainnet

A verifier signs each result and submits an InferenceAttestation, one per (session_id, verifier). Escrow-funded settlement pays out on-chain. v1 has no bond slashing — the levers are reward denial, claim withholding, and escrow refund, with disputes resolved by validator quorum.

zkML proofs — code-backed, deliberately dormant

Production proofs verify off-chain today, but the mainnet-approved proof-system list is empty by design: the chain records proof artifacts opaquely and performs no on-chain zk verification. Safe for staging and evidence — not yet a mainnet attestation-eligibility signal.
Read the proofs & settlement detail
Live demo

Two Macs, one model, zero central servers

Phase 4 runs real autoregressive inference across a LAN: one machine holds the embedding and first layers, the other holds the rest and the lm_head, and a hidden-state tensor ping-pongs between them over QUIC.

Explore the live model on SNIP

Browse the exact content-addressed shard-set — by merkle_root — that the network serves from SNIP storage.

Autoregressive ping-pong

SenderMachine A
  • embed_tokens — token embedding
  • layers[0:N/2] — first half of the transformer
  • KV cache — independent, synced by order
~215 MB RAM · TinyLlama 1.1B
ReceiverMachine B
  • layers[N/2:] — second half
  • norm + lm_head — final projection
  • argmax — greedy decoding
~215 MB RAM · TinyLlama 1.1B
Senderhidden_states (float16) →Receiver
Sender← token_id (4 bytes LE)Receiver

Wire discriminator: hidden_dim == model_size→ activation tensor  ·  hidden_dim == 1 → token id

quick start
# Prerequisites
pip install mlx mlx-lm transformers rich

# Machine A — sender: embed + first half of the layers
python showcase_tui.py sender /path/to/model.gguf

# Machine B — receiver: second half + norm + lm_head
python showcase_tui.py receiver /path/to/model.gguf
Momentum

Latest from the protocol

Recent, dated milestones from the OmniNode-Protocol repository.

Full changelog
Docs

Settlement & proof posture, corrected against implementation

Audited the public posture: verifier attestations and escrow settlement are live on SUM Chain mainnet; Halo2 zkML proofs verify off-chain and are deliberately not yet a mainnet-eligibility signal. The site now states both precisely.

Protocol

Settlement dispute write path — open and resolve

Chain-authoritative OpenDispute (funder-signed) and ResolveDispute (validator-quorum over a basis-point threshold of the active PoA set). No personal resolver key; non-signing validators still count in the denominator.

Protocol

Verifier self-claim submission

A verifier submits its own ClaimReward against the InferenceAttestation it holds. No coordinator-claim and no claim-on-behalf — self-claim only, enforced on-chain.

Get started in minutes

Run an OmniNode

1

Build the operator binary

The node is open source and builds with a stable Rust toolchain (edition 2024, MSRV 1.85). Default builds pull zero chain and zero proof dependencies.

cargo build -p omni-node --release
2

Shard a GGUF model

Chunk a model by transformer block and content-address it (BLAKE3 → CIDv1) into the local SNIP store.

target/release/omni-node shard ./model.gguf
3

Listen and serve

Join the mesh over QUIC with mDNS discovery. Opt into more surface with cargo features: --features submit (attestation submit), settlement-read, settlement-submit, settlement-dispute.

target/release/omni-node listen

Read the code. Run a node. Join the mesh.

OmniNode is open source under MIT / Apache-2.0 — built in the open, from the bottom up.