docsfs

package module
v1.33.0 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2026 License: MIT Imports: 1 Imported by: 0

README ΒΆ

Lerd

Open-source Herd-like local PHP development environment for Linux and macOS, with Windows supported via WSL2 (beta). Podman-native, rootless, with a built-in Web UI.

CI Release Platform Docs Reddit Discord

Lerd dashboard tour

Lerd runs Nginx, PHP-FPM, and your services as rootless Podman containers, designed for PHP developers on Linux and macOS, and on Windows through WSL2 (beta). 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

Lerd is built for PHP developers on Linux who want frictionless local development: automatic .test domains, per-project PHP versions, one-click HTTPS, zero Docker. Works with Laravel, Symfony, WordPress, Drupal, Magento, CakePHP, Statamic, and any custom PHP framework.

Features

Sites, domains and TLS
  • 🌐 Automatic .test domains. One command gives a project a hostname and TLS that reissues before it expires, with no dnsmasq, no system resolver tweak and no sudo for the DNS bits. You can opt out of lerd-managed DNS for *.localhost, or toggle it later with dns:enable / dns:disable / dns:repair.

  • πŸ”— Site groups. Group related sites so a main site owns a base domain and the rest occupy its subdomains, with a shared or separate database per secondary.

  • 🧱 Host-proxy sites. Run a Node, Python, Go or any non-PHP dev server on the host and have nginx serve it at a .test domain with HTTPS, git worktrees included. A wedged dev server can be bounced from the site header without reaching for a terminal.

  • 🌳 First-class git worktrees. Auto-detected branch domains, per-worktree PHP and Node versions, optional database isolation, wildcard cert SANs for *.branch.site.test, and a per-branch Vite worker on the host. Add and remove them from a dashboard modal without touching the CLI. A bare git worktree add from any tool is set up automatically, and lerd worktree wait blocks until that pipeline has actually finished, so a script or an agent never touches a half-installed tree.

  • 🌍 Share a site. On your LAN with a stable port and a QR code, or publicly through ngrok, cloudflared, Expose, Pinggy, serveo or localhost.run, from the CLI or the dashboard's share menu. Set a Cloudflare base domain once and every share is served on <site>.<domain>, so a webhook or OAuth callback keeps its URL between runs, and ngrok runs from its published image on a machine that never installed it. Or skip the tunnel services entirely: point a wildcard you control at the machine, set that base domain once, and lerd answers on <site>.<domain> through the reverse proxy or VPN you already run, with the site's ordinary .test vhost untouched beside it.

  • 🎨 Dev servers on the site's own domain. A running Vite serves its assets and its hot-reload socket under the site's .test hostname instead of advertising localhost:5173, so a shared, LAN-opened or worktree page arrives styled. Nothing in the project is edited and nothing is declared per framework.

PHP, Node and runtimes
  • 🐘 Per-project PHP version. 8.1 to 8.5, plus a frozen 7.4 / 8.0 legacy tier for projects hosted on the old stack, switched with one click. Custom PHP extensions and Alpine packages are declared once and applied to every image lerd builds, so changing a site's version never silently drops what you asked for.

  • ⚑ FrankenPHP runtime. Per site, as an alternative to shared PHP-FPM, with Laravel Octane and Symfony Runtime worker mode.

  • πŸ“¦ Node.js isolation. Node 22 or 24 per project, through the bundled fnm or an nvm you already have, switchable from the dashboard. Or bun as the JS runtime on the host and, opt-in, inside the container.

  • πŸͺ„ No per-framework setup. Workers, env values and the nginx vhost are all configured for you when you link a project. "Env" means whatever file your framework actually reads: a .env, WordPress's wp-config.php, Magento's env.php or the $databases array Drupal keeps in settings.php, written in place with the rest of the file left exactly as it was.

  • 🧩 Framework store. Community definitions for Laravel, Symfony, WordPress, Drupal, Magento, CakePHP, CodeIgniter, Statamic and Tempest with versioned auto-detection, back to the majors that still run on PHP 7.4. Each one carries its own mark and brand colour, so a framework published tomorrow arrives complete without a new lerd release.

