Installation
Butler runs on macOS (Apple Silicon). There are two ways to install it — pick
whichever suits you. Both give you the same butler command; the app additionally
gives you the menu-bar dashboard.
Option 1 — The app
Section titled “Option 1 — The app”The app is the easiest route, and it’s what most people should use. It bundles
the butler binary, registers the background services, and can prompt you for
the one permission macOS requires.
- Download Butler.app from getbutler.dev.
- Drag it to your Applications folder and open it.
- Follow the first-run onboarding — it picks your web server and PHP version and finishes setup for you.
The app keeps itself up to date automatically.
Option 2 — The command line
Section titled “Option 2 — The command line”If you’d rather not install an app, the one-line installer fetches just the
butler binary, verifies its checksum, and drops it on your PATH:
curl -fsSL https://getbutler.dev/install.sh | shThe installer runs butler system install at the end, which registers the
background services and prompts once (via sudo) for the DNS resolver, the CA
certificate, and the privileged port binder.
You can influence the installer with environment variables:
| Variable | Default | Purpose |
|---|---|---|
BUTLER_VERSION | latest | Pin a specific version, e.g. 0.1.0. |
BUTLER_INSTALL_DIR | /usr/local/bin | Where the binary lands. |
BUTLER_NO_SETUP | — | Set to 1 to skip the butler system install step. |
If you skipped that step, run it yourself when you’re ready:
butler system installYou can install the app later on top of a CLI install — it takes over the background services cleanly and adds the menu bar experience.
What butler system install does
Section titled “What butler system install does”butler system install is the one-time bootstrap. It:
- Registers two background jobs — a per-user service that does all the real work, and a small privileged one that binds ports 80 and 443 at login.
- Adds a DNS resolver so
*.testaddresses resolve to your machine. - Installs Butler’s certificate authority so HTTPS is trusted (see HTTPS & trusted certs).
- Symlinks the
butlercommand onto yourPATH.
It prompts for your password once for the parts that genuinely need it.
Verify it’s working
Section titled “Verify it’s working”butler doctordoctor runs a health check and tells you if anything still needs attention —
most commonly the Login Items toggle mentioned above. When it’s happy, you’re
ready to link your first site.
Uninstalling
Section titled “Uninstalling”To stop Butler’s background services without removing anything:
butler shutdownTo remove Butler entirely — its services and, optionally, all of its state:
butler system uninstall # remove the background jobsbutler system uninstall --force # also wipe Butler's state and downloadsIf you installed the app, drag it to the Trash afterwards.