It all runs in your browser โ there's no app to install. Your video is encrypted on your device before it ever leaves, so:
No accounts. No server-side list of who's streaming.
Two browsers, one broker, a relay fleet. Follow the numbers. Notice that the content key lives only in the share link and is derived on each device โ nothing in the middle can decrypt your video.
#k=) that will live only in the link.CK = HKDF(#k=, salts) โ computed in the browser, sent nowhere.#k= from the URL.CK, independently, in the browser.Everything in the path is one of these. Only one of them is a secret.
pk_โฆPublic publishable key. Identifies a tenant for quotas/limits; can mint relay tokens but can't decrypt. Ships in the page.
node idAn Ed25519 public key (base32). The stream's identity and the relay track name. Public.
origin EIDWhich relay holds the origin, so a viewer's edge knows where to pull from. Routing only; public.
salts + epochPublic HKDF inputs (a global kill-switch salt โ a per-stream salt). Rotating one re-keys the stream.
JWTA short-lived, per-broadcast relay token that authorizes the connection (publish or subscribe scope). Not a content key.
#k= โ CKThe secret. 32 bytes in the link fragment (never sent to a server) โ AES-256-GCM key via HKDF. Held only by the two browsers.
The design makes every party in the middle either content-blind or removable.
| Party | Can see | Never sees |
|---|---|---|
| Broker (tinymoq.com) | node id, tenant pk_, public salts, coarse geo; mints tokens | your #k=, the key CK, your video & audio |
| Relay fleet | a connection token, encrypted (unreadable) frames, the catalog (codec/resolution) | your #k=, the key CK, your video & audio |
| Someone with the link | everything โ the link carries #k= | โ (share it carefully) |
| Someone without the link | at most scrambled, unreadable data | anything decryptable |
Each page loads exactly two pieces of JavaScript โ on purpose.
earthseed.js
โ one unminified, documented file that runs in the browser as-is (no build step). It does
capture, encode, encrypt, decrypt, decode and render. What you read is what runs.
@moq/net
(Media over QUIC), loaded directly from its published package at a pinned version.
We don't vendor or modify it โ verify it upstream.