DEV Community

Cover image for ZeroRelay: Direct Browser-to-Browser Sharing - No Server Ever Sees Your Data
Kushal Baral
Kushal Baral

Posted on

ZeroRelay: Direct Browser-to-Browser Sharing - No Server Ever Sees Your Data

A fully open-source P2P mesh app for sharing text, code, notes, and files directly between browsers. No signup, no accounts, no database.


The Pain Point

You're sitting next to a colleague. You need to send them a 200MB video file.

  • Email? 25MB limit + compression
  • Drive/Dropbox? Need an account + files sit on their servers forever
  • WhatsApp/Telegram? Compresses media + stores everything on their servers
  • AirDrop? Apple-only, doesn't work half the time
  • USB? Who carries one anymore?
  • SCP/iPerf? Overkill for a quick share

ZeroRelay: Open a tab,drag the file. Done. Direct browser-to-browser. Nothing touches a server.


Demo

Zero Relay Demo


What's ZeroRelay?

A peer-to-peer mesh app where every browser connects directly to every other browser over WebRTC. The signaling server (Cloudflare Durable Object) only exchanges join/leave messages and ICE candidates - it never stores or even sees your messages, files, or avatars.

Each peer is its own database - everything lives in IndexedDB (Dexie) on your browser. When you share something, it's broadcast over WebRTC data channels directly to connected peers. There is no central storage. There is no cloud. Your data never touches a server.

Architecture

                    ┌─────────────────┐
                    │  Cloudflare DO   │  ← signaling only
                    │  (per room)      │    (join/leave/ICE relay)
                    └────────┬────────┘
                             │
              ┌──────────────┼──────────────┐
              ▼              ▼              ▼
         ┌────────┐    ┌────────┐    ┌────────┐
         │ Peer A │◄──►│ Peer B │◄──►│ Peer C │  ← WebRTC mesh
         │(Dexie) │    │(Dexie) │    │(Dexie) │     (data channels)
         └────────┘    └────────┘    └────────┘
Enter fullscreen mode Exit fullscreen mode

Each browser stores its own copy of everything in IndexedDB. When you share something, it's broadcast to all connected peers over WebRTC data channels. The signaling server never sees your messages, files, or avatars.

For full architecture deep-dive, see ARCHITECTURE.md on GitHub.


Features

Full P2P Mesh Every peer connects directly to every other - no central relay
Zero Server Storage No database, no logs, no message history on any server
No Signup or Accounts Open the app, join a room - done
Share Anything Text, code, notes, or files of any size
Password-Protected Rooms Room-level passwords enforced by Cloudflare DO
Retention Per Item Session, 5 min, 1 hour, 1 day, or forever
Open Source MIT - fully auditable and self-hostable

Important Note

Peer Discovery Works globally - anyone on the internet can see you in the room
Data Transfer Works on same LAN - messages and files flow when peers are on the same network
Cross-Network Not yet - needs a TURN server for symmetric NAT traversal

Peer discovery goes through the Cloudflare DO (WebSocket over TCP) so it works anywhere. Data transfer uses WebRTC which needs STUN/TURN to cross the public internet. Currently STUN-only. TURN support and contributions are welcome:)


Tech Stack

Layer Choice
Frontend Next.js 15 + React 19
State Zustand (in-memory + localStorage persist)
Persistence Dexie v4 (IndexedDB)
P2P Transport WebRTC (full mesh topology)
Signaling Cloudflare Workers + Durable Objects
Styling Tailwind CSS v4
Tooling Biome, TypeScript, Husky

Why Open Source?

  • Transparency - anyone can audit exactly what the server does (and doesn't) store
  • Self-host - deploy your own signaling worker if you want

Links


MIT License

Top comments (1)

Collapse
 
jyotii13 profile image
Jyoti poudel

Excited to see ZeroRelay live! I contributed to the project, and it was a great opportunity to work with WebRTC and peer-to-peer technologies. Thanks, Kushal1o1, for leading the project and sharing the journey.