I built an ephemeral P2P chat with WebRTC, without servers

zRinexD 15 points 12 comments March 16, 2026
ephemchat.vercel.app · View on Hacker News

Discussion Highlights (8 comments)

zRinexD

I wanted to be able to talk to anyone in the world without relying on any company's servers. No censorship, no rules, no limits except the ones I set in my own room. So I built this. No signup, no registration. Just create a room with a password, share the code, and anyone can join directly. Everything is peer-to-peer, ephemeral, and disappears when you close the tab. Would love to hear what you think. Code is open source. Link: https://ephemchat.vercel.app/ Source code: https://github.com/zzrinexd/EphemChat

atmanactive

This is great, thanks! Would you accept a Github pull request to translate it to English and several other languages?

michaelsbradley

What about use of TURN, entirely avoided?

elwebmaster

You should mention that it uses PeerJS. That's not without servers. PeerJS runs their own signaling server which you are relying on to connect your peers.

indigodaddy

- does the room vanish after the last user exits? Seems like it? - can the room code be tacked on to the url/slug?

nikisweeting

THis is not without servers, you still use a signaling server for TURN. If you want true serverless you need a side channel to copy the offer/response, e.g. tell the user's to copy paste them as base64 thorugh whatsapp manually or something ( https://github.com/pirate/webrtcchat ).

iamnothere

Matrix was once working on something similar, I wonder what the latest status is. In general, things like this are a great way around current pushes for age verification and mandatory surveillance. Give your friends a link to this, or even a web archive via USB stick, and chat directly without intermediaries. No need to run a server. (Others pointed out you still need a TURN server. True but hopefully there’s a P2P solution for this.)

villgax

Lol do your DD properly before posting

Semantic search powered by Rivestack pgvector
3,471 stories · 32,344 chunks indexed