docsfs

package module
v1.22.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2026 License: MIT Imports: 1 Imported by: 0

README ΒΆ

Lerd

Open-source Herd-like local PHP development environment for Linux and macOS. Podman-native, rootless, with a built-in Web UI.

CI Release Platform Docs Reddit

Lerd dashboard tour

Lerd runs Nginx, PHP-FPM, and your services as rootless Podman containers, designed for PHP developers on Linux and macOS. No Docker. No sudo. No system pollution. Just lerd link and your project is live at project.test with HTTPS.

Built for Linux PHP developers

If you're a PHP developer on Linux and want frictionless local development β€” automatic .test domains, per-project PHP versions, one-click HTTPS, zero Docker β€” Lerd is built for you. Works with Laravel, Symfony, WordPress, Drupal, CakePHP, Statamic, and any custom PHP framework.

Features

  • 🌐 Automatic .test domains with one-command TLS, or opt out of lerd-managed DNS and use *.localhost (no dnsmasq, no system resolver tweak, no sudo for the DNS bits)
  • 🐘 Per-project PHP version (8.1–8.5, plus a frozen 7.4 / 8.0 legacy tier for hosted-on-the-old-stack projects), switch with one click
  • ⚑ FrankenPHP runtime per site as an alternative to shared PHP-FPM, with Laravel Octane and Symfony Runtime worker mode
  • πŸ“¦ Node.js isolation per project (Node 22, 24)
  • πŸ–₯️ Built-in Web UI with a dashboard root, live widgets, a global Cmd+K command palette, and seven dashboard languages (English, German, Spanish, French, Indonesian, Dutch, Portuguese)
  • πŸ§ͺ Tinker tab - in-browser PHP REPL per site with autocomplete (project models, composer helpers, PHP built-ins), live php -l syntax checking, and a collapsible tree view for dump() output. Works on Laravel (artisan tinker), Symfony, and any composer-based PHP project
  • πŸ›°οΈ Live dump() / dd() viewer that intercepts every dump() and dd() call from your running app and streams it to the dashboard, TUI (D key), MCP, and lerd dump tail, scoped per site and per worktree branch, with the original response left clean unless you flip passthrough on
  • πŸ”₯ SPX profiler with one-click on/off, every PHP-FPM request becomes a flame graph viewable in a same-origin Profiler view in the dashboard. No FPM restart, no code changes, and lerd profile run profiles a one-shot artisan or CLI command
  • πŸ’» Terminal dashboard (lerd tui) - btop-style TUI with live status, site detail pane, inline domain and version editing, shell drop-in, log tailing, and filter/sort β€” the same operations surface as the web UI, for tmux and SSH workflows
  • πŸ—„οΈ One-click services: MySQL, PostgreSQL, Redis, Meilisearch, RustFS, Mailpit, Gotenberg, Stripe Mock, Reverb and more. Every default service is a YAML preset you can update, migrate, rollback, or reinstall in place, including a reset-data reinstall that auto-recreates linked sites' databases and buckets
  • 🌳 First-class git worktrees with auto-detected branch domains, per-worktree PHP/Node versions, optional per-worktree database isolation (clone from main or empty), a per-worktree LAN-share proxy, env_overrides templating in .lerd.yaml for multi-tenant apps, automatic wildcard cert SANs for *.branch.site.test, a built-in Vite dev server worker that runs on the host per branch, and a dashboard modal for adding and removing worktrees without touching the CLI
  • βš’οΈ Worker self-heal, failed queue, schedule, horizon, reverb, and stripe workers are surfaced everywhere (CLI, dashboard banner, TUI, MCP) and recovered with one click or lerd worker heal
  • πŸ“‹ Live logs for PHP-FPM, Queue, Schedule, Reverb, per site
  • πŸ”’ Rootless & daemonless - Podman-native, no Docker required, dual-stack IPv4 + IPv6
  • πŸ€– MCP server - let AI assistants (Claude Code, Windsurf, Junie) manage your environment directly
  • 🧩 Framework store - community definitions for Laravel, Symfony, WordPress, Drupal, CakePHP, Statamic with versioned auto-detection
  • ⚑ Framework-agnostic workers, env setup, and nginx proxy β€” driven by YAML definitions, not hardcoded

AI Integration (MCP)

Lerd ships a built-in Model Context Protocol server. Connect it to Claude Code, Windsurf, JetBrains Junie, or any MCP-compatible AI assistant and manage your dev environment without leaving the chat.

lerd mcp:enable-global   # register once, works in every project

Then just ask:

You: set up the project I just cloned
AI:  β†’ site_link()
     β†’ composer install
     β†’ env_setup()    # detects MySQL + Redis, starts them, creates DB, generates APP_KEY
     β†’ setup()        # storage:link + migrate for Laravel, doctrine:migrations:migrate for Symfony
     βœ“  myapp β†’ https://myapp.test ready