Services and databases
  • πŸ—„οΈ One-click services. MySQL, PostgreSQL, Redis, Meilisearch, RustFS, Mailpit, Reverb, OpenSearch and more, the default stack built in and every add-on fetched from a store that updates without a new lerd release. Browse, create and drop an engine's databases from its service page, with snapshots, export and import. Engines stay on loopback unless you publish them to the LAN, which is an opt-in that lives under the LAN exposure it depends on.

  • πŸ”Œ Host tools that reach the container. psql, mysql, pg_dump and friends run on your host against lerd's engines with no client installed and no port to remember, by name or on the loopback port lerd publishes. Point an IDE's phpstan, php-cs-fixer or phpcs at the same shims and they run in the project's PHP container, including against the temp buffer copies PhpStorm analyses from outside the project tree. Prefer a bare php pointed at a host install? lerd path:disable takes the shims off your PATH and everything lerd runs keeps working.

  • 🧷 IDE database wiring for JetBrains. A project gets one data source pointed at its own lerd database on the host port it actually answers on, written on link and refreshed as the project's database changes, leaving every data source lerd doesn't own untouched.

Debugging and performance
  • πŸ›°οΈ Debug window. Intercepts every dump() / dd() and streams it to the dashboard, TUI, MCP and lerd dump tail, scoped per site and per worktree branch. The same window captures SQL with N+1 and slow-query detection, plus mail, views, events, queued jobs and outgoing HTTP, on Laravel and Symfony.

  • πŸ”₯ 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, with no FPM restart and no code changes, and lerd profile run profiles a one-shot artisan or CLI command.

  • πŸ“ˆ Request timing analytics. A durable per-site view of typical and p95 response times, throughput, error rate, and the slowest routes ranked by recent p95 with one-click profiling. Agents get the same signal over MCP with route_timing and optimize_route.

  • πŸ§ͺ Tinker tab. An in-browser PHP REPL per site with project-aware autocomplete, hover and diagnostics powered by phpantom_lsp, so your models and Builder chains resolve alongside composer helpers. Works on Laravel, Symfony, and any composer project. Reusable snippets are read from the project, from an existing .tinkerwell/snippets, or from a personal folder that follows you across every site.

Interfaces
  • πŸ–₯️ Built-in Web UI. Sites and services dashboards, live widgets, a global Cmd+K command palette, and install/remove of PHP and Node versions from the System page. Available in fourteen languages. Reachable from another machine behind credentials when you expose it, where the actions that touch the host itself, terminals, filesystem browsing, raw .env reads, stay local until you grant them explicitly.

  • ✨ Start a project from the dashboard. The + in Sites scaffolds a new project from the framework store or links one you already have, asks the same questions lerd init asks about PHP version, Node, HTTPS and services, and then runs the setup steps with composer and the JS build streaming into the modal. Close the tab mid-install and it picks back up where it was.

  • πŸ“š The documentation, offline. Every page ships inside the binary, searchable and rendered in the dashboard, so the one moment you most need the docs, a machine with no internet, is not the moment they stop working. lerd man reads the same pages in the terminal.

  • πŸ’» Terminal dashboard (lerd tui). A 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.

  • ✏️ Edit config in the browser. Per-site and global nginx, php.ini with the version's own file and the shared scope side by side, .env files, and database/service runtime tuning, each validated (nginx -t where it applies), with timestamped backups and one-click restore.

  • πŸ“‹ Live logs for PHP-FPM, Queue, Schedule and Reverb, per site, rendered in the colour the tool actually emits (artisan, composer, vite, pest) and with a button that hands any log to a real terminal so a long tail survives closing the tab.

  • πŸ”” Notifications for the things worth interrupting you, delivered to open dashboards, to subscribed browsers over Web Push, or to your desktop's native notification daemon. Every one also lands in the dashboard's sidebar bell, which keeps the last 50 with an unread count across reloads.

  • πŸ€– MCP server. Let AI assistants (Claude Code, Cursor, JetBrains Junie, Codex CLI, Gemini CLI, GitHub Copilot, Google Antigravity, Windsurf) manage your environment directly.

