Product

PeerDrift

Encrypted, ephemeral sharing of files, text and links across any device, on the web or as a desktop app.

June 26, 2026

File SharingPrivacyEnd-to-end EncryptionDesktopOpen Source

Started
26 June 2026
Status
Shipped
Signal
Instant sharing

The question

Why do we upload files to a server just to send them to a device sitting next to us?

PeerDrift started from a week of emailing myself files, watching AirDrop fail between a Mac and an Android phone, and finding that every alternative wanted an account, an upload, or one more step than the moment deserved.

Context

I move between a Mac, a Windows machine, an Android phone and an iPad, and no default tool covers all four. Cloud tools cover it by adding a middleman: the file goes up, then comes back down, even when both devices are in the same room.

Building it

PeerDrift removes the account and the waiting.

You create a room, share a 6-character code, and drop files (up to 50 MB), text snippets or links. Everything is encrypted in the browser with AES-256-GCM, using a key derived from the room code with HKDF-SHA256. The server only ever holds ciphertext, and the room and its files are deleted 30 minutes after the last activity by a scheduled cleanup job.

Joining is meant to be quick: type the code, scan a QR, transmit the code over audio, or let the room show up for other devices on the same network. No app install is required on the receiving end.

The desktop app

There is a desktop build as well as the web app. It is a Go and Wails v2 shell around the same React frontend, using the native webview on each platform, so web, PWA and desktop all run one source of truth.

Windows ships as an installer built with Inno Setup. macOS and Linux packages are built in GitHub Actions, because Wails depends on native webview libraries per platform. Every push to main builds all three and publishes them under stable asset names, so the download page links straight to the file instead of a releases page.

What surprised me

People share differently once they know nothing persists. The mental model moves from “I am uploading” to “I am passing,” and that shows up in what they are willing to send.

Most of the work went into making the interface feel instant, not into the cryptography. Encryption in the browser is a solved problem. Hiding the wait for a key derivation and a first chunk upload behind an interface that never stalls took longer.

What I learned

Removing the account requirement removed more hesitation than any feature I added.

Speed and simplicity carry the product. The encryption and the auto-expiry are what make that speed safe to offer.

← All products