Laravel + Valet workflow on Mac

Laravel developers on Mac often pair Valet or Herd for PHP with a pile of terminals for Vite, queue:work, Horizon, and the scheduler. Rig detects Composer and Laravel projects, links Valet *.test URLs, and runs sidecars from one board — with unified logs, port reclaim, and crash recovery. Tail storage/logs without hunting the filesystem. When Cursor or Claude is linked through the local MCP hub, agents see which artisan processes are healthy instead of guessing from a pasted stack trace. Keep Valet or Herd for PHP runtime and parked sites; add Rig when the morning boot is php artisan serve plus three other services. Open site uses the pretty .test hostname when linkage is detected. Reverb and the scheduler fit the same group. See the honest Rig vs Laravel Herd and Rig vs Laravel Valet comparisons for when to run both.

Do I still need Valet if I use Rig?

Usually yes for parked *.test PHP sites. Rig detects and opens those URLs; it does not replace nginx/PHP version management.

Can Rig run Horizon and queue workers?

Yes. Rig treats artisan sidecars like any other process — start, watch, restart, and stream logs together with Vite and your API.

https://userig.app/laravel-valet

Laravel + Valet

Keep your .test domains. Lose the guessing.

Valet serves your Laravel sites, but it cannot tell you what is running underneath them. Rig sits next to Valet, not against it. Same .test domains, plus a real view of every site, queue worker and artisan command.

Free forever on your computer. Pay only for Mesh (Pro, $15 a month).

rig / siteslive
Site · domainQueue
storefrontstorefront.testPHP 8.32 workers
admin-portaladmin-portal.testPHP 8.2idle
client-apiclient-api.testPHP 8.1horizon

3 Valet sites · served by Valet, watched by Rig

The problem

Valet runs the site. Nobody runs the rest.

A Laravel morning is rarely just one command. Valet or Herd serves PHP, then you open a tab for Vite, another for queue:work, another for Horizon and the scheduler, and hope none of them dies.

  • A terminal tab each for Vite, queue:work, Horizon and the scheduler
  • A queue worker that crashed three hours ago, and nothing told you
  • storage/logs/laravel.log open in yet another window
  • valet use changes PHP for every site at once
  • Sharing a .test site means ngrok and hosts file edits
  • Rig detects the Composer and Laravel project and links its Valet .test URL
  • Vite, queues, Horizon, Reverb and the scheduler start from one board
  • Crashed workers restarted, with the exception that killed them
  • laravel.log tails into the same log pane
  • Live Link turns a .test site into a link a client can open
Artisan, visible

Queue workers that don't silently die.

Valet never told you a queue:work process crashed three hours ago. Rig watches it, restarts it, and shows you the exception that killed it.

Crashes caught and restarted

When a worker exits, Rig keeps the error, restarts it a few times, and stops trying if it keeps failing so you are not stuck in a loop.

01
rig / storefront / queuelive
$ php artisan queue:work
➜ storefront:queue running
✕ crashed — SQLSTATE[HY000] connection refused
➜ restarted automatically · 3 retries left

Every artisan sidecar on one board

Horizon, Reverb, the scheduler and Vite run as named sidecars beside your queue workers. Migrations run as one-off jobs. laravel.log streams into the same pane, so you stop hunting through the filesystem.

02
rig / storefront / logslive
vite › ready · storefront.test hot reload on
horizon › Horizon started successfully.
schedule › Running [inspire] … done
reverb › Starting server on 0.0.0.0:8080
laravel.log › local.ERROR: Undefined variable $cart
rig › same pane as everything else
Share the .test site

Live Link works on Valet sites too.

A .test domain only works on your Mac, so showing a client usually means a deploy. Turn storefront.test into a link a client can open on their own phone. No ngrok, no changing your hosts file.

  • Real HTTPS link
  • Optional password
  • Expires on its own
  • Stop it when the call ends
Per site, not system-wide

Pick 8.1, 8.2 or 8.3 without touching the others.

valet use switches PHP system-wide, so every site moves with it. Rig scopes the version to the site: storefront stays on 8.3 while admin-portal stays on 8.2.

One version per site

Each site keeps the PHP version it was built for, and artisan tinker opens against the right one. Valet keeps serving the .test domain as before.

03
rig / sites / phplive
storefront.test
PHP 8.3
admin-portal.test
PHP 8.2
Switch scope
per site, not global
artisan tinker
opens against the right version

storefront stays on 8.3 while admin-portal stays on 8.2

Cursor & Claude

Your assistant sees which artisan process is healthy.

Pasting a stack trace into chat gives your AI tool a snapshot from ten minutes ago. With Rig linked over the local MCP hub, Cursor or Claude reads which queue, Horizon or Vite process is up right now, and can restart the one that died once you say yes.

get_healthget_logsdiagnose_crashrestart_project

Honest comparisons

Keep Valet or Herd. Add Rig when the morning boot is four commands.

Valet / Herd own PHP

PHP, nginx and parked *.test sites stay with Valet or Herd. Open site in Rig uses the pretty .test hostname.

Rig vs Laravel Valet

When to run both, and what each one is responsible for.

Rig vs Valet

Rig vs Laravel Herd

The same split for Herd: Herd serves PHP, Rig runs and watches everything around it.

Rig vs Herd

Works offline on macOS 13+.

Questions

Fair questions

Do I still need Valet if I use Rig?

Usually yes for parked *.test PHP sites. Rig detects and opens those URLs; it does not replace nginx/PHP version management.

Can Rig run Horizon and queue workers?

Yes. Rig treats artisan sidecars like any other process — start, watch, restart, and stream logs together with Vite and your API.

Other workflows

Rig for the way you work

Mac process manager

Every local process, its port and its log in one window, with crashes restarted for you.

See the workflow

Local WordPress

A fresh WordPress site in one click, with WP-CLI, the database and HTTPS built in.

See the workflow

Cursor & Claude MCP

Your AI assistant reads real ports, logs and health instead of guessing from your code.

See the workflow

For freelancers

Show a client the work running on your computer with a link, not a staging deploy.

See the workflow

For solo developers

Every side project on one board, back up after a reboot without touching a terminal.

See the workflow

Full stack local dev

Web, API, database and workers started in the right order with one button.

See the workflow

Everything Valet gave you, plus what it couldn't see.

One Mac app, alongside Valet. No migration, no changed workflow. macOS 13+ · no credit card.