Health and upkeep
  • 🧰 Environment doctor (lerd doctor). Checks the host lerd itself depends on and repairs what it safely can with --fix: missing directories, linger, a missing PHP image, the DNS wiring. Anything needing sudo is printed as a command and never run for you, and --dry-run shows it first.

  • 🩺 Site doctor. Health checks that apply to any project (env drift, application key, composer and node install state, security audits, database presence, PHP version range, a key an env file sets twice) plus extra checks for your framework, with one-click fixes. It installs and starts the services a site declares, rewrites an nginx vhost that has drifted from what lerd would write today, and points a project at the database it picked, all from the button that reported the problem. From the web UI, the TUI, lerd site:doctor and MCP.

  • βš’οΈ 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. A worker that keeps failing can be stopped from the same banner rather than restarted into the same wall.

  • πŸ’Ύ Nothing destructive without a way back. A service remove --purge or a reinstall --reset-data takes a full snapshot of every database first, while the data is still where the engine expects it, so getting it back is an ordinary db:restore -A rather than a data directory only the old image could open. Each engine declares how long it gets to shut down, so a database finishes its checkpoint instead of being killed mid-write.

  • πŸ’€ Idle-suspend. Activity-driven suspension of a site's workers (queue, schedule, horizon, reverb, stripe, Vite) after a configurable idle timeout, resumed on the next request, CLI command, MCP call or file save, with per-site pinning.

  • πŸ“Œ Pinned host tools. Composer, fnm and mkcert are pinned behind a published manifest rather than whatever releases/latest served that day, so an upstream release cannot break a fresh install overnight, and the System page reports each against its pin and applies the update on the card that flagged it.

  • πŸ”’ Rootless and daemonless. Podman-native, no Docker required, dual-stack IPv4 + IPv6.

AI Integration (MCP)

Lerd ships a built-in Model Context Protocol server. Connect it to Claude Code, Cursor, JetBrains Junie, Codex CLI, Gemini CLI, GitHub Copilot, Google Antigravity, Windsurf, 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(action: "link")
     β†’ exec(action: "composer", args: ["install"])
     β†’ env(action: "setup")        # detects MySQL + Redis, starts them, creates DB, generates APP_KEY
     β†’ framework(action: "setup")  # storage:link + migrate for Laravel, doctrine:migrations:migrate for Symfony
     βœ“  myapp β†’ https://myapp.test ready

Twelve grouped tools, each driven by an action: site, service, db, env, runtime, worker, exec, framework, diag, logs, workspace, and worktree. Scaffold projects, run migrations, manage services, toggle workers, tail and search logs, enable Xdebug, manage databases and 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 Laragon
Podman-native βœ… 🟑 ❌ ❌ ❌
Rootless βœ… ❌ ❌ βœ… ❌
Web UI βœ… ❌ ❌ βœ… ❌
Terminal dashboard βœ… ❌ ❌ ❌ ❌
Linux βœ… βœ… βœ… ❌ ❌
macOS βœ… βœ… βœ… βœ… ❌
Windows πŸ§ͺ βœ… βœ… βœ… βœ…
MCP server βœ… ❌ ❌ βœ… ❌

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

πŸ§ͺ Lerd's Windows support runs inside WSL2 and is currently beta, see the Windows (WSL2) guide. Laragon runs natively on Windows and has no Linux or macOS build, see Laragon for Linux if that is what brought you here.

Install

Linux
curl -fsSL https://lerd.sh/install.sh | bash

Update later with:

lerd update
Install via apt instead (Ubuntu/Debian)

The PPA publishes for every Ubuntu release in standard support and for the current development release. On one of those:

sudo add-apt-repository ppa:lerd/lerd
sudo apt update
sudo apt install lerd

On any other release the PPA has no packages, and add-apt-repository leaves behind a source entry that fails every later apt update. Remove it with sudo add-apt-repository --remove ppa:lerd/lerd and use the script installer above.

The package finishes setup with no prompt: its maintainer script applies the root-level steps and runs the per-user install, so .test DNS and HTTPS come up on their own. Update with sudo apt upgrade; a packaged lerd lives under /usr, so lerd update defers to your package manager instead of fighting it.

Install via dnf instead (Fedora)

The COPR builds for every Fedora release in standard support and for rawhide:

sudo dnf copr enable georged/lerd
sudo dnf install lerd

The package finishes setup with no prompt, exactly like the apt one: .test DNS and HTTPS come up on their own. Update with sudo dnf upgrade; a packaged lerd lives under /usr, so lerd update defers to your package manager instead of fighting it.

Install via Homebrew instead
brew install lerd-env/lerd/lerd
lerd install

