Token-based screen sharing — companion app to Vault File Transfer.
Built with Node.js + WebSocket signaling + WebRTC peer-to-peer streaming.
- 🖥️ Share any tab, window, or full screen
- 🔑 6-letter token — share by message, email, or WhatsApp link
- 📡 Peer-to-peer via WebRTC — server never sees screen content
- 👁️ Multiple viewers can join the same session
- 🔒 No account, no plugins, no recording
- 🔗 Direct watch link support (
/watch?token=XXXXXX) - 🎨 Matches Vault file-sharing design system
npm install
npm startServer runs on http://localhost:3001 by default.
Set PORT env var to change the port.
- Host opens the app → clicks "Share screen" → browser prompts for screen/tab/window selection
- Server assigns a 6-letter token and the host sees it
- Host shares the token (or the watch link) with viewers
- Viewers enter the token → WebRTC connection established directly to host
- When host stops sharing, all viewers are disconnected automatically
Host browser ──WebSocket──▶ Node.js server ◀──WebSocket── Viewer browser
(signaling only — SDP offer/answer + ICE candidates)
Host browser ─────────────────WebRTC──────────────────▶ Viewer browser
(actual screen video — peer to peer, encrypted)
| Variable | Default | Description |
|---|---|---|
PORT |
3001 |
Server port |
Works on any Node.js host (Render, Railway, Fly.io, etc.).
For cross-network connections, set up a TURN server (e.g. Metered.ca) and add credentials to the ICE_SERVERS array in server.js.
Both apps share the same design system. Run them on different ports or subdomains and link between them in the nav.