Checkmate is a free, open source monitoring & observability project written in TypeScript and released under AGPL-3.0. It has 10,830 GitHub stars, 1,200 forks and 114 open issues, and was last pushed 4 hours ago. On this registry it ranks #42 of 97 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available. It gained 26 stars over the last 6 tracked days.

What is Checkmate?

What it is

Checkmate is an open-source, self-hosted monitoring application for infrastructure and observability. It is written in TypeScript and released under the AGPL-3.0 license. The repository contains the frontend and backend, and the project sits in the infrastructure monitoring ecosystem for teams that need to track servers, websites, and hardware status without relying on a hosted-only product.

The concrete problem it solves is continuous visibility into availability and performance. Checkmate regularly checks whether a server or website is accessible and performs optimally, then reports on availability, downtime, and response time in real time. It also tracks incidents and server hardware status, which helps operators understand when a monitored service fails and what condition the underlying machine is in.

Key capabilities

  • Checkmate monitors the accessibility, uptime, downtime, and response time of servers and websites through scheduled checks.
  • The application provides real-time alerts and reports so operators can see the availability, downtime, and response time of monitored services.
  • Checkmate records incidents and presents monitoring information through visualizations, with topic tags indicating MUI Material components.
  • The optional Capture agent retrieves CPU, RAM, disk, and temperature data from remote servers running Linux, Windows, Mac, Raspberry Pi, or Go-capable devices.
  • The reference Docker Compose deployment runs the all-in-one Checkmate image with MongoDB, while custom deployments can use an external MongoDB through DB_CONNECTION_STRING.

Who uses it and how

  • Self-hosted operators use the Docker Compose workflow to start Checkmate and MongoDB, then open the service at localhost port 52345.
  • Infrastructure teams with remote servers install the Capture agent to add CPU, RAM, disk, and temperature visibility alongside uptime monitoring.
  • Deployments behind a domain or LAN IP set CLIENT_HOST, while production TLS uses Caddy, Traefik, or nginx in front of port 52345.
  • Users who want simpler installations can use one-click options such as PikaPods, Repocloud, Coolify, Elestio, K8s, Sive Host, or Cloudzy.

Getting started

The typical installation uses Docker Compose to start the ghcr.io/bluewave-labs/checkmate image and a separate MongoDB service, sets JWT_SECRET, and opens http://localhost:52345. The README also lists one-click deployments on PikaPods, Repocloud, Coolify, Elestio, K8s, Sive Host, or Cloudzy.

When to use it — and when not to

Checkmate is a good fit for teams that want a self-hosted, AGPL-3.0 monitoring stack for uptime, response time, incidents, and server hardware status. A self-hoster must operate Docker, MongoDB, a JWT secret, the CLIENT_HOST setting, and a reverse proxy for TLS, while the optional Capture agent adds another deployment surface. The repository metadata lists 0 contributors and 114 open issues, and the project is described as 0 years old, so teams needing a mature, widely maintained product should weigh that early-stage profile.

project readme (upstream, from github) — read inline

bluewave-labs%2Fcheckmate | Trendshift

🇺🇸 English | 🇸🇦 العربية | 🇪🇸 Català | 🇨🇿 Čeština | 🇩🇪 Deutsch | 🇪🇸 Español | 🇫🇮 Suomi | 🇫🇷 Français | 🇮🇹 Italiano | 🇯🇵 日本語 | 🇧🇷 Português (Brasil) | 🇷🇺 Русский | 🇹🇭 ไทย | 🇹🇷 Türkçe | 🇺🇦 Українська | 🇻🇳 Tiếng Việt | 🇨🇳 简体中文 | 🇹🇼 繁體中文

Ask DeepWiki

Checkmate

An open source uptime and infrastructure monitoring application

Run on PikaPods

image


This repository contains both the frontend and the backend of Checkmate, an open-source, self-hosted monitoring tool for tracking server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. Checkmate regularly checks whether a server/website is accessible and performs optimally, providing real-time alerts and reports on the monitored services' availability, downtime, and response time.

Checkmate also has an agent, called Capture, to retrieve data from remote servers. While Capture is not required to run Checkmate, it provides additional insights about your servers' CPU, RAM, disk, and temperature status. Capture can run on Linux, Windows, Mac, Raspberry Pi, or any device that can run Go.

Checkmate has been stress-tested with 1000+ active monitors without any particular issues or performance bottlenecks.

📚 Table of contents

