Skip to main content

Global flags

Every command accepts these, but only send and receive act on them. floe version and floe update parse them and then ignore them, so floe version --server https://floe.example.com is accepted and changes nothing. The one exception is the pair --relay-only and --no-relay, which every command refuses together. The desktop app has equivalents for three of these. --server and --web are Server address and Share link address, under Advanced in Settings, and --relay-only is the Hide my IP address toggle under Privacy. --no-relay has no desktop equivalent: Floe Desktop can require the relay but never refuse it. See Desktop app settings.

Help and version flags

These come from the CLI framework rather than from Floe itself. floe completion and floe help come from the same place and are not part of Floe’s own interface. Run floe completion --help if you want shell completion.

Environment variables

Floe reads five environment variables. If you run your own signaling server, set it once in your environment instead of passing --server on every command. A flag always beats its variable, so you can override the setting for a single command without unsetting anything:
macOS and Linux
On Windows PowerShell:
Windows
Trailing slashes are trimmed, so https://floe.example.com/ and https://floe.example.com behave the same. Set FLOE_WEB only when your web app runs on a different host from your signaling server. Leave it unset and share links point at the same host as your server, which is what you want when one domain serves both. The only exceptions are Floe’s own deployment and the local dev pair, which are special-cased to their web hosts as described under --web above.

floe receive flags

Specific to the receive command.

floe update flags

Specific to the update command.

Opting out of the global counter

After a successful transfer, the receiver sends only the total byte count to the signaling server it is connected to (api.floe.one by default, or your own server when you set --server or FLOE_SERVER) to power the public “transferred globally” counter. No file names, contents, or identity are included. The sender never reports. Errors are ignored, so a failed report never changes the outcome of a transfer. The request goes out after every file is written and the summary has printed, and it carries a 5-second timeout, so an unreachable server can delay floe receive from exiting by a few seconds but never affects the files. To opt out for a single transfer, pass --no-report:
Terminal
To opt out permanently, set FLOE_NO_STATS=1 in your environment (for example in your shell profile):
Terminal
When opted out, no request is sent to the server and the global counter is not incremented for that transfer. The transfer itself is unaffected. In the desktop app the same choice is the Contribute to global stats toggle in Settings, and turning it off is the equivalent of --no-report.

Exit codes

floe with no arguments prints help and exits 0.

Timeouts

Floe gives up rather than hanging, and the limits differ by phase. The ones you are most likely to meet: A floe receive can sit for up to about ten seconds after printing its summary. That is a five-second grace period so the final acknowledgement reaches the sender, plus the report. The full list is in the transfer protocol reference.

Examples

Use a local dev server for both sender and receiver:
Terminal
Disable relay fallback (direct connections only):
Terminal
Hide your IP address from the other side by forcing the relay (the 2 GB cap applies):
Terminal
Point the browser link at a custom web client:
Terminal
Save received files to a specific folder and auto-accept:
Terminal
See Use a self-hosted server for more server configuration examples.