System requirements
Supported macOS versions and hardware, the ports Anvil uses and the password prompts it asks for.
Platform
| Status | |
|---|---|
| macOS on Apple silicon | Supported |
| macOS on Intel | Untested |
| Linux | Not supported yet |
| Windows | Not supported yet |
Tools
Redis is built from source and Git status needs git; both come with the Xcode
command line tools:
xcode-select --installTemplates for new applications use the matching language (npx for Next.js,
Nuxt and Vite, cargo, go, dotnet, PHP with Composer).
Ports
Anvil's servers listen on 127.0.0.1 only, and apps with their own dev server
are told to do the same. These are the defaults; the first three are set in
Configuration, service ports per service.
| Port | What |
|---|---|
| 80, 443 | Forwarded to 8080 and 8443 on 127.0.0.1 and ::1 (optional, see below) |
| 8443 | HTTPS for *.test |
| 8080 | HTTP for *.test |
| 5354 (UDP) | DNS for *.test |
| 3306 | MySQL |
| 5432 | PostgreSQL |
| 6379 | Redis |
| 1025, 8025 | Mailpit SMTP and web inbox |
| 41000–44999 | Apps with their own dev server, one port each |
When a service port is taken, Anvil suggests the next free one. Anvil's servers need no admin rights for any of these ports: 80 and 443 are a packet filter forward to 8080 and 8443, set up once with your password.
Passwords
Anvil runs as your user. Three one-time steps ask for your password; all are optional.
| Step | What it does | Without it |
|---|---|---|
| Resolver file | Creates /etc/resolver/test so *.test resolves to Anvil | *.test addresses don't open. Not needed with .localhost (anvil tld localhost) |
| Standard ports | Installs the dev.anvil.ports LaunchDaemon, which forwards ports 80 and 443 to Anvil at every boot; /etc/pf.conf is not touched | Addresses need the port, e.g. http://<name>.test:8080 |
anvil trust | Adds the local certificate authority to your login keychain | Applications with HTTPS work, but the browser warns about the certificate |
See Getting started. anvil uninstall undoes all three.
Building from source
- macOS with the Xcode command line tools
- Rust 1.85 or newer
- For the app:
cargo install tauri-cli --version '^2' --locked