Core idea: file bytes never pass through the server. The server only does WebSocket signaling (Cloudflare Workers + Durable Objects), while the actual transfer happens peer-to-peer over a WebRTC DataChannel.
It works for: - browser ↔ browser - browser ↔ terminal - terminal ↔ terminal (via an npx CLI wrapper)
CLI quick start: - npx pairlane send /path/to/file - npx pairlane receive <ROOM_ID_OR_URL> --output-dir ./downloads
Security: - Optional E2E encryption (AES-GCM). The key lives in the URL fragment (#k=...) and is never sent to the server.
Demo: https://getpairlane.com/ Repo: https://github.com/kiyo-e/pairlane
Notes: - No TURN by default (STUN-only), so some strict NAT/corporate networks may fail. - Very large files can hit browser memory constraints depending on the environment/implementation.