A private-by-default transport

Watch the wire all day.
You still can't tell who's talking to whom.

The mixnet is an onion-routed transport. Every link runs at a constant rate with constant-size frames whether or not you're sending, so an observer sees one traffic shape at all times. Your calls and messages travel inside that shape, indistinguishable from the silence around them.

You encrypted the message.
An observer still reads who, when, and how often.

Surveillance runs on metadata. Apps that call themselves private encrypt the content and leave the pattern in the clear. The mixnet works on the pattern first: constant rate, constant size, no rhythm for an observer to read.

How it works

Four properties the protocol enforces

01 · SPHINX ONIONS

Peeled one layer at a time

Every packet is a Sphinx onion. Each relay peels one layer and learns the next hop, nothing more. No single relay sees both the sender and the recipient, and length-invariant filler keeps the packet the same size at every hop.

02 · COVER TRAFFIC

Cover around the clock

Links run at a constant rate with constant-size frames even when you have nothing to say. Flood the link or let it idle: it looks the same. A voice call and a phone in a pocket are one shape on the wire.

03 · CHAIN-ANCHORED ROUTES

Routes from a public dice roll

Your client draws each route across the stratified relay layers from a blockchain's verifiable-delay-function output: a shared random value no party can predict before it's computed or bias after, and one any node can check.

04 · NO SENDER ATTACHED

Delivery carries no from

The mixnet hands your app opaque bytes with no sender attached, by design. You and your contact authenticate each other end to end with Noise, where the network can't watch. It holds nothing that maps your social graph.

What it carries

A full messenger already rides on it

One datagram primitive, send(to, bytes), carries the whole messenger below, on iOS and macOS today. You hold a key instead of an account, and no server exists that learns who knows whom.

Messages & mediaText, photos, and voice notes, end-to-end encrypted with Noise. The app strips image and audio metadata before anything leaves your device.
1:1 voice callsFull-duplex calls over the mixnet with a jitter buffer that keeps the line smooth on a lossy route.
Push-to-talkHold to talk on a channel; Opus audio streams under the same cover as everything else.
Party linesSmall-group voice for phones and headless nodes alike. The network publishes no membership list.
File transferReliable delivery that retransmits on fresh routes until it lands, then stops.
Nothing to leakKeys stay on your device. A triple-tap emergency wipe erases everything at once.
Build & run

One primitive in, a delivery callback out

The client SDK wraps the routing core in a small Rust API with generated Swift bindings for Apple platforms: send, voice, calls, party channels, file transfer. Relays run from one container image, and each link you carry adds cover for the rest of the network.

mixnet_client::send(to: Address, bytes: …) // that's the transport. everything else rides on it.
mixnet mark

Get the Mix.

The messenger runs on iOS and macOS, and each new relay widens the cover. Use it or carry traffic for it: the wire treats both the same.