Meatspace Chat was a beautiful experiment from the early 2010s — a chat room where every message included a webcam GIF of you saying it. It created this incredibly present, human, silly space. Friend Chat carries that energy forward with Bluesky identity.
How It Works
Sign in with your Bluesky handle. That’s your identity. Type a message, and your webcam records a 2-second clip that goes with it. Messages are real-time via WebSockets and ephemeral — only the last 20 exist at any time. Close the tab and they’re gone.
The PDS-First Trick
Here’s the interesting part: messages don’t just live on the server. When you post, the server uploads your video to your PDS as a blob and creates a custom is.keith.fc.message record. Then Jetstream — Bluesky’s real-time firehose — picks it up and broadcasts it back to everyone in the room. The server is more of a relay than a database. Your messages are technically your data on your PDS, even though they’re ephemeral.
Videos are recorded as WebM in the browser and converted to MP4 via FFmpeg on the server for PDS compatibility. There’s no build step — Bun runs TypeScript directly and the frontend is vanilla JS.