Demo

You can see the latest build of Checkmate in action.

The username is [email protected] and the password is Demouser1! (just a note that we update the demo server from time to time, so if it doesn't work for you, please ping us on the Discussions channel).

User's guide

Usage instructions can be found here.

Prerequisites

Installation

The quickest way to run Checkmate is the reference Docker Compose file. It starts two services: the all-in-one Checkmate application image (ghcr.io/bluewave-labs/checkmate) and a separate MongoDB service.

What “all-in-one” means: the Checkmate application is packaged in a single image; MongoDB is not embedded in that image and remains required. The reference Compose file starts MongoDB for you. For custom deployments, configure DB_CONNECTION_STRING to use an external MongoDB instance.

curl -O https://raw.githubusercontent.com/bluewave-labs/checkmate/master/docker/docker-compose.yaml
JWT_SECRET="$(openssl rand -hex 32)" docker compose up -d

Then open http://localhost:52345. If the app is reached at another origin (domain or LAN IP), set CLIENT_HOST accordingly. To build the image yourself, run docker build -f docker/Dockerfile -t checkmate . from a checkout. For TLS, put any reverse proxy (Caddy, Traefik, nginx) in front of port 52345.

There are also 1-click installation options like Repocloud, Pikapods, Coolify, Elestio, K8s, Sive Host or Cloudzy.

Configuration

The image is configured entirely through environment variables on the server container:

Variable Required Description
DB_CONNECTION_STRING Yes MongoDB connection string, e.g. mongodb://mongodb:27017/uptime_db
JWT_SECRET Yes Secret used to sign auth tokens; generate one with openssl rand -hex 32
ENCRYPTION_KEY No Encrypts stored Docker TLS client keys at rest; generate one with openssl rand -base64 32. Comma-separated list: the first key encrypts, every key decrypts. Must be identical on the API and every worker. To rotate without downtime, deploy OLD_KEY,NEW_KEY everywhere, then NEW_KEY,OLD_KEY everywhere, wait for the worker to re-encrypt every row, then drop OLD_KEY.
CLIENT_HOST Yes The URL users reach the app at, e.g. https://checkmate.example.com; used for CORS and for links in notifications and emails
LOG_LEVEL No Server log level: error, warn, info, or debug (default debug)

The web client needs no configuration by default: it calls the API on the same origin it was served from (/api/v1). For setups where the defaults don't apply — for example, the API is reached through a different origin than the page — the server renders overrides into the client at runtime via these optional variables:

Variable Description
CLIENT_CONFIG_API_BASE_URL Full base URL the client calls the API at, e.g. https://api.example.com/api/v1; defaults to same-origin /api/v1
CLIENT_CONFIG_CLIENT_HOST Origin used when the client builds absolute links (invites, status pages); defaults to the browser's current origin
CLIENT_CONFIG_LOG_LEVEL Browser console log level: error, warn, info, or debug (default error)

Upgrading from an older image? The UPTIME_APP_* variables (UPTIME_APP_API_BASE_URL, UPTIME_APP_CLIENT_HOST, UPTIME_APP_LOG_LEVEL) are no longer read. In most setups no replacement is needed — the same-origin defaults cover them; if you pointed the client at a different origin, use the CLIENT_CONFIG_* equivalents above. The checkmate-client, checkmate-backend, checkmate-mongo, and checkmate-backend-mono-multiarch images are no longer updated — switch to ghcr.io/bluewave-labs/checkmate, keeping your existing MongoDB service and data volume.

See full installation instructions in the Checkmate documentation portal.

Alternatively, you can also use Coolify, Elestio, K8s, Sive Host (South Africa), Cloudzy or Pikapods to quickly spin off a Checkmate instance. If you would like to monitor your server infrastructure, you'll need Capture agent. Capture repository also contains the installation instructions.

Using a Custom CA

If you need to monitor internal HTTPS endpoints with certificates from private Certificate Authorities (like Smallstep), see our Custom CA Trust Guide for Docker configuration options.

For more documentation, see the docs directory.

Performance

Thanks to extensive optimizations, Check

readme truncated — read the full docs on github

Frequently asked questions

Is Checkmate free to use?

Checkmate is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Checkmate do?

Beautiful open-source monitoring for modern infrastructure

What is Checkmate written in?

Checkmate is primarily written in TypeScript. Its source is publicly available at https://github.com/bluewave-labs/checkmate, and it has 10,830 GitHub stars.