The Modern Status Page & Monitoring Platform
Monitor your systems. Keep users informed. Maintain trust.
Warning
Checkstack Core is currently in beta.
Breaking changes might happen, but are not to be expected regularly.
Some plugins are still in Alpha and need more testing, as we don't have all the integration systems available to thoroughly test them right now.
Please report any issues you find via the issue tracker!
🏠 Dashboard & Navigation
The central hub showing all your systems with real-time health status badges, recent activity feed, and quick access to key functions.

Lightning-fast keyboard-driven navigation with Ctrl+K / Cmd+K. Search for systems, actions, and settings instantly. Fully extensible by plugins.

✅ Health Checks
Browse and search all available health check strategies organized by category — Networking, Database, Infrastructure, and more. Choose a strategy to start configuring.

Full-page editor with tree navigation, real-time validation, strategy-specific configuration, collector management, and assertion building — all in one view.

Comprehensive system view showing current health status, historical performance charts with response times, and detailed check results.

📈 Service Level Objectives (SLO)
Real-time error budget tracking with dependency-aware downtime attribution, compliance streaks, and availability trend charts.

🚨 Incidents & Maintenance
Track and document unplanned outages. Create timeline updates, link affected systems, and keep stakeholders informed in real-time.

Rich incident timeline with status updates, affected systems, and full history. Changes are broadcast instantly via WebSocket.

Schedule planned maintenance with automatic status transitions from "Planned" → "Active" → "Completed". Subscribers are notified automatically.

Detailed maintenance view showing schedule, affected systems, and status history. Link multiple systems to a single maintenance window.

📋 Catalog, Dependencies & Notifications
Organize your infrastructure into Systems and Groups. Track dependencies, assign owners, and maintain a clear inventory of all monitored services.

Interactive topology view of your system dependencies. Drag to connect systems, click edges to edit impact and propagation settings, and auto-save node positions.

Real-time notification center accessible from any page. Shows unread count badge and instant updates via WebSocket.

Full notification history with read/unread tracking. Mark individual notifications or all as read with a single click.

Configure multi-channel notification delivery: SMTP, Telegram, Microsoft Teams, Webex, Discord, Slack, Gotify, and Pushover. User-specific settings per channel.

Example of rich notification delivery via Telegram with formatted messages and direct links to affected systems.

🔌 Integrations & Queues
Connect Checkstack to external systems like Jira, Microsoft Teams, Webex, and custom webhooks. Event-driven architecture enables automated workflows.

Monitor background job processing with real-time statistics. View scheduling lag, worker concurrency, and job queue status. Built-in lag warnings for health monitoring.

🔐 Authentication & Security
Manage users with flexible role assignments. Support for both local accounts and external identity provider users (SAML, LDAP, GitHub OAuth).

Define custom roles with granular permissions. Assign platform-wide access rules and combine with team-based resource-level access control.

Organize users into logical teams for resource-level access control. Designate team managers and assign API keys to teams for automated workflows.

Configure multiple authentication methods: Credential Login, GitHub OAuth, SAML 2.0 SSO, and LDAP/AD. Includes directory group-to-role mapping for enterprise SSO.

Create API keys (service accounts) for machine-to-machine access. Full RBAC permission control and optional team assignment for scoped access.

Users can update their profile information including name and email (for credential users). Credential users can also change their password from this page.

📖 API Documentation
Interactive API documentation. Explore all available endpoints and view response schemas directly in the browser.