Podman comes from your distro rather than as a brew dependency, and Homebrew on Linux needs its usual prerequisites (notably a C compiler). Update with brew upgrade lerd.

macOS
curl -fsSL https://lerd.sh/install.sh | bash

Update later with:

lerd update

The installer needs the podman CLI; it will offer to brew install podman if it's missing.

Install via Homebrew instead
brew install lerd-env/lerd/lerd
lerd install

Recent Homebrew versions block third-party taps until trusted, so you may need to run brew trust lerd-env/lerd first. Update later with brew upgrade lerd && lerd install.

NixOS

NixOS has its own flake, since its declarative model doesn't fit the one-line installer's imperative DNS and self-install steps.

nix run github:lerd-env/lerd-nixos -- --help

The lerd-nixos flake packages the binary and ships the configuration.nix blocks the stack needs. See the NixOS guide for the full runbook.

[!NOTE] See the installation docs for details.

Desktop app (optional)

Prefer a dedicated window to a browser tab? Lerd Desktop wraps the dashboard in a native app with native desktop notifications for captured mail, worker failures, and finished operations, no browser needed. Linux, shipped as a Flatpak:

flatpak install --user https://lerd.sh/lerd.flatpakref

Once it's installed, lerd dashboard opens the app instead of the browser.

Quick Start

cd my-laravel-project
lerd link
# β†’ https://my-laravel-project.test
lerd open           # the site in your browser
lerd code           # the project in your editor

Starting from nothing, lerd new asks which framework and which major from the store, scaffolds it, and links the result, so you land on a served site rather than on three commands to type.

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 lerd-env/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, and its workers, env values, nginx proxy and setup commands are configured from there.

Services work the same way. Lerd ships the default stack, and every add-on lives in lerd-env/services, so a new service reaches you without updating lerd:

lerd service search                     # browse the store
lerd service preset pgadmin             # install a store-only preset

Documentation

πŸ“– lerd.sh

Built on

