MoonGuard

A Filament plugin for monitoring several Laravel apps from one dashboard, with uptime and certificate checks, server readings, exception records, and alerts.

Period
November 2022 – January 2026
Role
Maintainer, author
Team
Taecontrol
Stack
PHP ^8.2, Laravel, Filament 3, Livewire 3, Blade, Tailwind, PHPUnit
Status
Closed
MoonGuard dashboard with uptime, certificate checks, server readings, and exceptions for several Laravel sites.

MoonGuard was a monitoring plugin for people running several Laravel applications. I worked on it at Taecontrol. We wanted to register those applications in one dashboard and see when a site went down or its certificate was about to expire.

We chose to build inside Filament. Someone could install MoonGuard into their own Laravel app through Composer, publish its migrations, and use the panel to manage the sites they monitored. Filament provided the forms and tables, so we could spend our time on the monitoring behavior. The package used Filament 3 and Livewire 3.

What the host could see

Some checks worked from outside an application. MoonGuard could request a URL to check uptime and inspect its SSL certificate. Other information needed to come from the application itself. An external check could not tell us which exception had occurred or how much memory the server was using.

Larvis handled that reporting. It was a separate PHP package installed in each monitored application, configured to send exceptions and server readings to the MoonGuard host over HTTP. The dashboard could show CPU load, RAM usage, and disk space alongside the external checks. Email and Slack notifications reported conditions that needed attention.

Larvis could also send debugging data to Krater, our desktop app. Keeping the collector separate let the same application report to a production monitoring host and to a local debugging window. It also meant we had related packages to maintain together.

We wrote a free book alongside the plugin, called MoonGuard: The Software Creator's Journey. It explained how we designed and published the package, using examples from the implementation. Writing a chapter made us explain decisions we might otherwise have left in the code. When a feature was hard to describe, that gave us a reason to look at its design again.

MoonGuard is closed. The repository remains public under the MIT license. The main site is down, so the old links to the demo and book are no longer a way to use the project.

I still value the choice to write while building it. The book gave us another way to review the package. I would be more careful about the maintenance commitment, though. A monitoring tool needs attention after its first releases because people use it to decide whether another application is healthy.