What is Butler?
Butler is a local development environment manager for macOS. It runs your PHP
sites on real web servers, gives them https://your-app.test addresses with
trusted certificates, and manages the databases, caches, mail catcher and other
services your projects depend on. If you’ve used Laravel Valet or Herd, Butler
will feel familiar — it aims to be compatible with the same commands where it
can.
What makes it different
Section titled “What makes it different”- Nothing goes through Homebrew. Every runtime Butler manages — PHP, MySQL,
Postgres, Caddy, nginx and the rest — is downloaded as a self-contained,
checksum-verified static binary. Your system stays clean, and versions don’t
drift when you
brew upgradesomething unrelated. - A single tool. There’s one
butlerbinary and one optional menu-bar app. Install it, runbutler system install, and you have a working stack. - The app is optional. Butler runs as a background service. The menu-bar app is a convenient window onto it — quitting the app doesn’t stop your sites.
- Lean by default. A fresh install is just the router, one web server and one PHP version. Databases, caches, search, mail and storage are added only when you ask for them.
The two ways to use it
Section titled “The two ways to use it”Butler is the same product whether you drive it from the keyboard or the menu bar. They talk to the same background service, so changes you make in one show up instantly in the other.
- The CLI — the
butlercommand. Everything Butler can do is a subcommand:butler link,butler secure,butler use 8.3, and so on. See the CLI reference. - The menu-bar app — a dashboard for your sites and services with buttons for the common actions, plus first-run onboarding. See the menu bar app.
How it works, briefly
Section titled “How it works, briefly”You don’t need to know the internals to use Butler, but a one-paragraph mental
model helps. A small background service (the daemon) owns everything: it keeps
track of your sites, generates web-server configs, answers DNS for *.test,
issues certificates, and starts and supervises every process. A tiny privileged
piece binds ports 80 and 443 at login and forwards traffic to the daemon’s
routers. The app and the CLI are both just clients that send requests to the
daemon — neither one does the actual work, which is why closing the app leaves
your sites running.
What’s supported
Section titled “What’s supported”- macOS on Apple Silicon is the primary, fully-supported platform.
- Linux is an emerging backend target — the core runs and installs systemd user services, but the service catalog is still filling in. This manual describes the macOS experience unless noted otherwise.
Ready to install? Head to Installation.