A FIELD GUIDE TO LARAVEL · VOLUME II · THE ECOSYSTEM
ENTRY II.10 · LOCAL ENVIRONMENT
Valet
Valet · Package · first recorded 3 May 2016, v0.1.0 on Packagist
A local development environment for macOS. Nginx and DnsMasq, installed by Homebrew, answer every *.test domain from a parked or linked directory, with no virtual machine and no container to run.
Specification
Kind Local tool, macOS only. A global Composer package
Interface Nginx on ports 80 and 443; DnsMasq resolving *.test to 127.0.0.1
Runs on macOS with Homebrew; PHP and Nginx from brew
Installed by composer global require laravel/valet · valet install
Voice valet park · link · secure · isolate · share · proxy
Scales by Every directory under a parked path is a site; subdomains come free
Range Cloud: n/a: local only. Cloud is where the site goes next
Forge, VPS: n/a: local only. Forge provisions the Nginx it mimics
Vapor: n/a: local only
Neighbours
Herd is the same idea as an app, with PHP, nginx and dnsmasq bundled, Windows added and no Homebrew. Sail runs the stack in Docker containers; Homestead, now retired, ran it in a Vagrant VM. Valet's distinction is native processes from Homebrew, on macOS only.
Field marks
~/.config/valet/config.json
.valetrc with php=php@8.2
LocalValetDriver.php in a project
*.test in the address bar
Fig. II.10.1 · one request on .test, exploded
Parts
1 Browser. Asks for laravel.test. Any directory under a parked path answers to its own name, subdomains included.
2 DnsMasq. Resolves every *.test to 127.0.0.1. Config under ~/.config/valet/dnsmasq.d/; ping foobar.test proves it.
3 Nginx, started at boot, listening on 127.0.0.1 only. valet secure adds TLS and HTTP/2 for one site.
4 Driver. A PHP class with serves, isStaticFile and frontControllerPath. Laravel, WordPress and others are built in.
5 PHP-FPM, over ~/.config/valet/valet.sock. One global PHP, or valet isolate php@8.2 for a single site.
6 Your app. public/index.php of the parked directory. Nothing is copied; the site is served from where it sits.
Hidden joinery
valet share hands the URL to ngrok, Expose or cloudflared and puts it on the clipboard. Traffic is bound to 127.0.0.1 by default; opening it to the LAN means editing the Nginx listen line by hand. .valet-env.php injects $_SERVER vars per site. A default site in config.json replaces the 404 for unknown .test names.
Every line checked on 2026-10-08 against the 13.x docs, the laravel/valet source and Packagist.
TITLE
Valet · one request on .test
SOURCES
laravel.com/docs/13.x/valet · github.com/laravel/valet · packagist.org/packages/laravel/valet · herd.laravel.com/docs/macos/getting-started/installation · laravel.com/forge/docs/servers/the-basics · laravel.com/docs/13.x/sail
STATUS
Verified · 2026-10-08
SHEET
II.10 of 48
REV
A · 2026-10-08
DRAWN
BS
FINISH
All faces, including the back