openstatushq/openstatus

🫖 Status page with uptime monitoring & API monitoring as code 🫖

8,512 stars TypeScript 10 components

Open-source uptime monitoring platform with status pages and synthetic monitoring

Monitoring data flows from global checker regions through the server API to trigger incident workflows and update status pages in real-time

Under the hood, the system uses 2 feedback loops, 2 data pools, 4 control points to manage its runtime behavior.

Structural Verdict

A 10-component dashboard with 0 connections. 1439 files analyzed. Minimal connections — components operate mostly in isolation.

How Data Flows Through the System

Monitoring data flows from global checker regions through the server API to trigger incident workflows and update status pages in real-time

  1. Schedule Monitors — Cron jobs trigger checker tasks based on monitor periodicity (config: services.checker.environment)
  2. Execute Checks — Regional checker services perform HTTP/ping monitoring (config: x-common-variables.DATABASE_URL)
  3. Process Results — Workflows service receives results and updates monitor status
  4. Incident Detection — Failed checks trigger incident creation and notification workflows
  5. Status Updates — Status pages and dashboard reflect current system health (config: x-common-variables.NEXT_PUBLIC_URL)
  6. Screenshot Capture — Playwright captures incident screenshots for documentation

System Behavior

How the system actually operates at runtime — where data accumulates, what loops, what waits, and what controls what.

Data Pools

LibSQL Database (database)
Stores monitors, incidents, users, and status data
R2 Screenshot Storage (file-store)
Accumulates incident screenshot images

Feedback Loops

Delays & Async Processing

Control Points

Package Structure

This monorepo contains 11 packages:

checker (app)
Go-based synthetic monitoring service that performs health checks and reports status to the platform
dashboard (app)
Next.js admin dashboard for configuring monitors, viewing analytics, and managing incidents
docs (app)
Astro-based documentation site with Starlight integration
private-location (app)
Go service for running monitors from private network locations
railway-proxy (app)
Go reverse proxy for routing checker requests across Railway regions
screenshot-service (app)
Hono service using Playwright to capture incident screenshots and store in S3
server (app)
Main Hono API server providing REST and RPC endpoints for the platform
ssh-server (app)
Go SSH server providing terminal-based status page access
status-page (app)
Next.js public-facing status pages with custom domains and theming
web (app)
Next.js marketing website with MDX content and pricing information
workflows (app)
Hono service handling background tasks, cron jobs, and incident workflows

Technology Stack

Next.js (framework)
Frontend framework for dashboard and status pages
Hono (framework)
Lightweight web framework for API services
Go (framework)
High-performance language for checker and proxy services
Turso/LibSQL (database)
SQLite-compatible database with edge replication
Playwright (testing)
Browser automation for screenshot capture
Docker (infra)
Containerization for all services
NextAuth (library)
Authentication with multiple providers
Turborepo (build)
Monorepo build system and task runner
Astro (framework)
Static site generator for documentation
OpenTelemetry (infra)
Observability and structured logging

Key Components

Configuration

config.openstatus.yaml (yaml)

coolify-deployment.yaml (yaml)

docker-compose-lightweight.yaml (yaml)

docker-compose.github-packages.yaml (yaml)

Explore the interactive analysis

See the full architecture map, data flow, and code patterns visualization.

Analyze on CodeSea

Related Dashboard Repositories

Frequently Asked Questions

What is openstatus used for?

Open-source uptime monitoring platform with status pages and synthetic monitoring openstatushq/openstatus is a 10-component dashboard written in TypeScript. Minimal connections — components operate mostly in isolation. The codebase contains 1439 files.

How is openstatus architected?

openstatus is organized into 4 architecture layers: Frontend Layer, API Layer, Monitoring Layer, Shared Libraries. Minimal connections — components operate mostly in isolation. This layered structure keeps concerns separated and modules independent.

How does data flow through openstatus?

Data moves through 6 stages: Schedule Monitors → Execute Checks → Process Results → Incident Detection → Status Updates → .... Monitoring data flows from global checker regions through the server API to trigger incident workflows and update status pages in real-time This pipeline design reflects a complex multi-stage processing system.

What technologies does openstatus use?

The core stack includes Next.js (Frontend framework for dashboard and status pages), Hono (Lightweight web framework for API services), Go (High-performance language for checker and proxy services), Turso/LibSQL (SQLite-compatible database with edge replication), Playwright (Browser automation for screenshot capture), Docker (Containerization for all services), and 4 more. This broad technology surface reflects a mature project with many integration points.

What system dynamics does openstatus have?

openstatus exhibits 2 data pools (LibSQL Database, R2 Screenshot Storage), 2 feedback loops, 4 control points, 3 delays. The feedback loops handle polling and auto-scale. These runtime behaviors shape how the system responds to load, failures, and configuration changes.

What design patterns does openstatus use?

5 design patterns detected: Multi-Region Monitoring, Event-Driven Architecture, NextAuth Integration, Shared Package Architecture, Docker Compose Orchestration.

Analyzed on March 31, 2026 by CodeSea. Written by .