Floe
Encrypted peer-to-peer file transfer for the browser, desktop, and command line
Try Floe · Documentation · Desktop · CLI · Self-hosting · Contributing
About
Floe sends files directly from one device to another over an encrypted WebRTC connection. There is no account and no upload: files are never stored on a server, so both people need to be online at the same time. The signaling server only helps the two devices find each other. When a direct path is blocked, a TURN relay carries the transfer, still encrypted end to end, up to 2 GB per relayed transfer.
Each file is checked when it arrives, against its size and, when the sender provides one, its SHA-256. A file that fails is deleted and the transfer stops (see File checks). Floe does not scan files for malware.
The desktop app and the CLI contain no analytics or telemetry. They send only two things: an anonymous byte count, which the receiving side reports to the public counter, and an update check against GitHub. The desktop app checks at most once a day, and never in the Microsoft Store build. The CLI checks only when you run floe version or floe update. Both can be turned off. The floe.one website uses cookieless, anonymous analytics and error monitoring, described in Security and privacy.
Three clients share one protocol: the web app at floe.one, Floe Desktop for Windows, and the floe CLI. Any of them can send to any other, even across different networks.
To learn more, see how it works and the docs' How a transfer works.
Quick start
Open floe.one, pick a file, and share the generated link or QR code with the receiver. No account or installation required.
The quickstart guide walks through sending and receiving your first file.
Desktop
Floe Desktop runs on Windows 10 and 11 (x64). The Microsoft Store build is signed by Microsoft and updates automatically.
Prefer a direct download? An installer and a portable build are on the download page. Setup details are in the desktop installation guide.
Request links let one person send files straight to your PC. You make a one-time link in Floe Desktop, and they open it in a browser or run floe send . The browser page is supported in current Chrome and Edge on a computer. Nothing is saved until you accept, unless you turn on Auto-accept for that link. To make a link, see Request links. If someone sent you one, see Sending through a request link.
CLI
Send and receive from terminals, servers, and scripts.
brew install --cask jannskiee/tap/floe # macOS
winget install jannskiee.floe # Windows
curl -fsSL https://floe.one/install.sh | sh # Linux, or macOS without Homebrew
Send with floe send photo.jpg, receive with floe receive olive-tiger-castle, and update with floe update. An install that Homebrew, Scoop, or winget owns updates through that package manager instead, and floe update prints the command to run.
Senders in the CLI and the desktop app produce both a short code and a browser link, so the receiver can join from any client. floe send sends through a request link made in Floe Desktop instead of creating a code. Other install channels, checksum verification, and PATH setup are covered in Install the CLI.
Self-hosting
Prefer your own infrastructure? Prebuilt images on ghcr.io bring up the full stack in two commands, with no clone and no toolchain:
curl -fsSLO https://raw.githubusercontent.com/jannskiee/floe/main/docker-compose.yml
docker compose up -d
All three clients can point at a self-hosted server. Configuration, deployment behind HTTPS, and the optional TURN relay are covered in SELF_HOSTING.md and the self-hosting docs. Request links are off on a self-hosted server until a policy file turns them on: see Turn on request links.
Documentation
The documentation covers all three clients in depth, from your first transfer to a self-hosted deployment.
The FAQ answers the questions that come up most, from transfer limits to privacy, and the troubleshooting guide starts from the symptom when something will not connect. The changelog records every user-visible change to the web app, the desktop app, the CLI, and the self-hosted server.
Contributing
Contributions are welcome. See CONTRIBUTING.md for setup instructions, environment variables, and the pull request process. If you encounter a bug or have a feature suggestion, please open an issue.
Looking for a first issue? Start a comment with /take on one of the good first issues nobody holds yet to have it assigned to you.
This project follows the Code of Conduct. To report a vulnerability, see SECURITY.md.
Support
Floe is free and open source. Contributions help cover the ongoing costs of backend infrastructure that keeps the service accessible to everyone. This includes the signaling server for WebRTC connection negotiation and room management, and the TURN relay service that provides encrypted relay for users behind strict firewalls or Carrier-Grade NAT.
Acknowledgments
Floe is supported by open source sponsorship programs that donate the tools and infrastructure behind it:
- Error monitoring is generously provided by Sentry through Sentry for Good.
- Documentation is generously hosted by Mintlify through the Mintlify OSS Program.
- Development is supported by Claude through Anthropic's open source program.
License
MIT License, Copyright Jan Carlo Paredes. See LICENSE for details.
Open source. Built for everyone.