Lerd stands on a set of excellent open-source projects it bundles or fetches to power the experience:

  • phpantom_lsp - the PHP language server behind tinker autocomplete, diagnostics and semantic highlighting
  • Monaco - the editor engine for every in-browser editing surface
  • php-spx - the profiler behind the SPX flame graphs
  • mkcert - the local CA that backs .test HTTPS
  • fnm - the per-project Node version manager
  • Composer - fetched on the host for dependency operations
  • Starship - the prompt in the container shell drop-in
  • Simple Icons - the service marks in the dashboard, CC0

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
activityping
Package activityping is the host-side client for the lerd-watcher's idle control socket: it keeps a worked-on site awake under idle-suspend and asks the watcher to resume all suspended workers when the feature is switched off.
Package activityping is the host-side client for the lerd-watcher's idle control socket: it keeps a worked-on site awake under idle-suspend and asks the watcher to resume all suspended workers when the feature is switched off.
agentenv
Package agentenv forwards AI coding-agent detection variables across the container boundary so tools like laravel/pao (via laravel/agent-detector) still switch to JSON output when run through `lerd php`, tinker, or MCP.
Package agentenv forwards AI coding-agent detection variables across the container boundary so tools like laravel/pao (via laravel/agent-detector) still switch to JSON output when run through `lerd php`, tinker, or MCP.
atomicfile
Package atomicfile writes small state files the way lerd's daemons need: atomically, and only when the content actually changed.
Package atomicfile writes small state files the way lerd's daemons need: atomically, and only when the content actually changed.
cfgedit
Package cfgedit is a small service for editing user-owned config files that lerd seeds but never overwrites (per-site nginx overrides, the global http-level nginx override, php.ini overrides).
Package cfgedit is a small service for editing user-owned config files that lerd seeds but never overwrites (per-site nginx overrides, the global http-level nginx override, php.ini overrides).
cleanup
Package cleanup reclaims podman disk lerd's own image rebuilds leave behind.
Package cleanup reclaims podman disk lerd's own image rebuilds leave behind.
cli
composer
Package composer holds settings shared by every code path that runs composer inside a lerd FPM container β€” the `lerd composer` CLI and the MCP composer tools alike β€” so they stay consistent.
Package composer holds settings shared by every code path that runs composer inside a lerd FPM container β€” the `lerd composer` CLI and the MCP composer tools alike β€” so they stay consistent.
daemon
Package daemon holds process-level setup shared by lerd's long-running processes: lerd-ui, the watcher, the tray, and the MCP server.
Package daemon holds process-level setup shared by lerd's long-running processes: lerd-ui, the watcher, the tray, and the MCP server.
desktopnotify
Package desktopnotify posts native desktop notifications from the daemon.
Package desktopnotify posts native desktop notifications from the daemon.
devtoolsops
Package devtoolsops contains the shared logic for toggling the lerd_devtools collector.
Package devtoolsops contains the shared logic for toggling the lerd_devtools collector.
dns
download
Package download is the shared helper behind every binary lerd fetches from the network: composer, fnm, mkcert, phpantom_lsp, and self-update archives.
Package download is the shared helper behind every binary lerd fetches from the network: composer, fnm, mkcert, phpantom_lsp, and self-update archives.
dumps
Package dumps receives, buffers, and fans out PHP `dump()`/`dd()` events captured by the lerd debug bridge (auto_prepend_file).
Package dumps receives, buffers, and fans out PHP `dump()`/`dd()` events captured by the lerd debug bridge (auto_prepend_file).
dumpsops
Package dumpsops contains the shared business logic for toggling the lerd debug bridge.
Package dumpsops contains the shared business logic for toggling the lerd debug bridge.
editor
Package editor resolves the command that opens a path in the user's editor, shared by the dashboard's "open in editor" links and the `lerd code` command.
Package editor resolves the command that opens a path in the user's editor, shared by the dashboard's "open in editor" links and the `lerd code` command.
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.
feedback
Package feedback renders lerd's CLI progress output (animated steps, a live line, summaries, prompts, warnings) and owns the shared lerd colour palette.
Package feedback renders lerd's CLI progress output (animated steps, a live line, summaries, prompts, warnings) and owns the shared lerd colour palette.
freeport
Package freeport provides a shared, dependency-free TCP host-port allocator: a dual-stack bindability probe and a predicate-injected free-port search.
Package freeport provides a shared, dependency-free TCP host-port allocator: a dual-stack bindability probe and a predicate-injected free-port search.
git
grouping
Package grouping manages site groups: a main site that owns a base domain and one or more secondary sites that each occupy a chosen subdomain label of that base domain (e.g.
Package grouping manages site groups: a main site that owns a base domain and one or more secondary sites that each occupy a chosen subdomain label of that base domain (e.g.
hostbin
Package hostbin resolves host binaries that live outside the PATH a daemon inherits.
Package hostbin resolves host binaries that live outside the PATH a daemon inherits.
ide
Package ide keeps a project's IDE-side pointers at lerd in sync.
Package ide keeps a project's IDE-side pointers at lerd in sync.
idle
Package idle implements activity-driven worker suspension: it tracks when each site was last active and (later) suspends a quiet site's suspendable workers, resuming them on the next activity.
Package idle implements activity-driven worker suspension: it tracks when each site was last active and (later) suspends a quiet site's suspendable workers, resuming them on the next activity.
imgledger
Package imgledger records the container image refs lerd itself pulled.
Package imgledger records the container image refs lerd itself pulled.
linker
Package linker owns the decision half of registering a directory as a lerd site.
Package linker owns the decision half of registering a directory as a lerd site.
logcolor
Package logcolor centralises the environment that makes CLI tools emit ANSI colour when lerd runs them with no TTY attached.
Package logcolor centralises the environment that makes CLI tools emit ANSI colour when lerd runs them with no TTY attached.
logsource
Package logsource gives a single, filtered view over every log lerd can reach: framework application log files, PHP-FPM/nginx/dns/service container stdout, and worker/watcher/ui units (systemd journal on Linux, launchd log files on macOS).
Package logsource gives a single, filtered view over every log lerd can reach: framework application log files, PHP-FPM/nginx/dns/service container stdout, and worker/watcher/ui units (systemd journal on Linux, launchd log files on macOS).
man
mcp
origin
Package origin centralises every URL lerd fetches its own assets from: release binaries, the framework and service stores, the changelog, and the GHCR base images.
Package origin centralises every URL lerd fetches its own assets from: release binaries, the framework and service stores, the changelog, and the GHCR base images.
php
phpantom
Package phpantom manages the phpantom_lsp PHP language server binary that powers tinker autocomplete, diagnostics, and hover in the web UI.
Package phpantom manages the phpantom_lsp PHP language server binary that powers tinker autocomplete, diagnostics, and hover in the web UI.
phpini
Package phpini centralizes the php.ini editor's scope handling so the CLI, the web UI, and the MCP server share one definition of what a scope is, which file it maps to, and which containers a change restarts.
Package phpini centralizes the php.ini editor's scope handling so the CLI, the web UI, and the MCP server share one definition of what a scope is, which file it maps to, and which containers a change restarts.
phpsets
Package phpsets answers what a PHP version's image actually carries, as opposed to what the user declared.
Package phpsets answers what a PHP version's image actually carries, as opposed to what the user declared.
power
Package power reports the host's power state so lerd can back off work that is cheap on mains and expensive on a laptop running from its battery.
Package power reports the host's power state so lerd can back off work that is cheap on mains and expensive on a laptop running from its battery.
presetfixtures
Package presetfixtures embeds the add-on service presets that ship in the external lerd-env/services store rather than the binary, and exposes them as an fs.FS.
Package presetfixtures embeds the add-on service presets that ship in the external lerd-env/services store rather than the binary, and exposes them as an fs.FS.
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.
reqstats
Package reqstats turns the nginx access feed into a per-site view of request timing: the typical response time and the routes that run well above their own baseline.
Package reqstats turns the nginx access feed into a per-site view of request timing: the typical response time and the routes that run well above their own baseline.
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).
shims
Package shims is the single owner of the client-tool host shims that lerd services expose (mysqldump, pg_dump, psql…): the tri-state install decisions, host-conflict detection, script generation, and the reconcile that brings the shim dir in line with the installed services.
Package shims is the single owner of the client-tool host shims that lerd services expose (mysqldump, pg_dump, psql…): the tri-state install decisions, host-conflict detection, script generation, and the reconcile that brings the shim dir in line with the installed services.
sitedoctor
Package sitedoctor runs app-level health checks for a single site.
Package sitedoctor runs app-level health checks for a single site.
sitetpl
Package sitetpl expands the {{…}} placeholders a framework definition may use in env vars, setup steps, and commands, so the store can declare a per-site value (a base URL, a database name) without lerd knowing the framework.
Package sitetpl expands the {{…}} placeholders a framework definition may use in env vars, setup steps, and commands, so the store can declare a per-site value (a base URL, a database name) without lerd knowing the framework.
spxreport
Package spxreport reads the SPX profiler's on-disk captures and distills each into a handful of timing outliers.
Package spxreport reads the SPX profiler's on-disk captures and distills each into a handful of timing outliers.
stats
Package stats reads cheap per-container resource usage via `podman stats` and exposes a structured view both lerd-ui (for the dashboard widget) and the TUI (for its Dashboard pane) can share.
Package stats reads cheap per-container resource usage via `podman stats` and exposes a structured view both lerd-ui (for the dashboard widget) and the TUI (for its Dashboard pane) can share.
tools
Package tools resolves the pinned versions and download URLs of the host tools lerd installs (composer, fnm, mkcert).
Package tools resolves the pinned versions and download URLs of the host tools lerd installs (composer, fnm, mkcert).
tui
Package-level UI helpers: small render primitives that don't fit cleanly into any one feature module.
Package-level UI helpers: small render primitives that don't fit cleanly into any one feature module.
ui
unitlog
Package unitlog centralises how lerd locates a unit's logs across platforms: whether a unit runs as a detached podman container (logs via `podman logs`) versus a launchd-supervised service on macOS (logs in ~/Library/Logs/lerd), and the framework-worker classification both decisions lean on.
Package unitlog centralises how lerd locates a unit's logs across platforms: whether a unit runs as a detached podman container (logs via `podman logs`) versus a launchd-supervised service on macOS (logs in ~/Library/Logs/lerd), and the framework-worker classification both decisions lean on.
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.
wsl
Package wsl holds the WSL2-specific detection and config-patching logic that `lerd wsl:setup` and the doctor's WSL checks share.
Package wsl holds the WSL2-specific detection and config-patching logic that `lerd wsl:setup` and the doctor's WSL checks share.
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