Publish a live video feed into directory.sxpnet.com and watch it in any browser.
Self-contained binaries — no runtime, no dependencies to install.
chmod +x qviroh-sender-macos-arm64
# macOS quarantines downloads; clear it so Gatekeeper lets it run:
xattr -d com.apple.quarantine qviroh-sender-macos-arm64 2>/dev/null || true
chmod +x qviroh-sender-linux-x86_64
Register with the directory and hold a relay uplink. Pick a unique --name
— that is the key viewers look up.
./qviroh-sender-macos-arm64 \
--name alice \
--no-direct \
--directory-url https://directory.sxpnet.com \
--relay-host relay.sxpnet.com --relay-uplink-port 443
./qviroh-sender-linux-x86_64 \
--name alice \
--no-direct \
--directory-url https://directory.sxpnet.com \
--relay-host relay.sxpnet.com --relay-uplink-port 443
You should see [relay ] uplink connected and, every 15 s, a directory
heartbeat. The sender encodes nothing until a viewer connects — it just holds the
uplink open. Leave it running; press Ctrl-C to stop and de-register.
Open the directory and click your source, or go straight to the player:
https://directory.sxpnet.com/player?name=alice&mode=auto
The directory home page lists every live source with one-click watch links.
mode=auto tries the fastest path first and falls back automatically:
direct (P2P, UDP) → relay (UDP fallback) → ws (WebSocket / TCP 443,
for networks that block UDP).
| Flag | Meaning |
|---|---|
--name <s> | Source name viewers look up. Must be unique. (default qviroh) |
--directory-url <url> | Directory to register with. Use https://directory.sxpnet.com. |
--relay-host <host> | Relay to dial an uplink to. Use relay.sxpnet.com. |
--relay-uplink-port <n> | Relay uplink port. Use 443 (the public relay). |
--no-direct | Skip the direct door — recommended on a laptop behind NAT (see below). |
--public-host <ip> | Advertise a direct P2P door at https://<ip>:4433. Only if that UDP port is reachable from the internet. |
--fps / --quality / --width / --height | Frame generation (defaults 30 fps, q90, 640×480). |
--no-direct. The direct path is a true peer-to-peer
WebTransport connection from the browser to your machine — it only works when your sender's
UDP port is reachable from the browser (a public IP, a router port-forward to UDP 4433,
or the same LAN / loopback). Behind ordinary home/office NAT that won't hold, so the reliable
path is the relay, which both your sender and the viewer dial out to. To offer direct
anyway, drop --no-direct and pass --public-host <your-public-ip>
with UDP 4433 forwarded. (Chrome's Local Network Access will eventually show a one-time
permission prompt for a public page reaching a loopback/LAN sender; today it doesn't yet gate
WebTransport, so no prompt appears.)
SXPnet · pure QUIC / WebTransport + WebSocket fallback · no iroh · directory home