README.md

June 27, 2026 · View on GitHub

Floe

Floe

Secure, encrypted peer-to-peer file transfer

Latest release Build status License Issues Stars Forks

Try Floe · How It Works · Documentation · CLI · Self-Hosting · Contributing

About

Floe is an open-source peer-to-peer file transfer application built on WebRTC. Files stream directly between devices with no server storage, no accounts, and no registration required. When a direct path is unavailable due to network restrictions, a TURN relay server bridges the connection while maintaining end-to-end encryption.

A signaling server (api.floe.one) handles WebRTC negotiation and issues short-lived TURN credentials. It does not handle file data. No component in Floe's infrastructure stores, decrypts, or inspects transferred files.

Quick Start

floe.one runs entirely in your browser. Open it, pick a file, and share the code or link. No account or installation required.

New to Floe? The Quick Start guide walks through sending and receiving your first file.

How It Works

Files transfer directly between devices using WebRTC. A signaling server handles connection setup, then steps aside once both peers are connected. When a direct path cannot be established, an optional TURN relay bridges the connection with encrypted data that is never stored.

For a plain-language overview, visit floe.one/how-it-works. For the full technical reference covering signaling, ICE and NAT traversal, encryption, and relay fallback, see the documentation.

CLI

Floe provides a command-line interface for transferring files from headless devices, servers, and automated workflows. The CLI connects to the same signaling infrastructure as the web app. Browser-to-CLI and CLI-to-browser transfers are fully supported.

Install

macOS

brew install --cask jannskiee/tap/floe

Windows

winget install jannskiee.floe
# or: scoop bucket add jannskiee https://github.com/jannskiee/scoop-bucket && scoop install floe

Linux / any OS

curl -fsSL https://floe.one/install.sh | sh
# Windows PowerShell: irm https://floe.one/install.ps1 | iex

No runtime or dependencies required. For Go devs: go install github.com/jannskiee/floe/cli/cmd/floe@latest. For all install options, checksum verification, and PATH setup, see the installation guide.

Update

floe update              # for script / manual installs
brew upgrade floe        # Homebrew
winget upgrade jannskiee.floe  # Winget
scoop update floe        # Scoop

Usage

Send a file:

floe send photo.jpg

Send multiple files or a folder:

floe send file1.txt file2.pdf folder/

Receive:

floe receive olive-tiger-castle

The sender's terminal will display a room code and a browser link. The receiver can join using either the code (CLI) or the link (browser).

After a successful transfer, the receiver reports only the total byte count to Floe's signaling server to power the public "transferred globally" counter on the homepage. No file names or contents are included. The sender never reports. To opt out:

floe receive olive-tiger-castle --no-report   # single transfer
FLOE_NO_STATS=1 floe receive ...              # permanent (add to shell profile)

The global total is visible only in the browser. The CLI contributes to it but never displays it.

For all commands, flags, and advanced usage, see the documentation.

Self-Hosting

Prefer to run your own instance instead of using floe.one? The web client and signaling server ship with Docker support, so the full stack comes up with one command:

cp .env.docker.example .env
docker compose up -d --build

This runs the client on :3000 and the signaling server on :3001 (STUN-only, which works on most networks). See SELF_HOSTING.md for configuration, production deployment behind HTTPS, and the optional TURN relay.

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.

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 server 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 infrastructure behind it:

Monitored by Sentry Documentation by Mintlify

License

This project is licensed under the MIT License. See LICENSE for details.

Open source. Built for everyone.