flit
Highlights
- WebRTC data channels: file bytes never touch the server, even in transit
- Android Web Share Target — 'Share → flit' works from any app's OS share sheet
- Reuses waste-go's YAW/2.1 signaling and Ed25519 identity — same anchor, same crypto, no new server
- Known devices tab: tap Connect to reconnect without re-scanning — deterministic room from sorted peer IDs
- Multi-file send with per-file accept/reject and auto-download on receipt
- In-app QR scanner via native BarcodeDetector API — no library, camera overlay with cancel
- Go CLI for headless homelab boxes — renders a QR in the terminal using Unicode block characters
- Daemon mode: persistent receiver that auto-accepts files from trusted peers, saves to a configured directory
- Watch mode: one-way folder sync — drop a file in a watched folder, it's pushed to a trusted peer automatically
- hello binds Ed25519 identity to the DTLS session — impostor can't pass even if they discover the room name
- SHA-256 verified on receipt — file is confirmed intact before it's saved
- TURN relay fallback for CGNAT/mobile, still fully E2E encrypted
A deliberately small tool for a specific annoyance: getting a file from one device to another, right now, without anything landing on a server’s disk.
Shares an anchor with waste-go — same WebSocket signaling, same Ed25519 identity model, same forward-secret handshake (YAW/2.1). flit strips out everything else (chat, mesh, presence) and replaces it with QR-based device pairing and binary file transfer over WebRTC DataChannels.
Runs as a PWA (primary — browser + Android share sheet) and a Go CLI (for headless machines). Neither stores files. Nothing persists except a local keyring of trusted device identities — remembered peers reconnect with one tap, no QR required.