This release teaches lerd to supervise non-PHP dev servers on the host behind
its nginx and HTTPS, collapses the MCP server's ~80 flat tools into ten grouped tools and registers
four more AI assistants, and broadens the dashboard with sites and services overviews, site groups, and a
drag-reorderable list. Plus db:move, four new service presets, a framework-agnostic Stripe
listener, and a round of systemd/quadlet injection hardening.
A project can declare a proxy command in .lerd.yaml, and lerd
supervises that dev server on the host while nginx reverse-proxies the .test domain to
it — same HTTPS, same DNS, same worker pipeline as a PHP site. A free port is auto-assigned, git worktrees
are supported, and lerd asks for explicit consent before it ever runs a command shipped in a
project file.
proxy: npm run dev # lerd supervises this on the host domains: [app.test] secured: true # nginx terminates TLS, proxies to the free port
sites, artisan,
db_set, …) no longer exist. Call the matching group with an action instead
— for example exec with action: "artisan", or db with
action: "set". Re-run lerd mcp:enable-global (or lerd mcp:inject)
so your assistant picks up the new manifest and reference.The MCP server collapses its roughly eighty flat tools into ten resource-grouped
tools, each driven by an action routed through one dispatch table. That halves the
tools/list payload (~32 KB → ~16 KB) and makes the manifest static, so it no
longer reshapes mid-session. Four more assistants register alongside the existing ones, all reading one
shared, single-source tool reference.
~80 flat tools → 10 grouped tools via one dispatch table that reuses every existing handler.
Codex CLI, Gemini CLI, GitHub Copilot and Google Antigravity join Claude Code, Cursor, Junie and Windsurf.
Every assistant renders the same single embedded tool reference, so the guidance can't drift between them.
The Sites tab gains an overview dashboard when no site is selected, mirroring a redesigned, category-grouped Services dashboard. Related sites can be grouped under one base domain, and the list can be sorted and drag-reordered.
A running-vs-total count, a paused tally and a failing-workers indicator, with sites as click-through tiles grouped by framework, favicon, TLS lock and worker dots.
Reorganised into categorized sections with preset cards and a suggestion banner so installable services are discoverable at a glance.
A main owns a base domain and the rest occupy its subdomains, with an optional shared database per secondary, managed from a grouping modal and the site tool's group_* actions.
Sort the sites list, or drag a row to switch to a persisted manual order that pushes live to other open tabs.
Databases can move between same-family services without losing data, four services join the preset catalogue, and the Stripe webhook listener works for any framework.
lerd db:move --from postgres --to postgres-18 dumps each site's database from the source service.
Creates and restores on the target, then repoints each site's .env and keeps an explicit db.service block in sync.
The source data is left untouched, so a move is reversible. #488
| Addition | What it brings | PR |
|---|---|---|
| 4 new presets | soketi, opensearch, redisinsight, beanstalkd, installable like any preset | #489 |
| Stripe listener | Framework-agnostic: secret from STRIPE_SECRET / _KEY / _API_KEY, configurable forward path | #490 |
| Horizon auto-reload | Run Horizon under a file watcher that reloads workers on code changes, toggled per project | #471 |
Framework env.vars | Declare top-level defaults seeded only when a key is absent, so a value in .env is preserved | #483 |
A batch of correctness and polish across worktrees, non-Laravel frameworks, boot ordering, and localisation.
A worktree's captures no longer mix into the parent site's Debug window.
App-key generation runs through the framework console instead of a hardcoded artisan call.
MariaDB probed with mariadb-admin, and host Vite workers ordered after FPM so wayfinder doesn't run before PHP is up.
The dashboard's .env editor scrolls to the bottom instead of cutting off long files.
The grouping modal, command palette labels and command run modal are translated across all seven non-English locales.
lerd start detects podman overlay-storage corruption and heals it, gated to darwin so it never fires on Linux.
The systemd and quadlet generation is hardened against directive injection from a cloned
repo, host-proxy commands stay behind consent on every path, and lerd stop stops raising
spurious heal notifications.
The watcher's worktree setup and lerd unpause honour host_proxy.disabled and only run the command approved at link time, so a cloned .lerd.yaml is never run unattended.
A lifecycle marker records an intentional shutdown, so lerd stop suppresses heal notifications for workers lerd itself stopped; they come back on the next start.