UptimeKit
The modern open-source status page and monitoring solution.
Features β’ Getting Started β’ Tech Stack β’ Contributing
β¨ Features
UptimeKit is designed to be the all-in-one solution for tracking your services' uptime and communicating with your users.
- π Monitoring - Real-time uptime monitoring for your HTTP/TCP services.
- π¦ Status Pages - Beautiful, customizable status pages for your users.
- π Incidents - Create and manage incident reports to keep users informed.
- π’ Organizations - Multi-tenant support with team management.
- π Analytics - Detailed uptime and response time metrics.
- π οΈ Self-Hostable - Full control over your data and infrastructure.
How it works
Uptimekit is a distributed monitoring solution. You can have as many workers as you want and as many replicas of the app as you want. The workers check with the app every 15 seconds to get their assigned monitors and run the checks whenever they have to.
π Tech Stack
Built with a modern, type-safe stack for maximum performance and developer experience.
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Database: PostgreSQL with Drizzle ORM & ClickHouse & TimescaleDB
- Styling: TailwindCSS & shadcn/ui
- Authentication: Better-Auth
- API: oRPC & OpenAPI
- Monorepo: Turborepo
π οΈ Getting Started
Follow these steps to get UptimeKit running locally on your machine.
Prerequisites
- Redis
- Clickhouse/Timescale
- PostgreSQL
Install
-
Download the docker-compose.yml
curl -o docker-compose.yml https://raw.githubusercontent.com/uptimekit/uptimekit/main/docker-compose.yml -
Start the docker compose
docker-compose up -d -
Now follow the steps on the app. Enjoy :D
Manual installation
-
Clone the repository
git clone https://github.com/uptimekit/uptimekit.git cd uptimekit -
Install dependencies
pnpm install -
Environment Setup
Copy the
.env.examplefile in.env -
Database Setup
Push the schema to your database:
pnpm run db:push -
Run Development Server
Start all applications (Dashboard, Status Page, Marketing/Docs):
pnpm run dev- Dashboard: http://localhost:3000
- Status Page: http://localhost:3001
π Project Structure
uptimekit/
βββ apps/
β βββ dash/ # Main Dashboard application
β βββ worker/ # Probe who actually pings the monitors
β βββ status-page/ # Public Status Page application
βββ packages/
β βββ api/ # Shared API definition & logic
β βββ auth/ # Authentication configuration
β βββ db/ # Database schema & Drizzle config
β βββ scheduler/ # Scheduler application
β βββ config/ # Shared configuration (TS, ESLint, etc.)
βββ ....
π Sponsors
Thank you to all our amazing sponsors who make this project possible!
Become a sponsor and get your logo here!
π Previews
Default theme with length bars

Flat theme with length bars

Signal theme with signal bars

π€ Contributing
We welcome contributions! Please check out our Contributing Guide for details on how to submit pull requests, report issues, and request features.
π License
This project is licensed under a MIT License