curl (macOS / Linux)
The fastest path for a single machine:/usr/local/bin. Uses sudo only if the target directory isn’t writable.
Pin a version
Custom install directory
Docker (for deployed agents)
Multi-arch image on GitHub Container Registry:/bin/sh, so shell buttons work out of the box. Bash is not included; add bash, python3, or nodejs via apk add in derived images when those runtimes are needed.
Go
If you already have a Go toolchain:$(go env GOPATH)/bin (usually ~/go/bin). Make sure that directory is on your $PATH.
Homebrew
brew upgrade buttons always gets you the newest version. Supports macOS and Linux on both Intel and Apple Silicon.
Homebrew also installs shell completions automatically on install and upgrade, so tab completion works without a separate buttons completion ... setup step.
npm / pnpm / bun
Verify
Updating
The fastest way to update is the built-in self-update command:.buttons/buttons.json and .buttons/buttons-lock.json.
Normal interactive commands can also update before they run. buttons-auto-update refreshes floating button dependencies and defaults on. cli-auto-update updates the CLI binary when the throttle allows and defaults off, so every command does not hit GitHub or Homebrew.
You can also update through your original install channel:
If you installed via Homebrew,
buttons update detects this and asks you to use brew upgrade by default.
To let Buttons update the CLI through Homebrew, run buttons config set cli-auto-update true
or set BUTTONS_CLI_AUTO_UPDATE=1.