Skip to content

Lerd vs Other Tools

Lerd vs Laravel Herd

Laravel Herd is the closest match in spirit: a zero-config shared stack with automatic .test domains, one-click HTTPS, and per-site PHP versions. Lerd is the open-source equivalent for Linux (and macOS), built on rootless Podman instead of native binaries.

LerdLaravel Herd
PlatformsLinux (systemd), macOSmacOS, Windows (WSL2)
LicenseOpen source (MIT)Proprietary, freemium (Herd Pro subscription)
PHP runtimeRootless Podman containersNative binaries on macOS, WSL on Windows
PHP versions8.1, 8.2, 8.3, 8.4, 8.5 (shared FPM containers)7.4 through 8.5 (native)
FrankenPHP / OctaneBuilt in: lerd runtime frankenphp [--worker] per site, freeAvailable in Herd Pro
.test domainsAutomatic via dnsmasq containerAutomatic via native dnsmasq resolver
HTTPSlerd secure + mkcert, trusted system-wideBuilt-in "Secure Site" toggle
Xdebuglerd xdebug:on, tray togglePer-site toggle (Herd Pro)
ServicesBuilt-in and free: MySQL, Postgres, Redis, Meilisearch, RustFS (S3), Mailpit; custom services via YAML presetsSome in the free tier; most advanced services and UIs (database inspector, log viewer, dumps) gated behind Herd Pro
Non-PHP projectsFirst-class via Containerfile.lerd (Node, Python, Go, Rails, ...)Not directly supported, Herd focuses on PHP
Per-project config.lerd.yaml committed to the repo; covers PHP, Node, framework, services, workers, and custom containers; applied by lerd link / lerd initherd.yml committed to the repo; covers name, PHP, TLS, aliases on the free tier; services require Herd Pro; applied by herd init
Queue + scheduler workerslerd worker start queue / schedule as systemd user servicesQueue UI (Herd Pro)
DashboardWeb UI at 127.0.0.1:7073, system tray, and an installable PWA at lerd.localhostNative desktop app
CostFreeFree tier + paid Pro subscription

Choose Herd when: you work on macOS or Windows, want the performance of native PHP binaries (no container overhead), are already in the Laravel Forge and Envoyer ecosystem, or are happy paying for Pro features.

Choose Lerd when: you work on Linux (Herd has no Linux build), prefer open source, want reproducible project setup checked into git via .lerd.yaml, need first-class non-PHP containers, or want a single tool that covers PHP, Node, Python, and Go behind the same .test routing.

The "Herd on Linux" pitch

If you're moving from macOS + Herd to Linux, or want the same workflow on both, Lerd covers the Herd day-to-day surface:

  • Automatic .test domains with no /etc/hosts edits
  • Instant HTTPS via mkcert
  • Per-site PHP version selection
  • Shared MySQL, Postgres, Redis, Mailpit, S3-compatible storage
  • Per-site queue workers and scheduler as systemd services
  • A visual dashboard for sites, services, and logs

You trade a sliver of native performance (Podman Machine on macOS adds overhead versus native binaries) for rootless isolation, a fully open stack, reproducible .lerd.yaml project setup, and the same tool on Linux.


Lerd vs Laravel Sail

Laravel Sail is the official per-project Docker Compose solution. Lerd is a shared infrastructure approach, closer to what Laravel Herd does on macOS. Both are valid; they solve slightly different problems.

LerdLaravel Sail
PlatformsLinux (systemd), macOSLinux, macOS, Windows
LicenseOpen source (MIT)Open source (MIT)
Container runtimeRootless PodmanDocker Desktop / Orbstack / Colima
ArchitectureOne shared nginx + PHP-FPM + services across every sitePer-project Docker Compose stack
PHP versions8.1, 8.2, 8.3, 8.4, 8.5 (shared FPM containers)Per-project Sail image (8.2, 8.3, 8.4)
Services (MySQL, Redis…)One shared instancePer-project (or manually shared)
.test domainsAutomatic, zero configManual /etc/hosts or localhost:${APP_PORT} per project
HTTPSlerd secure for trusted mkcert cert instantlyManual or roll your own mkcert
Non-PHP projectsFirst-class via Containerfile.lerd (Node, Python, Go, Rails)Add your own container to the Compose stack
Per-project config.lerd.yaml (PHP + Node + services + workers)docker-compose.yml + Dockerfile
RAM with 5 projects running~200 MB~1–2 GB (5× full stacks)
Requires changes to project filesNoYes, needs docker-compose.yml committed
Works on legacy / client reposYes, just lerd linkOnly if you can add Sail
DashboardWeb UI at 127.0.0.1:7073, system tray, installable PWA at lerd.localhostCLI + Docker Desktop
CostFreeFree

Choose Sail when: your team uses it, you need per-project service versions, or you want infrastructure defined in the repo.

Choose Lerd when: you work across many projects at once and don't want a separate stack per repo, you can't modify project files, you want instant .test routing, or you want the Herd experience on Linux as well as macOS.

Migrating from Sail to Lerd

lerd import sail imports a Sail project's database and S3/MinIO files into lerd in one command, no manual dump/restore needed. It starts Sail temporarily with remapped ports (so there are no conflicts with lerd's running services), dumps the database, mirrors storage files, then tears Sail back down.

bash
cd ~/Projects/myapp
lerd sail import

See Importing from Laravel Sail for details.


Lerd vs ddev

ddev is a popular open-source local development tool that spins up per-project Docker containers with a shared Traefik router. It supports many frameworks (Laravel, WordPress, Drupal, etc.) and runs on macOS, Windows, and Linux. Lerd is narrower in scope (Laravel-focused, Podman-native, shared infrastructure) and closer to the Herd model.

Lerdddev
PlatformsLinux (systemd), macOSLinux, macOS, Windows
LicenseOpen source (MIT)Open source (Apache 2.0)
Container runtimeRootless PodmanDocker / Orbstack / Colima
ArchitectureShared nginx + PHP-FPM across all projectsPer-project containers behind a shared reverse proxy
PHP versions8.1, 8.2, 8.3, 8.4, 8.5 (shared FPM containers)5.6 through 8.4+ (per-project Docker image)
Services (MySQL, Redis…)One shared instancePer-project (isolated by default)
Domains.test, automatic.ddev.site or custom, automatic via the built-in proxy
HTTPSlerd secure for trusted mkcert cert instantlyBuilt-in via mkcert
Non-PHP projectsFirst-class via Containerfile.lerd (Node, Python, Go, Rails)nodejs and generic project types
Per-project config.lerd.yaml committed to the repo.ddev/config.yaml committed to the repo
RAM with 5 projects running~200 MB~500 MB–1 GB (5× app containers + proxy)
Requires changes to project filesNoYes, needs .ddev/config.yaml committed
Works on legacy / client reposYes, just lerd linkOnly if you can add ddev config
Framework supportLaravel built-in; any PHP framework via YAML definitionsLaravel, WordPress, Drupal, TYPO3, and many more
DashboardWeb UI at 127.0.0.1:7073, system tray, installable PWA at lerd.localhostCLI + optional per-project web UI
CostFreeFree

Choose ddev when: your team is cross-platform, you work with multiple frameworks (not just Laravel), you want per-project service isolation, or your workflow already depends on Docker.

Choose Lerd when: you want a zero-config shared stack you can drop any project into without touching its files, prefer rootless Podman, or want the lightweight Herd-like experience on Linux or macOS.

Released under the MIT License.