The queries look fine, the page is still slow, and now you are adding microtime calls to your own code like it is 2009.
Lerd bundles the SPX profiler. Flip one switch and it captures your slow requests. Open one and you get a flame graph of the call stack, so the function that ate 400 ms is the widest bar on the screen, with the file it lives in beside it.
It works on every PHP version Lerd runs, with no extension to compile and no php.ini to edit.
5
168
Ask an AI assistant why a page is slow and it will read your code and guess. The answer sounds right, and it often points at the wrong thing.
Through Lerd's MCP server the assistant reads the site's real response times and picks the slowest routes. For each one it gets the N+1 and slow queries captured behind it, with the file and line that ran them, plus the hottest functions from an SPX profile when there is one.
What it proposes then is the eager load or the index that fixes a problem somebody measured.
Plenty of apps are really several sites: a storefront, an admin panel, a blog, an API. Run them as separate projects and you lose the shared domain they have in production.
Lerd's site groups put them under one base domain, as subdomains, and can have them share one database. You manage the group from the site header, add a site from a picker, and the group shows up together everywhere in the dashboard.
That makes it a natural fit for multi-tenant apps and anything else that lives on subdomains.
Checking whether your branch is behind should not mean finding the right terminal tab first.
Lerd puts Fetch, Pull and Push in the site header, next to the worktree tabs, for whichever checkout you have selected. A branch with no upstream gets a single Publish button instead, and the main checkout has a branch switcher that can create a branch from any base.
Pull is fast-forward only and push is never forced. A branch that has diverged holds both back and tells you why.
11
361
Testing a newsletter on a copy of the production database is how real customers end up with a mail that says test test test.
Lerd sends every mail your local sites produce to Mailpit, and its inbox sits inside the dashboard. Password resets, order confirmations, whatever the app sends, you see the rendered message, the HTML source and the headers, and nothing leaves your machine.
Caught mail can also be scored for spam with SpamAssassin, and each message is stamped with the template that rendered it, so you know which view to fix.
Install the Meilisearch PHP client and you will need a Meilisearch server. lerd notices.
It reads the composer packages your project requires and suggests the services they point at, with the reason, right on the site's overview. Add one in a click and lerd starts it and wires it into your .env.
Removing a service from a site is just as easy, and it leaves the service and its data alone for your other projects.
#Laravel #Composer
Most developers only learn a page is slow when a user complains.
Lerd times every request nginx serves for your sites. Each site's overview shows the typical and p95 response time, the request count, the error rate, a histogram of response times, throughput over time, and the slowest routes.
Because it comes from your own clicking around, you notice the route that went from 80 ms to 500 ms the day it happens, and you can open its slowest request to see why.
#PHP #performance
Not everyone wants a browser tab open.Lerd tui is a full terminal dashboard, and 1.37 rebuilds it from the ground up.
There is now one sidebar for the dashboard, your databases, PHP and Node, settings, your sites grouped by workspace, and your services. The dashboard leads with what needs attention, each fix one key away.
ctrl+p opens a palette that reaches every page, site, worktree, service and action, matching words in any order. Regions are told apart by shade, taken from your terminal's own colours, so the TUI wears your theme.
#terminal #TUI
Lerd 1.38 takes plugins.
A plugin is a folder with a plugin.yaml and the scripts it names, in shell, Python or Node. It can add CLI commands, buttons in a site's Commands menu, hooks that run when something happens, tools for your AI assistant, a page in the dashboard, a tab on every site, and services and frameworks of its own.
The Plugins page installs, updates and removes them, and shows everything a plugin adds before you install it: every command, tool and hook.
The Sail import is the first thing to move out of Lerd and into a plugin.
#PHP #opensource
Lerd 1.38 is out, and it runs on Windows.
One installer takes a bare Windows machine to a working Lerd in three steps: it enables WSL, adds Ubuntu, and joins it to Windows. After that .test resolves in your Windows browser, wildcards included, and your sites survive a reboot. Same containers, same dashboard, same Lerd as on Linux.
Also new: plugins. A folder with a plugin.yaml and a few scripts can add commands, dashboard pages, MCP tools or its own services. The first ones are up at plugins.lerd.sh, build yours and submit it, lerd plugin new gets you started.
And Lerd now issues its own certificates, mkcert has been unmaintained since 2022.
Free, open source, MIT.
Starting a new project should take a minute, not an afternoon.
Lerd new is a wizard: pick the framework and version, and lerd scaffolds it with the framework's own installer, links it, gives it a .test domain with HTTPS, writes the config files that framework reads, and takes it through setup. Laravel, Symfony, WordPress and the rest of the store are all there.
Prefer clicking? Create the same site from the dashboard's Add a site dialog.
#Laravel #Symfony
Your PHP logs only tell half the story. When a page breaks in the browser, a JavaScript error, a fetch that returned 500 or an image that never loaded, the backend never hears about it.
lerd 1.37 adds browser logs. Switch them on for a site and lerd injects a small script into its pages that reports uncaught errors, unhandled promise rejections, console warnings, failed requests and broken resources back to the dashboard.
Every report is grouped by page view and tied to the PHP request that served that page, so you can go from a TypeError straight to the queries behind it. Frameworks can add presets for libraries like Livewire.
#JavaScript #webdev
Most of the day your local databases run for nobody. MySQL, Redis, Mailpit and friends sit in memory while you are in a meeting or working on something else.
Lerd 1.37 extends idle-suspend to services. Once every site using a service has been idle past the timeout, the service goes to sleep and shows a moon in the dashboard.
The clever part is waking up. A request that arrives while they sleep isn't redirected to a "waking up" page. It is held while the services start in parallel, then answered for real, so your browser, an API client or a webhook never notices. Pinned services stay up.
#PHP #Linux
Testing a responsive layout in browser dev tools is not the same as testing on a real phone.
Lerd shares any local site on your network with one click. It shows a QR code: scan it with your phone and you get the real site, served by your machine, with the asset URLs rewritten so everything loads. Worktrees can be shared too, each on its own address.
Turn it off and the site is private again.
#webdev #mobile
Pasting logs into an AI chat is a bad workflow. They get cut off, they go stale, and the assistant only sees what you thought to copy.
Lerd 1.37 adds Copy for agent. It sits on the request inspector, on a failing site doctor check and on any app log entry. Click it and you get a short prompt naming the site and the exact lerd MCP call that reads the full data.
Paste that into Claude Code or Cursor and the assistant pulls the request's queries, logs and errors itself, leading with what went wrong, N+1 and slow queries first, then goes after the root cause.
#AI #ClaudeCode
Queue workers, the scheduler, Horizon, Reverb, a Stripe listener and a Vite dev server, multiplied by every project you have open, add up to a lot of CPU and memory for code nobody is using.
Lerd's idle-suspend watches each site for activity: web requests, CLI commands, AI tool calls and file saves. After a timeout it suspends that site's workers, and brings them back the moment you load a page or run a command.
You keep every project linked and ready, and your laptop stays cool.
#Laravel #Horizon















