Cachet is a self-hosted status page platform designed for teams and organizations that need to communicate service uptime, outages, and maintenance events to their users. Built with PHP and Laravel, it provides a clean, professional interface for publishing real-time status updates without relying on third-party services. Ideal for SaaS companies, DevOps teams, and infrastructure providers who value data control and brand consistency.
Cachet runs on PHP 8.2+ with support for MariaDB, MySQL, PostgreSQL, or SQLite, and is installed via Composer. It offers a web-based dashboard for managing incidents, components, and metrics, with full control over hosting, data, and customization. The platform is actively maintained with a v3.x rebuild underway, ensuring modern architecture and long-term sustainability.
What You Get
- Self-hosted status pages - Deploy and control your own status page without vendor lock-in, using your domain and infrastructure.
- Incident management system - Create, update, and resolve incidents with real-time status updates and public notifications.
- Component monitoring dashboard - Define and track individual service components (e.g., API, database, CDN) with visual status indicators.
- Customizable branding - Fully customize colors, logos, and layout to match your organization’s brand identity.
- Public and private updates - Publish status updates to the public page while keeping internal notes private for your team.
- Multi-database support - Choose from MariaDB, MySQL, PostgreSQL, or SQLite for flexible deployment in any environment.
Common Use Cases
- SaaS companies reporting uptime - A SaaS provider uses Cachet to publish real-time API health and downtime alerts to customers, reducing support tickets.
- DevOps teams managing infrastructure - A DevOps team uses Cachet to display the status of microservices, databases, and CI/CD pipelines during deployments.
- Open-source project maintainers - A project maintainer hosts a status page to inform users about server outages or scheduled maintenance windows.
- Enterprise IT departments - An enterprise uses Cachet to centralize and publicize the health of internal tools like HR systems or ticketing platforms.
Under The Hood
Architecture
- The application is structured as a thin Laravel shell that delegates all core business logic to an external, versioned package (
cachethq/core), enforcing a clean separation between framework concerns and domain logic
- Controllers are minimal, relying entirely on Laravel’s built-in traits for authorization and validation, with no custom business logic embedded in the web layer
- Dependency injection is handled via Laravel’s service container, with domain models and authentication logic outsourced to external packages, creating a plugin-style architecture
- Middleware and configuration are kept lightweight, following convention-over-configuration principles to minimize boilerplate and maximize maintainability
Tech Stack
- PHP 8.2 and Laravel 11 form the backend foundation, leveraging Eloquent ORM, artisan commands, and PSR-4 autoloading for structure
- Frontend assets are compiled with Vite and styled using Tailwind CSS, integrated seamlessly via Composer and npm scripts
- File storage is handled through Flysystem with AWS S3 support, while SQLite serves as the default database with MySQL as an alternative
- Docker-based development environments enable consistent local setups with concurrent PHP server, queue worker, and Vite dev server
- Composer manages dependencies with a custom repository for the core package, enabling modular extension and versioned upgrades
Code Quality
- Code organization follows Laravel conventions with clear separation of concerns, but lacks domain-driven modularization and encapsulation
- Type safety is partially enforced through return type hints and PHPDoc, but runtime validation is minimal
- Error handling is absent across sampled code, with no structured logging, custom exceptions, or try-catch mechanisms
- Naming conventions are consistent and aligned with Laravel standards, but there is no evidence of linting, static analysis, or automated quality checks
- Test coverage is extremely limited, with minimal assertions and no comprehensive validation of core functionality or edge cases
What Makes It Unique
- Decouples the entire status page logic into a reusable, versioned core package, enabling modular upgrades and cross-project reuse
- Integrates Filament and Sanctum via traits into a unified user model, creating a seamless admin and API authentication experience without tight coupling
- Implements dynamic proxy trust configuration through environment-driven middleware, allowing flexible deployment in CDN and reverse proxy environments
- Applies intelligent, user-aware rate limiting at the application layer without external dependencies, enhancing security while maintaining simplicity
- Uses Laravel as a glue layer rather than a full-stack framework, focusing on composability and extensibility over monolithic design