Skip to content

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.

Terminal window
butler migrate valet # import from Laravel Valet
butler migrate herd # import from Herd
butler migrate dbngin # import databases from DBngin

Narrow what gets imported with a flag:

Terminal window
butler migrate valet --sites # just the linked/parked sites
butler migrate herd --services # just the services

Butler 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.

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.

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 is butler system install.
  • butler trust installs Butler’s certificate authority (Valet folds this into other commands).

See the full CLI reference for everything.