~50 tools available: scaffold new projects, run migrations, manage services, toggle workers, tail logs, enable Xdebug, manage databases, manage PHP extensions, park directories, switch runtimes between PHP-FPM and FrankenPHP, and more, all from your AI assistant.

πŸ“– MCP documentation

Why Lerd?

Lerd DDEV Lando Laravel Herd
Podman-native βœ… 🟑 ❌ ❌
Rootless βœ… ❌ ❌ βœ…
Web UI βœ… ❌ ❌ βœ…
Terminal dashboard βœ… ❌ ❌ ❌
Linux βœ… βœ… βœ… ❌
macOS βœ… βœ… βœ… βœ…
MCP server βœ… ❌ ❌ βœ…
Free & open source βœ… βœ… βœ… ❌

🟑 DDEV runs on Docker by default and can also use Podman as an alternative runtime; Lerd is built exclusively for rootless Podman.

Install

Linux
curl -fsSL https://raw.githubusercontent.com/geodro/lerd/main/install.sh | bash

Update later with:

lerd update
macOS

Install via Homebrew:

brew install geodro/lerd/lerd
lerd install

Update later with:

brew upgrade lerd
lerd install

[!NOTE] See the installation docs for details.

Quick Start

cd my-laravel-project
lerd link
# β†’ https://my-laravel-project.test

lerd install already starts everything for you on first run, so you can lerd link immediately. Day-to-day:

lerd start          # boot DNS, nginx, PHP-FPM, services, workers, UI
lerd stop           # stop containers and workers (UI and watcher stay up)
lerd quit           # full shutdown including UI, watcher, and tray
lerd autostart enable   # boot lerd on every login
lerd status         # health snapshot

See Start, Stop & Autostart for the full lifecycle reference.

Framework Store

Install community framework definitions from geodro/lerd-frameworks:

lerd framework search                   # list all available
lerd framework install symfony          # auto-detects version from composer.lock
lerd framework install drupal@11        # explicit version
lerd framework list --check             # compare local vs store

Frameworks auto-detect when you lerd link a project. Workers, env setup, nginx proxy, and setup commands are all driven by the framework definition β€” no hardcoded behavior.

Documentation

πŸ“– geodro.github.io/lerd

License

MIT

Documentation ΒΆ

Index ΒΆ

Constants ΒΆ

This section is empty.

Variables ΒΆ

Functions ΒΆ

This section is empty.

Types ΒΆ

This section is empty.

Directories ΒΆ

Path Synopsis
cmd
lerd command
lerd-tray command
internal
cli
dns
dumps
Package dumps receives, buffers, and fans out PHP `dump()`/`dd()` events captured by the lerd dump bridge (auto_prepend_file).
Package dumps receives, buffers, and fans out PHP `dump()`/`dd()` events captured by the lerd dump bridge (auto_prepend_file).
dumpsops
Package dumpsops contains the shared business logic for toggling the lerd dump bridge.
Package dumpsops contains the shared business logic for toggling the lerd dump bridge.
envfile
Package envfile provides helpers for reading and updating .env files while preserving comments, blank lines, and line order.
Package envfile provides helpers for reading and updating .env files while preserving comments, blank lines, and line order.
eventbus
Package eventbus is an in-process pub/sub hub for UI state-change events.
Package eventbus is an in-process pub/sub hub for UI state-change events.
git
man
mcp
php
profiler
Package profiler turns the SPX profiler on or off globally.
Package profiler turns the SPX profiler on or off globally.
push
Package push owns Web Push plumbing: per-install VAPID keys, browser subscription store, and the encrypted POST that wakes a service worker when the notifier dispatches a new event.
Package push owns Web Push plumbing: per-install VAPID keys, browser subscription store, and the encrypted POST that wakes a service worker when the notifier dispatches a new event.
registry
Package registry queries OCI registries for available tags so lerd can surface "update available" badges and apply minor/patch updates to default services.
Package registry queries OCI registries for available tags so lerd can surface "update available" badges and apply minor/patch updates to default services.
serviceops
Package serviceops contains the shared business logic for installing, starting, stopping, and removing lerd services.
Package serviceops contains the shared business logic for installing, starting, stopping, and removing lerd services.
services
Package services provides a platform-agnostic abstraction over the underlying service manager (systemd on Linux, launchd on macOS).
Package services provides a platform-agnostic abstraction over the underlying service manager (systemd on Linux, launchd on macOS).
tui
ui
version
Package version holds build-time version information injected via ldflags.
Package version holds build-time version information injected via ldflags.
workerheal
Package workerheal detects and recovers worker units stuck in systemd's "failed" state.
Package workerheal detects and recovers worker units stuck in systemd's "failed" state.
xdebugops
Package xdebugops contains the shared business logic for toggling Xdebug on a PHP version: mode validation, config persistence, ini write, FPM quadlet update, and unit restart.
Package xdebugops contains the shared business logic for toggling Xdebug on a PHP version: mode validation, config persistence, ini write, FPM quadlet update, and unit restart.
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL