Profile
Back to NewsBack
GitHub Trending 5 min
Reader Mode
jannskiee/floe: Encrypted P2P file transfer in the browser, on the desktop, and in the CLI. No accounts, no uploads, no file storage.

jannskiee/floe: Encrypted P2P file transfer in the browser, on the desktop, and in the CLI. No accounts, no uploads, no file storage.

13 hours ago

Floe

Floe

Encrypted peer-to-peer file transfer for the browser, desktop, and command line

CLI release Desktop release Build status License Stars

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.

Download from the Microsoft Store

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 --to . 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 --to 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.

GitHub Sponsors\ Ko-fi

Acknowledgments

Floe is supported by open source sponsorship programs that donate the tools and infrastructure behind it:

Thank you to these programs for helping keep Floe sustainable as an independent open source project.

Monitored by Sentry Documentation by Mintlify Sponsored by Anthropic

License

MIT License, Copyright Jan Carlo Paredes. See LICENSE for details.

Open source. Built for everyone.

Chat with me