Migrating from Valet or Herd
If you’re coming from Laravel Valet, Herd, or DBngin, Butler can import your existing setup so you don’t have to relink everything by hand. Butler also deliberately matches Valet’s command names where it can, so your muscle memory mostly carries over.
Import an existing setup
Section titled “Import an existing setup”butler migrate valet # import from Laravel Valetbutler migrate herd # import from Herdbutler migrate dbngin # import databases from DBnginNarrow what gets imported with a flag:
butler migrate valet --sites # just the linked/parked sitesbutler migrate herd --services # just the servicesButler reads the other tool’s configuration and recreates the equivalent sites and services on its own stack. Your projects aren’t moved or modified — Butler just starts serving them.
Per-project config compatibility
Section titled “Per-project config compatibility”Butler reads a valet.yml file as a fallback when there’s no butler.yml, so
projects that already carry Valet’s per-project config keep working. When you’re
ready, run butler init in the project to generate a native
butler.yml.
Command familiarity
Section titled “Command familiarity”Many Butler commands mirror Valet’s — link, unlink, park, forget,
secure, unsecure, secured, isolate, use, tld, share. Where Butler
does something meaningfully different, the command diverges on purpose rather than
pretending to be identical. Two to note:
butler install <component>downloads a single service binary (MySQL, Redis, …). It is not Valet’s full-install command — Butler’s machine bootstrap isbutler system install.butler trustinstalls Butler’s certificate authority (Valet folds this into other commands).
See the full CLI reference for everything.