Choose a Method
Each release has prebuilt binaries for macOS, Linux and Windows, on both x86_64 and ARM64. The binaries have no dependencies.
After you install, check the version:
Homebrew
ahasend/tap/ahasend. Homebrew adds the AhaSend tap and installs shell completion for bash, zsh and fish.
Install Script (macOS and Linux)
checksums.txt, and installs it in ~/.local/bin (or $XDG_BIN_HOME when it is set). It never uses sudo and never changes your shell profile. If the folder is not on your PATH, it prints the line to add, unless you pass --quiet.
Pass options after sh -s --:
If a package manager installed
ahasend in the target folder, the script stops and tells you to upgrade it with that package manager, naming the command when it knows it, or to choose another folder with --install-dir.
To read the script before you run it, download it first:
--install-dir if you used one. To uninstall, delete ahasend from the folder it installed into, by default:
PowerShell Script (Windows)
checksums.txt, and installs it in %LOCALAPPDATA%\Programs\AhaSend\bin. It does not change your PATH: if the folder is not on it, the script prints the command that adds it, unless you pass -Quiet. Run that command, then open a new terminal. With -Quiet, use the PATH command in the binary download steps.
Pass parameters like this:
If the target folder is one that a package manager manages, such as Scoop’s or npm’s, the script stops and prints the command that upgrades
ahasend with that tool instead, even when ahasend is not there yet.
To read the script before you run it, download it first:
-InstallDir if you used one. To uninstall, delete ahasend.exe from the folder it installed into. With the default folder, delete the whole AhaSend folder:
PATH, the entry stays there. To remove it, open Edit environment variables for your account from the Start menu, select Path under your user variables, click Edit, and delete the entry that ends in AhaSend\bin.
Scoop
npm
Needs Node.js 18 or later.pnpm add -g @ahasend/cli, bun add -g @ahasend/cli). The launcher runs with Node.js, so Bun also needs Node.js 18 or later. pnpm needs a global bin folder, which pnpm setup creates once.
The package installs the binary for your system as an optional dependency. If you install with optional dependencies turned off (for example --omit=optional), ahasend stops with a message that says so.
With npm,
ahasend runs through a small Node.js launcher, which passes the binary’s exit code through. Two signal cases differ from the other install methods:- A
SIGINTsent to the launcher process alone, by a tool that signals one process, does not reach the CLI. Ctrl+C in a terminal works as usual. - A tool that sends
SIGTERMto the whole process group, such astimeout, makes the CLI receive it twice.messages sendandmessages cancelof several messages treat a secondSIGTERMas “stop now”, so they skip their clean stop.
Debian and Ubuntu (.deb)
These commands download the package of the latest release for your architecture (amd64 or arm64) and install it. To install another release, replace the first line with that version, such as VERSION=0.3.0.
/usr/bin/ahasend and shell completion for bash, zsh and fish. There is no apt repository, so apt upgrade does not upgrade it. To upgrade, run the same commands again. To uninstall:
Fedora and RHEL (.rpm)
These commands download the package of the latest release for your architecture (x86_64 or aarch64) and install it. To install another release, replace the first line with that version, such as VERSION=0.3.0.
/usr/bin/ahasend and shell completion for bash, zsh and fish. There is no dnf repository, so dnf upgrade does not upgrade it. To upgrade, run the same commands again. To uninstall:
Binary Download
Every release has a binary for each system, with the same name in every release:- macOS and Linux
- Windows
Set If the check prints If In fish, run this once instead:
FILE to the binary for your system, then download it and checksums.txt, check it, and install it:OK for the file, install it. If it prints FAILED, delete the file and do not run it.~/.local/bin is not on your PATH, add this line to your shell’s startup file (such as ~/.bashrc or ~/.zshrc):macOS blocks a binary that you download with a browser, because Apple has not notarized it. Remove the download flag from the file before you run it:A binary downloaded with
curl does not get the flag. Homebrew, the install script and npm installs do not need this step.PATH is already set. To uninstall, delete the binary. On Windows, also remove the folder from your user PATH, as the PowerShell script section describes.
Go Install
Needs Go 1.26 or later.ahasend-cli into GOBIN, or $(go env GOPATH)/bin when GOBIN is unset. Rename it to ahasend to use the commands in these docs. With the default Go bin directory:
PATH. A go install build prints dev as its version, because only release builds carry a version number. To upgrade, run both commands again.
Build from Source
Needs Go 1.26 or later, Git, and Make (optional).go build -o bin/ahasend . instead of make build. If ~/.local/bin is not on your PATH, add it as the binary download steps show.
Verify the Download
Every release has achecksums.txt with the SHA-256 of each file. The install scripts check it for you, and the binary download steps check it before they move the file. For any other file from a release, such as a .deb or .rpm package, download checksums.txt from the same release into the same folder, then run, before you rename the file:
Shell Completion
Homebrew and the .deb and .rpm packages install completion for bash, zsh and fish. For other install methods, or for PowerShell, generate it withahasend completion.
- Bash
- Zsh
- Fish
- PowerShell
bash-completion package, which most Linux systems have.Remove Your Configuration
Uninstalling the CLI leaves your profiles in~/.ahasend (%USERPROFILE%\.ahasend on Windows). Delete that folder to remove them:
Troubleshooting
Command Not Found
The install folder is not on yourPATH. The install scripts print the line to add, unless you ran them with --quiet or -Quiet. To add the folder yourself on macOS and Linux, put this line, with your folder, in your shell’s startup file, such as ~/.bashrc or ~/.zshrc, and open a new terminal:
PATH command in the binary download steps, with your folder.
More Than One Copy
Ifahasend --version shows an older version than you installed, another copy comes first on your PATH. List every copy:
/usr/local/bin on macOS and Linux, or in %LOCALAPPDATA%\AhaSend on Windows; delete it there.

