传输双方必须同时在线,文件不经服务器存储,无法离线投递;通过 Homebrew、Scoop 或 winget 安装的版本需用对应包管理器更新,floe update 只打印命令;自托管时请求链接默认关闭,需用策略文件开启。
floe
jannskieeMIT活跃维护浏览器、桌面和命令行都能用的加密 P2P 文件直传工具,无需注册账号、不经过服务器上传、不存储文件,点对点把文件安全送到对方手里。
Encrypted P2P file transfer in the browser, on the desktop, and in the CLI. No accounts, no uploads, no file storage.
brew install --cask jannskiee/tap/floe
winget install jannskiee.floe
curl -fsSL https://floe.one/install.sh | shREADME 未说明硬件要求;桌面端仅支持 Windows 10/11(x64),CLI 支持 macOS、Windows、Linux,Web 端需较新的 Chrome 或 Edge。
浏览器、桌面和命令行三端互通的加密 P2P 文件传输工具,无需账号、不上传、不存服务器
浏览器、桌面和命令行都能用的加密 P2P 文件直传工具,无需注册账号、不经过服务器上传、不存储文件,点对点把文件安全送到对方手里。
核心能力
- 通过加密 WebRTC 连接在两台设备间直传文件
- 用链接密钥校验信令服务器,防止中间人介入
- 直连受阻时由 TURN 中继转发,单次中继上限 2 GB
- 接收端按文件大小和 SHA-256 校验,失败即删除并中止
- CLI 与桌面端可生成短码和浏览器链接,任意客户端互发
容易踩的坑
- desktop-v1.1.0Floe Desktop 1.1.0pre-release2026-11-05 · 2026-11-05 06:13 UTC
查看更新说明
Floe Desktop 1.1.0 for Windows.
- floe-desktop-setup-1.1.0.exe is the installer (per-user, no admin prompt).
- floe-desktop-1.1.0-windows-amd64.zip is the portable build.
- This build is not code-signed yet, so SmartScreen shows an "unknown publisher" warning: choose "More info", then "Run anyway".
- Verify a download with
sha256sum -c SHA256SUMS.txtorGet-FileHashagainst SHA256SUMS.txt. - Found a bug? Report it: https://github.com/jannskiee/floe/issues
What changed: https://www.floe.one/docs/changelog#desktop-v1-1-0
Most people should install from the Microsoft Store instead, which is signed by Microsoft and updates itself: https://apps.microsoft.com/detail/9NBQ8ZQ1065L
- v1.12.0最新正式版2026-11-05 · 2026-11-05 06:10 UTC
Changelog
Features
- 319ccc4791ce9ca553e2370aee0bc7642f81b181: feat(ci): let /take claim help wanted issues (#891) (@jannskiee)
- 6a1b9eddda992b65983dcbb740805010dc07acdb: feat(client): keyed share links, checked by every browser receiver (#871) (@jannskiee)
- 7399fea62eef6684697a382b42e85e33f5923929: feat(client): request links that carry a key the visitor checks (#876) (@jannskiee)
- 1003f338669e2436cbda81d3c3c29ef72cc02762: feat(desktop): link keys in Send, Receive and request links (#875) (@jannskiee)
- c6eaff790974ca69fa1c6490219f83f41da75fa7: feat(engine): check the link key in the engine and the CLI (#870) (@jannskiee)
- 09ef8c4d6af608b1013f91a933f85f859addd0b8: feat(engine): link-key primitives and the kc frame, unwired (#854) (@jannskiee)
Bug fixes
- fcee90387387afdfd0114908f454e7539d0a6bd0: fix(ci): give the first pull request note by commit history, not association (#807) (@jannskiee)
- f9fa036d72be70e944ec068ede788c3cc78d69f9: fix(cli): accept only vX.Y.Z tags in floe update (#847) (@jannskiee)
- 4cb8ef637bea020850cc7d9c214010cdec240a2a: fix(cli): keep a signaling server's own words off the screen (#886) (@jannskiee)
- 43efc0aef46fd5ff643181d487ede9c8ce2aaffb: fix(cli): stop early when --iface matches no network interface (#833) (@redwing509)
- a030fba2ef77ef21024c95bccb8477bfd449109d: fix(cli): treat a hangup like Ctrl+C (#860) (@yigitbuyukeren)
- fb86df000ca4db80a02ebd0323f08160875c2417: fix(client): keep third-party code away from the link fragment (#848) (@jannskiee)
- a532d90151a37eae1e23af97e867ca6eb4b0467b: fix(client): let go of the screen wake lock when a transfer ends (#832) (@SanjayK075)
- fdd528192946645c9adee0dae978819aa1b3a6e8: fix(client): name the browser among the receivers that confirm delivery (#831) (@abhi478jeetur-rgb)
- 4cc2219cd163195f6f2d9086b644af86e5836bf9: fix(client): read a key that lost its name as an incomplete link, on both parsers (#889) (@jannskiee)
- d44213bb668d5d77096b335199622ff89cadb374: fix(client): start a main-page send at once where the route cannot stop it (#836) (@Detoy)
- 9bf081fc6caf5ab8b1c098fcce5999fa903c61e8: fix(client): stop waiting for a proof that never comes, and keep a failed check (#888) (@jannskiee)
- 8f008be35bad65cf080f85de238014d684a66800: fix(desktop): follow a moved Downloads folder when Save to is blank (#872) (@ayushdwivedi-stack)
- 1b4694dd128780030c2dcfe351a05256582025a2: fix(desktop): keep Ctrl+O, Ctrl+V, Ctrl+H and Ctrl+R working while a Settings switch has focus (#843) (@Ptraaah)
- 2b426e831033b0ee36f46576f838a28c1f97eee9: fix(desktop): lock Windows clipboard calls to one operating-system thread (#837) (@ayushdwivedi-stack)
- 306d31fd67140d94ae236516367f19072c1c00cf: fix(desktop): name an http:// address that redirects to https:// in Settings Test (#835) (@Vanshchandel17)
- 07bbce1b2a1e1665d4de409c2b7476cb049d2348: fix(desktop): name empty files in a code receive's history (#800) (@Detoy)
- dff4e8105c0d59a64596df2d4cffe74dcf0b6122: fix(desktop): put Hide my IP address and global stats back when a save fails (#826) (@jannskiee)
- 6b41ef4ed4d1e6d3c15b9874d81c7c0d4bad4f26: fix(desktop): read a settings file that starts with a byte-order mark (#827) (@yigitbuyukeren)
- 576cf50ceecf1e43c7a65637b247f75ce84bde53: fix(engine): hold an unproven peer to fixed words, and read a leave as a leave (#874) (@jannskiee)
- c651d64733ea9d4a62f0612525794a9ece368560: fix(engine): keep waiting through a few seconds of silence during setup (#885) (@jannskiee)
- 1ae676ce0c4b96f6fb17a1afd1f14497ce8cbd49: fix(engine): leave out pipes, sockets and devices when collecting files (#861) (@yigitbuyukeren)
- 58570157f43acd2565592cbcd9c86c169e37a8d2: fix(engine): stop saying nothing was sent once the receiver has answered (#887) (@jannskiee)
- 997928210e9fac8bb14e67bb7ea0a28d83b1f590: fix(engine): tell the receiver when a file it is sending can no longer be read (#828) (@bfs2021)
- fd2ff3c3d3f1391c77ba562ee4d6a92ea5fea33c: fix(server): log Upstash failures once per ou
- desktop-v1.0.4Floe Desktop 1.0.4pre-release2026-10-28 · 2026-10-28 15:27 UTC
查看更新说明
Floe Desktop 1.0.4 for Windows.
- floe-desktop-setup-1.0.4.exe is the installer (per-user, no admin prompt).
- floe-desktop-1.0.4-windows-amd64.zip is the portable build.
- This build is not code-signed yet, so SmartScreen shows an "unknown publisher" warning: choose "More info", then "Run anyway".
- Verify a download with
sha256sum -c SHA256SUMS.txtorGet-FileHashagainst SHA256SUMS.txt. - Found a bug? Report it: https://github.com/jannskiee/floe/issues
What changed: https://www.floe.one/docs/changelog#desktop-v1-0-4
Most people should install from the Microsoft Store instead, which is signed by Microsoft and updates itself: https://apps.microsoft.com/detail/9NBQ8ZQ1065L
- v1.11.72026-10-28 · 2026-10-28 15:24 UTC
查看更新说明
Changelog
Bug fixes
- 5e394350a0df27c82c978fa946b7d30c1554897d: fix(cli): end Ctrl+C's flush once the channel has closed (#777) (@jannskiee)
- fa464ce026977f1717f178ed39016d8fa6d80a4a: fix(client): list a file added twice on the main page once (#779) (@dharamdan01)
- 9d9f71f0d9d65319d2fd34bb64ab2c51773ba77b: fix(client): make the FAQ questions headings that control their answers (#799) (@Martin-e60)
- 388605a8101ad216eeed67a05d3c269e8aecc2ae: fix(desktop): nearestDir answers "" for an empty folder (#765) (@Detoy)
- 1006294f5dc906184004ee7a06f8a39a99a6f593: fix(desktop): open Reset all settings? with focus on Cancel (#796) (@hanshapd)
- f80bb6337f69357841947115b75a489f15161ddb: fix(server): exit with code 1 when Node refuses PORT (#797) (@OKAN-SOFTWARE)
- e9a5981ff1f1fa6ec575f61eecd1c955d05cc19f: fix(transfer): stop flushing a data channel that has closed (#770) (@jannskiee)
What changed: https://www.floe.one/docs/changelog#v1-11-7
- v1.11.62026-10-25 · 2026-10-25 13:07 UTC
查看更新说明
Changelog
Bug fixes
- 64728410d0763cd5298530e148222e19701370b5: fix(cli): add context-aware shell completions (#740) (@SauravMukherjee44)
- de420adfda7633ad62abee623d6f9677fc7ce02b: fix(client): announce the Link Invalid card to screen readers (#760) (@ayushdwivedi-stack)
- 660a745c7bee6c5315cba3c465c109493ab48b45: fix(client): give a scheme-less signaling address the page's scheme (#734) (@Detoy)
- 135a43c063522603ff22eed1c036f49d006be1d8: fix(client): name the QR button by its words and say whether the QR is open (#754) (@vaishaldsouza)
- 85934fcb9ddffb1185fa3bbe856c11644dc356b8: fix(client): only resume a wanted wake lock when coming back to the tab (#735) (@LetMeSleep8h)
- cd870823869adc983bbb890c0166810b6138dce6: fix(client): show the connection tooltip while its Learn more link has focus (#736) (@swastiktawate)
- 0b11d7cce0933f03e832d3548c4a723d3fdb53f6: fix(client): tell screen readers which header section button is current (#758) (@vaishaldsouza)
- c15fe8c86c69a595b24e6192d417e1a6b620f86e: fix(desktop): announce a failed send or receive to screen readers (#759) (@Mittalnew)
- f146f6653428ff1012fc93c63bfb258abaa428bc: fix(desktop): bump labstack/echo to 4.16.1 for its four advisories (#743) (@jannskiee)
- d0a766535723afdb3bf904d0a2c0d657656f50af: fix(desktop): make ProgressRow a proper accessible progress bar (#745) (@HarshRajSinghania)
- e5f8c683cb1ebb0125e6e96959a071f0f011fd39: fix(desktop): move focus with History's Clear question (#739) (@LetMeSleep8h)
- 872cc372df0d5ca6689f510341355cbf2b935679: fix(desktop): say which of Send and Receive, and Files and Text, is selected (#753) (@Mittalnew)
Other
- 21e778eb80c0b2f8d6660d145b6426d6973eddba: skills: released strings at v1.11.5, and Store Submission 20 recorded (#725) (@jannskiee)
What changed: https://www.floe.one/docs/changelog#v1-11-6
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
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.
A link also carries a link key that no server receives, so a receiver can catch a signaling server that steps in between. A room code carries no link key, and Known limitations says what the check misses.
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 <files> --to "<link>", which needs floe 1.12 or later for a link from Floe Desktop 1.1 or later. 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 <files> --to "<link>" 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. The help wanted issues nobody holds yet work the same way, and they are open to returning contributors too.
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.
Thank you to these programs for helping keep Floe sustainable as an independent open source project.
License
MIT License, Copyright Jan Carlo Paredes. See LICENSE for details.