Checkstack is a self-hosted, open-source status page and monitoring platform that helps you:
- 📊 Monitor your services with automated health checks
- 📢 Communicate incidents, maintenance, and announcements to your users
- 🔔 Notify stakeholders through multiple channels instantly
- 🔌 Integrate with your existing tools and workflows
Think of it as your all-in-one solution for operational visibility - combining the power of a status page, uptime monitoring, and incident management into a single, extensible platform.
Your single source of truth for all monitored services
Organize your infrastructure into Systems and Groups. Track dependencies, assign owners, and maintain a clear inventory of everything that matters.
Understand how your systems are connected
- Dependency Mapping - Define directional edges between systems ("A depends on B")
- Impact Types - Classify dependencies as informational, degraded, or critical
- Multi-hop Propagation - Enable transitive warning cascading through dependency chains
- Cycle Detection - Prevent circular dependencies with visual chain feedback
- Health Check Rules - Fine-grained dependency impact per health check
- Interactive Dependency Map - Visual graph canvas with drag-to-connect, edge editing, and auto-saving node positions
- Integrated Editor - Configure dependencies directly in the system editor dialog
Know when things break - before your users do
Built-in Check Types:
| Category | Provider | Description |
|---|---|---|
| Network | HTTP/HTTPS | Endpoint monitoring with status codes, headers, body assertions |
| Ping (ICMP) | Network reachability with packet loss and latency tracking | |
| TCP | Port connectivity with banner reading support | |
| DNS | Record resolution (A, AAAA, CNAME, MX, TXT, NS) | |
| TLS/SSL | Certificate expiry, chain validation, issuer verification | |
| Database | PostgreSQL | Connection testing, custom queries, row count assertions |
| MySQL | Connection testing, custom queries, row count assertions | |
| Redis | PING latency, server role detection, version checking | |
| Protocol | gRPC | Standard Health Checking Protocol (grpc.health.v1) |
| RCON | Game server monitoring (Minecraft, CS:GO/CS2) with player counts | |
| Scripted | SSH | Remote command execution with exit code validation |
| Script | Local command/script execution with output parsing |
Features:
- ⚡ Flexible Assertions - Validate response time, status, content, numeric comparisons
- 📊 Historical Data - Multi-tier storage with automatic aggregation for trend analysis
- 🔌 Pluggable Architecture - Create custom check strategies for any protocol
Track reliability with dependency-aware error budgets
Most SLO tools treat every minute of downtime the same. Checkstack's SLO engine knows why your system was down — and whether it was your fault.
- Event-Sourced Budget Tracking — Downtime is recorded to the second as it happens, not computed retroactively from hourly buckets
- Dependency-Aware Attribution — When an upstream dependency fails, that downtime is automatically attributed to the upstream system instead of burning your error budget
- Real-Time Event Splitting — If an upstream goes down mid-outage, the timeline is split: self-caused minutes before, upstream-attributed minutes after
- Configurable Exclusion Modes — Choose between "Strict" (all downtime counts) and "Self-Only" (upstream failures excluded) per SLO
- Burn Rate Alerts — Configurable warning/critical thresholds with integration events for Slack, Teams, Discord, and more
- Compliance Streaks — Track consecutive days meeting your SLO target with daily cron-based streak calculation
- Achievements — Gamified milestones (Iron Uptime, Diamond Uptime, Nines Club, Rapid Recovery, and more)
- Weekly Digest — Automated Monday morning summary of SLO performance across all systems
- Multiple SLOs per System — Run a strict 30-day SLO alongside a lenient 90-day upstream-overlap SLO on the same system
Handle the unexpected with clarity
- Incident Tracking - Document unplanned outages with status updates
- Timeline Updates - Keep stakeholders informed as situations evolve
- Affected Systems - Link incidents to impacted services
- Realtime Updates - Changes broadcast instantly via WebSocket
Communicate planned work proactively
- Scheduled Maintenance - Plan ahead with start/end times
- Automatic Transitions - Status changes from "Planned" → "Active" → "Completed"
- Multi-System Impact - Associate maintenance with multiple affected services
- User Notifications - Alert subscribers before and during maintenance
Broadcast important messages to your portal users
- Global Banners - Display severity-colored notification strips above the navbar on every page
- Dashboard Cards - Show announcements as expandable cards in the dashboard overview
- Markdown Support - Rich text formatting for announcement messages
- Visibility Control - Target all visitors or only authenticated users
- Scheduling - Configure start and expiry dates for time-limited announcements
- Dismissal Persistence - Users can dismiss banners (stored server-side for logged-in users)
- Realtime Updates - Announcements appear/disappear instantly for all connected users via WebSocket
- Command Palette - Quick access via
⇧⌘A/Ctrl+Shift+A
Reach people where they are
| Channel | Description |
|---|---|
| 📧 SMTP | Email notifications with templated content |
| 💬 Telegram | Instant messaging with rich formatting |
| 💼 Microsoft Teams | Personal chat messages via Microsoft Graph API |
| 🌐 Webex | Direct messages through Cisco Webex |
| 🎮 Discord | Webhook notifications with rich embeds |
| 💬 Slack | Incoming webhooks with Block Kit formatting |
| 🔔 Gotify | Self-hosted push notifications |
| 📱 Pushover | Mobile push notifications with priority levels |
| 🔔 In-App | Realtime notification center with read/unread tracking |
Subscribe users to systems and automatically notify them on status changes.
Connect to your existing ecosystem
| Integration | Use Case |
|---|---|
| 🎫 Jira | Auto-create tickets from incidents |
| 💼 Microsoft Teams | Post to channels and manage conversations |
| 🌐 Webex | Post to Webex spaces with Adaptive Cards |
| 🔗 Webhooks | Custom HTTP callbacks for any event |
Event-driven architecture means you can react to health changes, incidents, and maintenance with automated workflows.
Integrate programmatically with your infrastructure
Checkstack exposes a comprehensive REST API that enables external systems to interact with the platform programmatically via API keys (service accounts):
| Use Case | Description |
|---|---|
| 🚨 Monitoring Alerts | Prometheus, Grafana, or PagerDuty can create/resolve incidents automatically |
| 🚀 CI/CD Pipelines | Schedule maintenance windows during deployments |
| 🏗️ Infrastructure as Code | Terraform, Pulumi, or Ansible can manage systems and groups |
| ⚙️ Deployment Scripts | Configure health checks as part of service provisioning |
| 🔗 Custom Integrations | Any external tool can interact via authenticated API calls |
Example: Create an incident from an external alerting system
curl -X POST https://checkstack.local/api/incident/createIncident \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ck_<appId>_<secret>" \
-d '{"title": "High CPU Alert", "status": "investigating", "systemIds": ["..."]}'API keys are managed via Settings → External Applications with full RBAC permission control.
Secure access with enterprise-grade granularity
Authentication Methods:
- Credential Login - Built-in username/password with secure password reset
- GitHub OAuth - Single sign-on with GitHub
- SAML 2.0 - Enterprise SSO with identity providers (Okta, Azure AD, OneLogin, etc.)
- LDAP/AD - Enterprise directory integration with Active Directory
- API Tokens - Service accounts for machine-to-machine access
Directory Group-to-Role Mapping:
- Automatically assign Checkstack roles based on directory group memberships
- Configure mappings in SAML/LDAP strategy settings with dynamic role dropdowns
- Additive sync: directory roles are added without removing manually-assigned roles
- Optional default role for all users from a specific directory
Role-Based Access Control (RBAC):
- Define custom roles with specific permissions
- Assign roles to users for platform-wide access rules
- Preconfigured roles for common use cases (Admin, Viewer, etc.)
Resource-Level Access Control (RLAC):
- Grant teams fine-grained access to individual resources
- Configure read-only or full management permissions per resource
- Enable "Team Only" mode to restrict resources exclusively to team members
Team Management:
- Organize users into logical teams (e.g., "Platform Team", "API Developers")
- Designate Team Managers who can manage membership and settings
- Assign External Applications (API keys) to teams for automated workflows
Extend everything
Checkstack is built from the ground up as a modular plugin system:
- 🧩 Backend Plugins - Add new APIs, services, database schemas
- 🎨 Frontend Plugins - Extend UI with new pages, components, themes
- 🔗 Integration Providers - Connect to new external services
- 📡 Notification Strategies - Deliver alerts through new channels
- ✅ Health Check Strategies - Monitor services in custom ways
| Layer | Technologies |
|---|---|
| Runtime | Bun |
| Backend | Hono, Drizzle ORM, PostgreSQL |
| Frontend | React, Vite, TailwindCSS, ShadCN/UI |
| Validation | Zod |
| Realtime | WebSocket (native Bun) |
| Queue | BullMQ (Redis) / In-Memory |
The easiest way to run Checkstack — works for both production deployment and local testing.
👉 Full Docker Getting Started Guide
The repository includes a ready-to-use docker-compose.yml:
# Create .env with required secrets (see docs for details)
# Then start everything
docker compose up -dTo update to the latest version:
docker compose pull && docker compose up -dCheckstack requires four environment variables:
| Variable | Description | How to Generate |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | Your database provider |
ENCRYPTION_MASTER_KEY |
64 hex chars (32 bytes) | openssl rand -hex 32 |
BETTER_AUTH_SECRET |
Min 32 characters | openssl rand -base64 32 |
BASE_URL |
Exact URL used to access Checkstack in the browser | e.g. http://192.168.1.123:3000 or https://status.example.com |
# Pull and run the latest version
docker pull ghcr.io/enyineer/checkstack:latest
docker run -d \
-e DATABASE_URL="postgresql://user:pass@host:5432/checkstack" \
-e ENCRYPTION_MASTER_KEY="$(openssl rand -hex 32)" \
-e BETTER_AUTH_SECRET="$(openssl rand -base64 32)" \
-e BASE_URL="http://192.168.1.123:3000" \
-p 3000:3000 \
ghcr.io/enyineer/checkstack:latestTip
After first start, you'll have to create your first admin user.
Upon opening the page eg. at http://localhost:3000 you'll be greeted with a signup form.
All @checkstack/* packages are published to npm for plugin developers.
⚠️ Bun Required: These packages publish TypeScript source directly and require Bun runtime. They are not compatible with Node.js.
# Example: Install packages for a custom plugin
bun add @checkstack/backend-api @checkstack/commonFor contributors and plugin developers. For just running Checkstack, use Docker instead.
- Bun installed
- Docker Desktop running
# Clone the repository
git clone https://github.com/enyineer/checkstack.git
cd checkstack
# Install dependencies
bun install
# Start everything (Docker + Backend + Frontend)
bun run devThis command will automatically:
- 🐳 Start the Docker infrastructure (Postgres & PgAdmin)
- 🔧 Start the Backend server (Port 3000)
- 🎨 Start the Frontend server (Vite default port)
Tip
After first start, you'll have to create your first admin user.
Upon opening the page eg. at http://localhost:3000 you'll be greeted with a signup form.
| Service | URL | Credentials |
|---|---|---|
| Frontend | http://localhost:5173 |
- |
| Backend API | http://localhost:3000 |
- |
| PgAdmin | http://localhost:5050 |
admin@checkstack.com / admin |
| PostgreSQL | localhost:5432 |
checkstack / checkstack |
# Stop Docker containers
bun run docker:stopFor comprehensive guides, API references, and plugin development docs:
We welcome contributions! See our Contributing Guide for:
- Development environment setup
- Code style guidelines
- Testing requirements
- Pull request process
This project is licensed under the Elastic License 2.0.
| Allowed | Not Allowed |
|---|---|
| ✅ Internal company use | ❌ Selling as managed SaaS |
| ✅ Personal projects | ❌ Removing license protections |
| ✅ Research & education | |
| ✅ Modification & redistribution | |
| ✅ Building applications on top |
Need a commercial license to provide Checkstack as a managed / SaaS service? Contact us
Built with ❤️ for reliability engineers everywhere
