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
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-hostableImportant 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 traversalPeer 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, HuskyWhy 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
- GitHub: https://github.com/kushal1o1/ZeroRelay
- Landing Page: https://0relay.vercel.app/landing
- Live Demo: https://0relay.vercel.app
- Architecture Deep-Dive: ARCHITECTURE.md
- README: README.md
MIT License

답글 남기기