Skip to main content
This page installs floe, Floe’s CLI (command-line program), on macOS, Windows, or Linux and confirms that it runs. It is for anyone who wants to send or receive from a terminal or a script. floe is a single file that needs nothing else installed to run. The release builds for macOS need macOS 13 Ventura or later; on macOS 12, use Build from source. If you would rather have a window than a terminal, Floe Desktop runs on this same transfer engine, so the two interoperate. It is Windows only; on macOS and Linux this CLI and the web app are the options.

The short version

On a Mac with Homebrew, run brew install --cask jannskiee/tap/floe. On Windows, run winget install jannskiee.floe. On Linux, or anywhere without a package manager, use the one-line installer below. Then run floe version to check that it works.

Package managers

The fastest way to install floe. A package manager install is also updated with that tool’s standard upgrade command.
Terminal
Update: brew upgrade floeFirst run: if macOS blocks the binary (Gatekeeper), run xattr -dr com.apple.quarantine $(which floe).
Floe publishes no Linux package: there is no .deb, .rpm or AUR package. On Linux, use the one-line installer, a release archive, or go install.

One-line installer

Works on macOS, Linux, and Windows without a package manager. The script comes from floe.one. Unless you name a version with FLOE_VERSION, it asks GitHub’s API which release is newest. It then downloads that release’s archive and its checksums.txt from GitHub.
Terminal
To install a specific version, using any vX.Y.Z tag from the releases page, with or without the v:
Terminal
The script:
  • picks the archive for your system and processor (64-bit Intel or ARM), and stops on any other processor with a pointer to go install or a source build;
  • checks the archive’s SHA-256, a fingerprint of the file, against the release’s checksums.txt;
  • installs floe to /usr/local/bin, creating that folder when it is missing and asking for your sudo password when it is not writable.
When sudo is missing or cannot be used, it installs to ~/.local/bin instead. If that folder is not on your PATH, it says so and gives the line to add to the file your login shell reads. That file is ~/.zprofile for zsh, ~/.bash_profile for bash when you have one, and ~/.profile otherwise. If an earlier floe is still in /usr/local/bin then, the script says so, because that one may run first, and gives the command that removes it, sudo rm /usr/local/bin/floe.If the machine has neither sha256sum nor shasum, or the release lists no checksum for the archive, the script stops and installs nothing: see If the install script stops.A run that needs sudo looks like this:
Output
Checksum verified. is the line that says the download matched.
Running the script again installs the latest release over the copy in its own folder. It does not look for a floe installed another way, such as with Homebrew, Scoop or winget: it adds a second copy, and whichever comes first on your PATH runs. With Homebrew on an Intel Mac, it replaces Homebrew’s floe link in /usr/local/bin instead.

Go install

If you have Go 1.26 or later installed:
Terminal
Go writes the binary to $(go env GOPATH)/bin (or $(go env GOBIN)), which is not on your PATH on a default Go setup. Add that directory to your PATH before running floe. The package managers and the install script above handle this for you.
A binary from go install calls itself floe dev and cannot update itself: on it, floe update stops with Error: Cannot update a dev build. and status 1. For Go users: cli is a nested Go module and the repository carries no cli/vX.Y.Z tags, so @latest resolves to the current tip of main as a pseudo-version, not to the newest release. The version string is stamped in only at release time. Use a package manager or the install script if you want a released build with working self-update.

Install from a release archive

For a machine where the script cannot run, install a release by hand:
1

Download the archive

From the GitHub Releases page, download floe_<version>_<system>_<processor>.tar.gz, or the .zip for Windows. The system is linux, darwin (macOS) or windows, and the processor amd64 (64-bit Intel) or arm64. The version in the name has no leading v. Download checksums.txt from the same release.
2

Check it

Compare the archive with checksums.txt, as shown in the next section.
3

Put floe on your PATH

Unpack the archive and move floe (floe.exe on Windows) to a folder on your PATH, as in Build from source. If macOS blocks it the first time it runs, run xattr -d com.apple.quarantine on the file.

Verify the checksum (manual download)

Each release includes a checksums.txt file. To check an archive you downloaded, run this in the folder that holds it:
Terminal
On Windows, Get-FileHash <archive> -Algorithm SHA256 in PowerShell prints the hash to compare with the archive’s line in checksums.txt. For a release of v1.11.7 or later, the GitHub CLI (gh) can also check an archive against the release’s attestation, which GitHub records when the release is published:
Terminal
Older releases have no attestation, so check them against checksums.txt.

Verify the install

Terminal
Expected output:
Output
If the version you installed is not the newest release, a third line follows:
Output
Set FLOE_NO_UPDATE_CHECK=1 to silence it. See floe version for what that check does. A binary from go install or built from source prints floe dev instead of a version number.

Update

Use your package manager’s upgrade command, shown in its tab above, or floe update for a script or manual install. See Update the CLI.

Build from source

Requires Go 1.26 or later. On macOS 12, which the release builds no longer support, this is how to get a current floe: Go 1.26 still runs there.
Terminal
Move the resulting floe binary to a directory on your PATH. On macOS and Linux, /usr/local/bin is the usual choice, but it is root-owned on a stock system, so the move needs elevation: sudo mv floe /usr/local/bin/. A user-owned directory such as ~/.local/bin works without sudo, as long as it is on your PATH. Like a go install build, a binary compiled this way reports floe dev and cannot update itself.

Uninstall

Remove floe the way it came: The only other thing floe leaves is the update check’s floe/update-check.json in your user config folder, which is safe to delete: see The update check.

If the install script stops

The script ends with one of these and installs nothing: A FLOE_VERSION that names no release stops the script right after its Downloading line, with the download tool’s own error, such as a 404. In PowerShell, a GitHub that cannot be reached ends the script with PowerShell’s own error.

If something goes wrong

  • floe is not found after installing: open a new terminal, which reads the changed PATH, and check that the install directory is on it. See floe is not found after installing.
  • floe update prints Cannot update a dev build.: the binary came from go install or a source build. See Cannot update a dev build..
  • floe update prints installed via homebrew, scoop or winget: a package manager owns the binary, so use its upgrade command. See installed via homebrew.
Last modified on November 5, 2026