Cachet
The open-source, self-hosted status page system that keeps your users informed during outages and maintenance windows.
Cachet is a battle-tested, open-source status page system built on Laravel that gives engineering teams a clean public interface for communicating service health, incidents, and scheduled maintenance. Originally released in 2014, Cachet has undergone a major architectural overhaul with its version 3 rebuild — moving to Laravel 11, adopting Filament for the admin dashboard, and restructuring the core logic into a separate installable package (cachethq/core) that can be embedded into any existing Laravel application.
At its heart, Cachet provides the building blocks status page operators need: components representing individual services or API endpoints, incident management with timestamped updates, maintenance scheduling, and subscriber email notifications. Teams can group components logically, attach custom metadata, and let subscribers opt into notifications for specific services rather than the entire status page.
Cachet’s v3 release introduces webhook support for integrating with Slack, PagerDuty, or custom automation pipelines, a redesigned multi-locale system supporting 12+ languages out of the box, and configurable API rate limiting. The admin experience is powered by Filament, giving operators a polished, reactive dashboard for day-to-day incident management without requiring custom front-end development.
With over 15,000 GitHub stars, active commercial sponsorship, and a public v3 demo environment, Cachet occupies a well-established position in the self-hosted status page ecosystem. It deploys via Composer, supports MariaDB, MySQL, PostgreSQL, and SQLite, and ships with Docker-ready configuration — making it accessible to teams across a wide range of infrastructure setups.
What You Get
- A public-facing status page displaying real-time component health with per-group visibility controls
- Full incident lifecycle management: create, update, and resolve incidents with timestamped entries and status transitions
- Scheduled maintenance announcements with subscriber opt-in notifications sent via email
- A Filament-powered admin dashboard for managing components, incidents, subscribers, and settings without writing front-end code
- Webhook dispatch on incident events for integration with Slack, PagerDuty, custom scripts, or other automation pipelines
- RESTful API with configurable rate limiting and Laravel Sanctum token authentication for programmatic access
- Multi-locale support for 12+ languages including German, Spanish, Dutch, Chinese, Korean, and Portuguese
- Docker-ready deployment with environment-based configuration for database, mail, queue, and proxy settings
Common Use Cases
- SaaS incident communication - engineering teams post incident updates to a customer-facing status page to reduce support ticket volume during outages
- Internal service health dashboard - platform teams expose a private Cachet instance (behind auth middleware) showing microservice health to internal stakeholders
- Planned maintenance coordination - ops teams announce maintenance windows in advance with automatic subscriber email notifications and countdown timers
- Multi-service API monitoring integration - teams connect external uptime monitors (UptimeRobot, Prometheus) to Cachet’s API to auto-update component statuses when thresholds are breached
- Embedded status page in Laravel apps - developers install
cachethq/coreas a Composer package to add a status page to an existing Laravel application without deploying a separate service
Under The Hood
Architecture
Cachet v3 adopts a package-centric architecture where the status page logic lives in a separately versioned cachethq/core Composer package, while the top-level repository serves as a reference Laravel application that wires the core into a deployable product. This separation allows teams to embed Cachet’s status page capabilities directly into an existing Laravel application rather than running a standalone service, which meaningfully reduces operational overhead for shops already running Laravel. The application follows standard Laravel layered conventions — route definitions delegate to Filament panel resources and API controllers, service providers register the core package’s routes and views, and Eloquent models extend base classes from the core package for shared behaviours like soft deletes and meta relationships. Configuration is intentionally externalised into environment variables, keeping deployment topology decisions out of application code.
Tech Stack The stack is PHP 8.2+ running on Laravel 11 with Filament 3 handling all admin panel UI through its reactive Livewire-based component system — no separate JavaScript SPA is needed for the dashboard. The public status page is server-rendered with Blade templates. Data persistence supports MariaDB, MySQL, PostgreSQL, and SQLite via Laravel’s Eloquent ORM. Queue workers handle webhook dispatch and subscriber notification delivery through Laravel’s queue abstraction, defaulting to database queues but supporting Redis or any other Laravel-compatible driver. Laravel Sanctum provides API token authentication, and the application ships with AWS S3-compatible file storage support via Flysystem for asset uploads. The dev toolchain uses Composer, npm/Vite for asset compilation, and Laravel Nightwatch for production observability.
Code Quality
The codebase in the primary repository is intentionally thin — the application-layer files (controllers, models, providers) number in the dozens rather than hundreds, with substantial logic delegated to the core package. PHPUnit is configured with both Unit and Feature test suites, and the phpunit.xml reveals sensible test isolation practices: in-memory array cache, synchronous queue processing, and array mail transport for test runs. Coding standards follow Laravel conventions enforced by StyleCI historically, with the v3 rebuild showing cleaner separation of concerns than earlier versions. Inline comment density is moderate, relying on Laravel’s self-documenting patterns and config file docblocks rather than verbose inline annotations. The proprietary licence declared in composer.json and the custom source-available LICENSE.md reflect the commercial evolution of the project.
What Makes It Unique
Cachet’s primary differentiator among open-source status page tools is its embeddability: the cachethq/core package model lets Laravel developers drop a full status page into an existing application as a Composer dependency, rather than operating a completely separate service. Combined with Filament’s out-of-the-box reactive admin interface, Cachet offers a substantially lower front-end development burden than bare-bones alternatives. The per-subscriber, per-component notification granularity — allowing users to opt into updates only for the services they depend on — is also more sophisticated than many competing tools that blast all-or-nothing notifications. The multi-locale support covering 12+ languages from a single codebase, managed via Crowdin, makes it one of the more internationally accessible self-hosted status page options available.
Self-Hosting
Cachet is distributed under a custom source-available licence crafted by Alt Three Services Limited (doing business as Cachet Inc.). The licence permits commercial and non-commercial use, modification, and bundling as part of a larger application, but explicitly prohibits redistribution as a standalone product and prohibits offering the software as a hosted or managed service without express written permission. In practical terms, a team can self-host Cachet internally or deploy it as part of their own product without paying a licence fee, but they cannot resell managed Cachet instances or publish it as a competing product. The trademark policy adds an additional layer of restriction on branding and marketing use. If the standard licence does not fit your use case, the project does offer alternative licensing available through direct contact with the team.
Running Cachet yourself requires a PHP 8.2+ environment, Composer, a supported database (MariaDB, MySQL, PostgreSQL, or SQLite), and optionally a queue worker process for background jobs like sending subscriber notifications and dispatching webhooks. In production, you will typically run a web server (nginx or Apache), a PHP-FPM pool, at minimum one queue worker, and your chosen database — all of which you are responsible for provisioning, monitoring, backing up, and upgrading. The queue dependency is particularly important: subscriber emails and webhook calls are dispatched asynchronously, so a failed or absent worker means silent notification delivery failures. Docker configuration is provided to ease the initial setup, but ongoing operational burden — including database migrations when upgrading, SSL certificate management, and scaling the queue tier under high subscriber volumes — falls entirely on your team.
Cachet does not currently offer a commercially hosted cloud version, so there is no managed upgrade path, no vendor-provided SLA, and no support tier beyond community issues and the project’s own documentation at docs.cachethq.io. The flip side is that all your status page data stays on infrastructure you control, which matters for compliance-sensitive organizations. Compared to hosted alternatives like Statuspage.io or BetterUptime, self-hosted Cachet trades away zero-maintenance operation and vendor-backed uptime guarantees for full data ownership and no per-seat or per-component pricing — a trade-off that tends to appeal to engineering-driven teams with existing infrastructure competence.
Related Apps
Uptime Kuma
Monitoring
Self-hosted monitoring for every service you run — 23 monitor types, 95 notification channels, live dashboards, and public status pages with no vendor lock-in.
Uptime Kuma
MITNetdata
Monitoring · Devops
Real-time per-second metrics, ML-powered anomaly detection, and zero-config observability for any infrastructure.
Netdata
GPL 3.0Grafana
Monitoring · Analytics
The open-source observability platform that unifies metrics, logs, and traces from any data source into dynamic, queryable dashboards.