Mixnet playground
This playground runs Nym's browser TypeScript packages against the live mixnet. It covers both integration models:
- Proxy, via the mix-* family: bring the shared tunnel up once, then drive
fetch, DNS, WebSocket, stress and file-download traffic through it to clearnet destinations. - End-to-end, via the raw messaging SDK: Sphinx-encrypted messages between two Nym clients, with nothing exiting to the clearnet.
Some sections send the same request over the tunnel and over the clearnet, so you can compare the two.
HTTPS / DNS / WebSockets
Watch the Network tab. Open DevTools → Network before you connect. Once
setupMixTunnel reports ready, every tunnel operation here (mixFetch,
mixDNS, MixWebSocket) adds no new request to that tab: it is multiplexed
inside the single WebSocket to the entry gateway. Only the clearnet comparison
buttons add rows. (Setup also fetches the network topology over HTTPS and
refreshes it periodically, so those nym-api calls and the gateway WebSocket are
the only clearnet requests you will see.) Your real traffic never leaves the
browser as an identifiable, per-destination request.
Everything here runs client-side over the live Nym mixnet. The first
setupMixTunnel is slow (a few seconds): it loads the WebAssembly client,
registers a fresh client identity with a gateway, and discovers an IPR exit.
Later calls reuse the tunnel.
Advanced options
Press setupMixTunnel to bring up the tunnel.
disconnectMixTunnel you must reload to reconnect, and each load uses a fresh client identity.Idle.
Idle.
Idle.
Idle.
Idle.
Raw mixnet messaging
The sections above share one smolmix tunnel and exit to the clearnet through an IPR. The Messaging SDK (@nymproject/sdk) is the other model: end-to-end mixnet messages between two Nym clients, where you control both ends and nothing exits to the clearnet. It runs a separate wasm client, so it loads on demand:
@nymproject/sdk-full-fat and sends a message to a Nym address through the mixnet (defaults to your own address). This loads a separate wasm runtime and connects its own client, so it is opt-in.Press Connect to create a mixnet client.
Source and examples
- Playground source (opens in a new tab): the React component behind this page (
MixPlayground.tsxandlib.ts). - SDK examples (opens in a new tab): standalone runnable apps, including a browser example per package (mix-fetch (opens in a new tab), mix-dns (opens in a new tab), mix-websocket (opens in a new tab)).
Per-package docs
For the API of each package, see mix-tunnel, mix-fetch, mix-dns, and mix-websocket.