Introduction
Upptime is an open-source uptime monitor and status page that runs entirely on GitHub infrastructure. It uses GitHub Actions for scheduled checks, GitHub Issues for incident tracking, and GitHub Pages for a public status page. There is no server to maintain or database to manage.
What Upptime Does
- Monitors HTTP endpoints at configurable intervals using GitHub Actions cron jobs
- Automatically creates and resolves GitHub Issues when downtime is detected
- Generates a static status page deployed via GitHub Pages
- Tracks historical uptime and response time data in the repository itself
- Sends notifications through email, Slack, Telegram, SMS, and other channels
Architecture Overview
Upptime stores all configuration in a single .upptimerc.yml file in your GitHub repository. A scheduled GitHub Actions workflow runs every five minutes, sends HTTP requests to each configured endpoint, and commits the results as JSON and SVG badges to the repo. When a site goes down, it opens a GitHub Issue and triggers configured notification channels. The static status page is built with Svelte and deployed to GitHub Pages on each update.
Self-Hosting & Configuration
- Fork or use the Upptime template repository on GitHub
- Define monitored sites in
.upptimerc.ymlwith URL, method, headers, and expected status - Configure notification channels (Slack, email, Telegram) via repository secrets
- Customize the status page theme, logo, and domain in the config file
- Adjust check frequency by modifying the GitHub Actions cron schedule
Key Features
- Zero infrastructure cost when using GitHub's free tier for public repos
- Full history stored as git commits, making every data point auditable
- Supports TCP, HTTP, DNS, and ICMP monitoring types
- Multi-language status page with internationalization support
- Custom request headers and body for authenticated endpoint checks
Comparison with Similar Tools
- Uptime Kuma — Self-hosted monitoring with a web dashboard; Upptime requires no server at all
- Gatus — Go-based health checker with alerting; Upptime uses GitHub as both the runner and the data store
- Statuspage.io — Commercial hosted status page; Upptime is free and fully open source
- Cachet — Self-hosted PHP status page; Upptime eliminates the need for hosting by using GitHub Pages
FAQ
Q: Is Upptime really free? A: Yes. GitHub Actions provides enough free minutes for public repositories to run checks every five minutes indefinitely.
Q: Can I monitor internal or private endpoints? A: Yes, by using a self-hosted GitHub Actions runner inside your network, or by using the TCP/ICMP check types with appropriate network access.
Q: How is data stored? A: All monitoring data is committed to the repository as JSON files and SVGs. Historical data lives in git history, so it is versioned and auditable.
Q: Can I use a custom domain for the status page? A: Yes. Configure your custom domain in the GitHub Pages settings and update the CNAME record.