https://github.com/geodro/lerd
Open-source, Herd-like local PHP development environment for Linux and macOS. Automatic .test domains, per-project PHP/Node isolation, one-command TLS. Podman-native, rootless.
https://github.com/geodro/lerd
developer-tools laravel linux local-development nginx php php-development podman symfony ubuntu
Last synced: 10 days ago
JSON representation
Open-source, Herd-like local PHP development environment for Linux and macOS. Automatic .test domains, per-project PHP/Node isolation, one-command TLS. Podman-native, rootless.
- Host: GitHub
- URL: https://github.com/geodro/lerd
- Owner: geodro
- License: mit
- Created: 2026-03-17T10:18:54.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-22T17:15:48.000Z (21 days ago)
- Last Synced: 2026-04-22T17:24:34.217Z (21 days ago)
- Topics: developer-tools, laravel, linux, local-development, nginx, php, php-development, podman, symfony, ubuntu
- Language: Go
- Homepage: https://geodro.github.io/lerd/
- Size: 31.9 MB
- Stars: 121
- Watchers: 2
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: docs/contributing/building.md
- License: LICENSE
Awesome Lists containing this project
README
# Lerd
> Open-source Herd-like local PHP development environment for Linux and macOS.
> Podman-native, rootless, with a built-in Web UI.
[](https://github.com/geodro/lerd/actions/workflows/ci.yml)
[](https://github.com/geodro/lerd/releases)
[](LICENSE)
[]()
[](https://geodro.github.io/lerd/)

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](https://geodro.github.io/lerd/features/dns/) and use `*.localhost` (no dnsmasq, no system resolver tweak, no sudo for the DNS bits)
- ๐ **Per-project PHP version** (8.1โ8.5), 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** - 3-pane dashboard to manage sites, services, and logs from a browser
- ๐งช **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
- ๐ป **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, Stripe Mock, Reverb and more
- ๐ **Live logs** for PHP-FPM, Queue, Schedule, Reverb, per site
- ๐ **Rootless & daemonless** - Podman-native, no Docker required
- ๐ค **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](https://modelcontextprotocol.io/) server. Connect it to Claude Code, Windsurf, JetBrains Junie, or any MCP-compatible AI assistant and manage your dev environment without leaving the chat.
```bash
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](https://geodro.github.io/lerd/features/mcp/)
## Why Lerd?
| | Lerd | DDEV | Lando | Laravel Herd |
|--------------------|------|------|-------|--------------|
| Podman-native | โ
| โ | โ | โ |
| Rootless | โ
| โ | โ | โ
|
| Web UI | โ
| โ | โ | โ
|
| Terminal dashboard | โ
| โ | โ | โ |
| Linux | โ
| โ
| โ
| โ |
| macOS | โ
| โ
| โ
| โ
|
| MCP server | โ
| โ | โ | โ |
| Free & open source | โ
| โ
| โ
| โ |
## Install
### Linux
```bash
curl -fsSL https://raw.githubusercontent.com/geodro/lerd/main/install.sh | bash
```
Update later with:
```bash
lerd update
```
### macOS
Install via Homebrew:
```bash
brew install geodro/lerd/lerd
lerd install
```
Update later with:
```bash
brew upgrade lerd
lerd install
```
> [!NOTE]
> See the [installation docs](https://geodro.github.io/lerd/getting-started/installation/) for details.
## Quick Start
```bash
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:
```bash
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](https://geodro.github.io/lerd/usage/lifecycle/) for the full lifecycle reference.
## Framework Store
Install community framework definitions from [geodro/lerd-frameworks](https://github.com/geodro/lerd-frameworks):
```bash
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](https://geodro.github.io/lerd/)**
- [Requirements](https://geodro.github.io/lerd/getting-started/requirements/)
- [Installation](https://geodro.github.io/lerd/getting-started/installation/)
- [Quick Start](https://geodro.github.io/lerd/getting-started/quick-start/)
- [Start, Stop & Autostart](https://geodro.github.io/lerd/usage/lifecycle/)
- [Frameworks](https://geodro.github.io/lerd/usage/frameworks/)
- [Services](https://geodro.github.io/lerd/usage/services/)
- [Command Reference](https://geodro.github.io/lerd/reference/commands/)
## License
MIT