Changelog

What shipped,release by release.

Every Checkmate release with its features, fixes and the people behind them, pulled straight from GitHub.

v3.11.0

Feature release

Features

  • Outbound proxy support: global and per monitor proxies
  • Domain registration expiry monitoring
  • Selectable time ranges on status pages
  • Rocket.Chat notification channel
  • Authentication support for ntfy notifications
  • Monitor tags shown in the status page selector
  • Stacked response-timing chart and chart presentation improvements
  • Light/dark theme mode toggle in the auth footer menu
  • Uptime percentages shown with two decimals
  • Better keyboard navigation on the create monitor page

Fixes

  • Monitors no longer get stuck with an incorrect status
  • DNS monitors can now be added to status pages
  • Infrastructure monitors include recent checks, fixing the instant gauge
  • Sensitive fields are redacted from client-side logs
  • Matrix notifications resolve room aliases and encode room IDs correctly
  • SMTP transport errors are no longer silently swallowed
  • Logo image preview no longer blocked by the CSP

Maintenance

  • Form handling refactor and dependency cleanup
New contributors (5)

Full diff on GitHubv3.10.0 → v3.11.0

v3.10.0

Feature release

Deployment change, action required

Checkmate now ships as a single image: ghcr.io/bluewave-labs/checkmate. The old per service images (checkmate-client, checkmate-backend, checkmate-mongo, checkmate-backend-mono) are deprecated.

If you deploy with the old images, switch to the new [docker-compose.yaml](docker/docker-compose.yaml). Your database and data are unaffected. Migrations run automatically on first start.

checkmate-backend-mono receives this release as a transitional alias and will not be updated again. If you pin checkmate-backend-mono:latest, note that it has not received updates since the rework merged. This release is the last one published to that name.

Fixes

  • Status page custom CSS injection
  • CSP configuration
  • Incidents now deleted when their monitor is deleted
  • Loopback detection in network notice
  • Increased JSON body limit
  • Missing Poor label on average response time gauge added

Internal

  • Major backend refactor into domain layers (monitors, checks, incidents)
  • Route, controller, and utils cleanup

Translations

  • Italian added
  • English and German CPU temperature label corrected
  • Polish locale formatting
New contributors (4)

Full diff on GitHubv3.9.2 → v3.10.0

v3.9.2

Patch

Security

  • [x] Status pages: public payloads now use a strict allowlist of monitor fields — credentials and internal configuration are never sent to visitors (GHSA-3m74-8cg9-rp8j)
  • [x] Monitor advanced matching now uses RE2 with tightened regex validation — fixes ReDoS via user-controlled regex (GHSA-4c6j-p2cv-wf56)

Fixes

  • [x] Docker: server images moved from Node 20 (EOL) to Node 22 — fixes broken image builds caused by re2 native compilation
  • [x] Added root .dockerignore so host node_modules and .env files no longer leak into image builds
  • [x] New unit suite covering the public status-page payload

v3.9.1

Feature release

Features

  • Uptime percentage for monitors — new MongoDB aggregation stage exposes uptime % on individual monitor views and on status pages.
  • Custom "up" status codes for HTTP monitors — treat additional HTTP status codes (e.g. 401, 403, 418) as "up" instead of failure. Wired end-to-end: backend model + validation against real HTTP status codes, frontend customUpCodes type, UI in the create-monitor form, and the advanced matcher still runs on custom-up responses so body/JSON-path checks aren't silently bypassed.
  • Custom domain support for published status pages — publish a status page on your own domain, with CSP scoped to public status-page routes, per-request CORS (with cached and negative-cached origin lookups), a partial DB index on customDomain so unpublished pages don't collide, and the URL protocol derived from the configured client host.
  • HEAD request support for HTTP monitors — select HEAD as the request method on any HTTP monitor, with backend/frontend sync and a superRefine guard that rejects HEAD combined with body or JSON-path matchers. Default remains GET; imported monitors backfill to GET.
  • Minimal theme for status pages — a fifth selectable theme (joining Refined, Modern, Bold, and Editorial) for operators who want a stripped-down look.
  • Custom CSS for status pages — full end-to-end support: DB field, length cap, server-side validation mirrored on the client, and a CSS-syntax tokenizer that rejects references to external resources (@import, url(...), etc.) so operator-supplied CSS can't reach out. A tighter CSP is applied to the public status-page document, and the admin preview renders inside a same-origin iframe so operators can safely experiment before publishing.
  • Worker health monitoring — the new worker exposes a getHealth method, a dedicated health server with readiness and liveness endpoints, worker stats surfaced on the frontend, and observability hooks in the DB queue worker. Long-running jobs now renew their locks so extended checks don't lose their lock mid-run.
  • Additional MongoDB diagnostic stats — Mongo read/write per second counters, plus a resilient totalSize derivation for Atlas shared tier (where dbStats omits the field). Diagnostic stats reporting itself was fixed alongside.

Fixes

  • Correct check evaluation order
  • Re-arm jobs on maintenance-window pause and delete
  • Change monitor status on exit from a maintenance window
  • Fix excess polling
  • Fix diagnostic stats reporting
  • Derive Mongo totalSize when dbStats omits it on Atlas shared tier
  • Fix status page styling
  • Migration fixes

Internal & Infra

  • Decouple the worker from the main process
  • DB-backed queue
  • Worker reorganization and clean split
  • Project and code organization
  • Update Helm charts
  • Add tests covering maintenance-window monitor edits
New contributors (1)

Full diff on GitHubv3.8.1 → v3.9.1

v3.8.1

Patch

Critical fix for migrations. A race condition was present that did not show up in local deployment

v3.8.0

Feature release
  • Configurable schedulers and a new worker model power a major reliability and throughput upgrade. Checkmate now ships a *less-simple queue* alongside the existing in-memory option, with selectable queue type, worker fleet, and concurrency settings — so larger fleets of monitors can be scheduled and executed without saturating a single process. New *worker stats* and a queue/jobs table expose what's running, what's pending, and what failed, making the scheduler observable instead of a black box.
  • DNS monitors are now a first-class monitor type. Both the backend provider and the *frontend create/edit experience* have landed, so DNS records can be monitored end-to-end without external tooling.
  • Maintenance windows now support groups and recurring schedules. Operators can group monitors under a *single maintenance window* and run recurring schedules cleanly, with the *recurring-edit validation* gap fixed so editing an active window no longer corrupts its schedule. Past-dated one-time windows are now rejected at creation, eliminating a class of "silently inactive" maintenance entries.
  • Monitor tags ship across backend, frontend, and monitor summaries. Tags can be assigned to monitors and surface consistently in summaries and lists, with a centered Tag-label layout that fits the existing design system.
  • Bulk pause/resume and a partial-failure warning land for fleet operators. Multiple monitors can now be paused or resumed in one action, and when an operation only partially succeeds the UI surfaces a *partial failure warning* with the failed count instead of silently swallowing it.
  • Uptime progress indicators have been added across monitors, infrastructure, pagespeed, and status pages, giving an at-a-glance read on availability without drilling into each row.
  • Mobile and desktop pagespeed strategies are now selectable per monitor, so a single pagespeed monitor can target either form factor instead of being locked to one.
  • ntfy is now a supported notification channel, joining email, Discord, Slack, and webhooks for alert delivery.
  • A new Catalan (ca) translation has been added, and 16 existing locales received a *gap-closing translation pass* so newly added strings are no longer rendered in English. README translations have also been added for all supported languages.
  • The status page now uses the operator-configured timezone on public pages, so visitors and operators see the same timestamps regardless of browser locale.
  • Status code 5000 is now rendered as "Down" with a subtype tooltip, replacing a confusing raw code with a *human-readable status* plus the underlying reason on hover.
  • SMTP configuration now accepts an optional sender display name, so outgoing alert emails arrive with a meaningful "From" name instead of just an address.
  • Capture endpoint and authorization-secret fields on the infrastructure monitor form now have inline guidance, removing a frequent setup-time stumbling block.
  • API docs are now generated directly from the Zod validation schemas, so the published OpenAPI spec stays in sync with what the server actually accepts.
  • Mongo diagnostics, raised recent-check limits, connection reuse, and a bumped concurrency default round out a wider performance and observability pass on the server side.
  • A blank-screen crash when clearing the timezone search field has been fixed, alongside fixes for status-page save mutation, pause/resume of geo jobs, histogram response-time rendering, monitor-summary tag rendering, page-index reset, jobs pagination, and a husky pre-commit guard that no longer fires during merges or rebases.
  • Mono and ARM container images can now run as a non-root user (UID 1000), aligning with hardened-runtime and Kubernetes security policies.
  • Dependencies have been refreshed across the stack — axios, multer, vite, lodash, and a sweep of transitive bumps (picomatch, flatted, follow-redirects, postcss, yaml, protocol-buffers-schema, fast-xml-parser) — closing known advisories and keeping the build current.

Thank you to our new contributors @harsh-aghara, @adosaiguas, @Iriome-Santana, and @jhcpeixoto for their first contributions in this release!

All merged pull requests (65)
New contributors (4)

Full diff on GitHubv3.7.1 → v3.8.0

v3.7.1

Feature release
  • A sweeping UI/UX overhaul has landed across the app. This release ships a *full design-system pass* together with a redesigned auth experience — login, registration, password reset, and the initial setup flow have all been rebuilt for clarity and consistency. Typography, spacing, dialogs, and inputs now follow a unified visual language across every page.
  • The public status page now supports four selectable themes, giving teams meaningful control over how their status page looks to the outside world. The themes are persisted via *new theme and themeMode fields on the backend*, so your selection sticks across sessions and deployments.
  • Incidents are now created on the very first failed check. Previously, monitors that were *initializing or already in a "down" state* could miss the first incident; that gap has been closed and the incident lifecycle is now correctly anchored from the initial failure.
  • Internationalization gaps have been closed across all 16 supported locales. Missing keys, untranslated fragments, and stale strings have been audited and filled in, so non-English users see a consistently translated UI throughout the app.
  • Modals and dialogs have been standardized on a shared layout. A new NoticeBanner design element, *softer Cancel buttons*, and a unified modal structure make confirmation flows feel calmer and more predictable.
  • Inputs and form controls have been refined. TextInput now forwards sx props for fine-grained styling, FieldLabel is fully theme-driven, and button hover states have been *softened across the board* for a more polished feel.
  • The Add Member modal now lays name and password fields side by side, cutting vertical space and making the invite flow feel less form-like.
  • The Incidents page has been visually reworked end-to-end for *consistent typography, icons, and layout* — the page now reads as a single cohesive view instead of a stack of mismatched sections.
  • Infrastructure network charts now show a clear notice when there's zero traffic, replacing empty graphs that previously looked like a rendering bug with an *explicit, informative empty state*.
  • The Remove monitors confirmation modal now includes explanatory body text, making the consequences of bulk removal obvious before the user commits.
  • Game server monitors now ship with inline guidance. The create-monitor flow explains how to set up the *server-side query* required for game monitors, so users aren't left guessing what to configure on their game host.
  • The "Open site" action is now hidden when a monitor's URL is not browser-openable (e.g. ping or port monitors), removing a confusing shortcut that previously led nowhere.
  • Vite's allowed hosts list is now configurable, making it easier to run the client behind custom domains, reverse proxies, and *non-standard development hostnames* without patching the config.
  • The app version is now sourced directly from package.json instead of being hardcoded, so version strings shown in the UI always match the build.
  • A noisy mongoose reserved-key warning on Check.errors has been suppressed at the model level, cleaning up server logs without changing behavior.
  • The OpenAPI spec for /monitors/team/with-checks now documents all supported query parameters, so SDK and client generators have a complete contract to work from.
  • Frontend conventions are now documented and enforced via ESLint. Five mandatory rules — covering MUI prop usage, theme paths, layout/typography constants, useTheme() access, and runtime/type pairing — are codified in docs/frontend-conventions.md and *checked automatically in CI*.
  • CONTRIBUTING.md and CLAUDE.md have been aligned with the current toolchain, including up-to-date Node, package manager, and tooling references so new contributors aren't following stale instructions.
  • A small but meaningful round of cleanup: a notification-template typo has been fixed, a broken documentation link has been *replaced with the working one across the app*, and a regression where status-page checks rendered in reverse order has been corrected.

Thank you to our new contributor @ayshaL for their first contribution in this release!

All merged pull requests (25)
New contributors (1)

Full diff on GitHubv3.6.1 → v3.7.1

v3.6.1

Feature release
  • The checkmate.so website has been fully renewed, with a refreshed design and updated messaging across the board.
  • The documentation at checkmate.so/docs has been overhauled to reflect *v3.6.1*, covering the new features, updated setup instructions, and corrected references throughout.
  • Teams are now first-class citizens in Checkmate. You can group monitors by team, assign ownership, and scope notifications and access accordingly — making multi-team deployments and larger organizations *much easier to manage*.
  • Data retention is now configurable. Older checks and related records can be pruned automatically based on your retention policy, keeping the database *lean and predictable* over long-running deployments.
  • Two new notification channels have landed: _Telegram_ and _Twilio SMS_. You can now deliver incident alerts via Telegram bots or send SMS messages through Twilio, alongside the existing email, Slack, Discord, webhook, Matrix, and Pushover channels.
  • _Pushover_ is also now supported as a notification channel, giving mobile-first teams another reliable way to receive alerts.
  • The monitor status engine has been refactored end-to-end for *atomicity and correctness*. State transitions (up → down, down → up) are now evaluated more reliably, with tightened streak and heartbeat handling, fixes to "down" notifications that were not being dispatched, and a proper initial state so the first check after creation behaves predictably.
  • Status pages now include an infrastructure section. Public status pages can surface *CPU, memory, and disk health* from infrastructure monitors alongside uptime, with the status page API refresh interval tightened to 10 seconds for near real-time updates.
  • Status bar messages on public status pages have been rewritten to be clearer and more informative, and down monitors now correctly display a "down" state instead of a misleading *"active for…"* label.
  • Bulk edit for monitor notifications is now available via a dedicated endpoint, so you can attach or detach notification channels across *many monitors in a single call* instead of editing them one at a time.
  • Internationalization has been overhauled. All locale files have been restructured and translated, remaining *zh-TW* strings have been filled in, and the legacy PoEditor workflow has been disabled in favor of the new structure. Translation contribution guidance has also been refreshed.
  • The Matrix notification channel has been fixed and is working again for teams that rely on it.
  • DNS lookups now respect a configured cache TTL, preventing *stale DNS results* from silently breaking monitoring when upstream IPs change.
  • The "breached" infrastructure status has been renamed to _"threshold exceeded"_ across the UI for clarity.
  • The login page no longer shows the register tip when registration isn't applicable, and users landing on a fresh instance with no super admin are now *redirected to the setup flow automatically*.
  • The production Docker Compose setup and nginx configuration have been updated and unified, making deployments more consistent across environments. A Windows batch script (build_images.bat) has also been added for building Docker images on Windows.
  • Test coverage has grown substantially: new *service tests, integration tests, monitor status tests, heartbeat tests, initialization tests*, and a dedicated check-tests workflow have all been added to catch regressions earlier.
  • Across the backend, controllers, services, middleware, validation, and migrations have been retyped and linted into a clean state — auth, diagnostic, incident, invite, log, maintenance window, monitor, notification, queue, settings, and snapshot controllers have all received typing and validation fixes, and the *remaining ESLint errors have been resolved*.
  • Other fixes worth calling out: email templates are now copied to dist during build (fixing empty notification emails), MJML templates are no longer ignored by TSC, the geocheck update logic has been corrected, the scheduler has been bumped and now consumes scheduler events, monitor stats are no longer mutated in memory, role types are enforced correctly, notification timeouts have been tightened, and the demo monitor import and demo user flows have been fixed.
  • Documentation has seen a round of polish: the README now includes a *monitor lifecycle explanation* and a *Prerequisites section*, CLAUDE.md has been expanded with the backend architecture flow and repository pattern, broken docs links have been fixed, the Node.js version requirement has been updated to >=20, and several typos and outdated references (including the old bluewave-uptime repo name) have been corrected.

Thank you to our new contributors @tb102122, @ashu130698, @LeC-D, @mayssagl, @ad2ien, @SkyKingPX, @egeoztass, @ZeinebMegaadi, and @Smolcup for their first contributions in this release!

All merged pull requests (84)
New contributors (9)

Full diff on GitHubv3.5.1 → v3.6.0

v3.5.1

Patch
  • WebSocket is now a supported uptime monitor type. You can monitor WebSocket endpoints directly alongside HTTP, ping, port, and gRPC checks.
  • GlobalPing support has been extended to ping-type monitors, so you can now run distributed ping checks from multiple locations worldwide, not just HTTP.
  • The network service layer has been refactored to use a provider pattern, making it easier to add new monitor types and keeping each protocol's logic isolated.
  • Dark mode now uses clean neutral gray backgrounds instead of the previous blue-tinted palette, and the decorative SVG blob

overlay has been removed for a cleaner look.

  • Admins and superadmins can now remove team members directly from the user edit page, with role-based guardrails that prevent removing users above your own permission level.
  • Email templates are now parsed correctly, fixing a bug where notification emails could render with broken formatting.
  • The server PORT environment variable has been restored, allowing custom server port configuration that was accidentally removed in a prior release.
  • Zod has been explicitly bumped and all remaining z.email() calls have been migrated to z.string().email() for compatibility with the latest version.
All merged pull requests (17)

Full diff on GitHubv3.5.0 → v3.5.1

v3.5.0

Feature release
  • We added global ping monitoring powered by the GlobalPing API. You can now check uptime from multiple locations around the world, with results stored in a dedicated geo checks collection and managed through the scheduler.
  • A new interactive world map built on MapLibre visualizes geo check results, showing response times and status across regions at a glance.
  • gRPC is now a supported monitor type, joining HTTP, ping, and port checks. You can monitor gRPC services directly from the create monitor flow.
  • PageSpeed detail pages now support the same date range options as other monitors. You can view data across recent, day, week, and month buckets instead of just a single day.
  • Admins can now export their monitors, and import in another server.
  • Server-side validation has been fully migrated from Joi to Zod. The old monolithic validation file is gone, replaced by modular per-resource validators that are easier to maintain and extend.
  • Environment variables are now validated at startup, catching misconfigurations before the server runs rather than failing silently at runtime.
  • Infrastructure threshold settings have been converted from text fields to sliders, which makes configuration more intuitive and eliminates input validation issues.
  • A global SWR configuration now centralizes data fetching behavior across the frontend, adding request deduplication, retry logic, and focus throttling for a more consistent experience.
All merged pull requests (23)

Full diff on GitHubv3.4.0 → v3.5.0

v3.4.0

Feature release

github.com/user-attachments/assets/c2c11b79-b148-4cf8-bcde-0b4822af74aa

  • This release completes the v2 UI rebuild. Every v1 component has been removed and every page — checks, infrastructure, incidents, notifications, maintenance, status pages, auth, account, logs, settings, and layout — has been rebuilt from scratch with a modern, consistent component system.
  • Infrastructure monitors can now trigger incidents automatically when CPU, memory, disk, or temperature metrics exceed configurable thresholds. The notification pipeline was refactored to support both status-change alerts and threshold breach alerts through a single, unified system.
  • Monitor stats now track max response times alongside averages, so you can spot spikes at a glance. The detail page histograms also gained average and max overlays, and search across uptime and infrastructure pages is now debounced for a smoother experience.
  • A new background cleanup job runs periodically to remove orphaned monitors, checks, incidents, and stats that can accumulate over time, keeping the database lean without manual intervention.
  • The settings page was rewritten from the ground up — the old collection of JSX files has been replaced with a single TSX page backed by Zod schema validation, making the form type-safe and much easier to extend.
  • On the security and infrastructure side, status page routes now enforce proper authentication middleware, Husky pre-commit hooks have been added to the repo, and several smaller fixes landed across the board.

Thank you to our new contributors @akashmannil, @sukritraj02, and @llpingll for their first contributions in this release!

All merged pull requests (78)
New contributors (3)

Full diff on GitHubv3.3 → v3.4.0

v3.3

Feature release
  • We introduced a new v2 architecture across backend and frontend. This includes new routes, controllers, services, models, auth flows, queues, and UI pages for uptime, pagespeed, incidents, and status pages.
  • A major JavaScript -> TypeScript migration is fully complete across core services, controllers, queues, notifications, and utilities. This improves type safety, maintainability, and long term velocity.
  • On the infrastructure side, Docker, Helm, and Kubernetes support were significantly improved, including TLS via cert-manager, affinity and tolerations, storage class support, image fixes, and better startup behavior.
  • There are many user facing improvements. More accurate response times, better charts and time ranges, incident management enhancements, new notification channels like Matrix, richer notification titles, JSON export and better status pages.
  • Finally, we shipped a long list of UI and UX fixes. Theme consistency, sidebar behavior, tooltips, dark mode contrast, layout bugs, overflow issues, and overall polish across logs, incidents, infrastructure, and auth flows are all noticeably better.
  • Lots of cleanup and performance work landed as well, including dependency pruning, scheduler bumps, caching improvements, and removal of legacy code. 🚀

This is a big release - almost every part of the platform changed and we needed a lot of time for testing. It's been more than 3 months since the last release, and thank you again for your patience!

All merged pull requests (153)
New contributors (18)

Full diff on GitHubv3.2.0 → v3.3

v3.2.0

Feature release

This feature fixes a few bugs and improves UI/UX throughout the Checkmate application.

All merged pull requests (8)
New contributors (2)

Full diff on GitHubv3.1.8 → v3.2.0

v3.1.6

Patch

Major fix

  • fix broken multiarch build

Minor features

  • Allow for admin to create users without registration
All merged pull requests (7)
New contributors (2)

Full diff on GitHubv3.1.5 → v3.1.6

v3.1.5

Patch

Major fixes

  • Fix dependency and build issue with Sharp library
All merged pull requests (14)

Full diff on GitHubv3.1.4 → v3.1.5

v3.1.4

Patch

This version brings an issue about architectures, so please use 3.1.3 for now

Major fixes

  • Bump queue dependency to fix interval update issue
  • Add migration to fix the status window threshold issue

Minor fixes

  • UI fixes

Minor features

  • Allow Docker container names as well as IDs for Docker monitoring
All merged pull requests (9)

Full diff on GitHubv3.1.3 → v3.1.4

v3.1.2

Patch

Major fixes

  • Resolved issue with string service path

Minor fixes

  • Update ARM distribution docker compose file
  • Fix notification validation
All merged pull requests (6)
New contributors (1)

Full diff on GitHubv3.1.1 → v3.1.2

v3.1

Major release

For a list of all features that goes in this release, please check v3.0 beta link.

Major feautures

  • n of m type checks are now possible, where your monitor will only change status if the last n of m checks fail/succeed.
  • Added network monitoring
  • Everything else from 3.1-beta

Minor fixes

  • Various UI bugs
All merged pull requests (17)
New contributors (1)

Full diff on GitHubv3.1-beta → v3.1

v3.0-beta

Beta

This is a beta release before we roll out general availability of 3.0. We have passed 103 contributors and 7.7K stars mark!

  • Redis and BullMQ have been removed from the project in favour of a simpler in-memory based queue
  • MongoDB replica cluster requirement has been removed as it is no longer needed
  • Infrastructure monitoring now includes net stats (requires latest Capture version)
  • Game server monitoring functionality added to monitor hundreds of game servers
  • Capture now includes support for Windows, Linux, MacOS as well as smaller devices like RPi
  • Ping monitoring can be added to Status Pages
  • New screen to edit users
  • Introduced global thresholds - now admin can set a global threshold once and apply it to all new monitors
  • More language support

Minor changes

  • Lots of UI tweaks
  • Many minor bug fixes

Known issues

  • Very few cosmetic issues are left, but we believe this release is stable enough to test on your own

All changes

All merged pull requests (95)
New contributors (10)

Full diff on GitHubv2.3.1 → v3.0-beta

New contributors (4)

v2.3.1

Patch

This minor version fixes a small but nasty issue that forbids email settings to be saved.

Major fixes

  • Settings page bug resolved - Incorrect route specificity was directing a request to the wrong route
  • PageSpeed create and configure pages have been combined into one page to reduce code duplication
All merged pull requests (7)
New contributors (2)

Full diff on GitHubv2.3 → v2.3.1

v2.3

Feature release

This release introduces several features and fixes a few bugs. Also there are several UI tweaks, UX improvements and small changes for stability of the whole system. Also we're so proud to have passed 90 contributor and 6.1K stars mark!

Note: The previous release had a few minor hiccups we decided not to broadcast. We’ve fixed those in 2.3, and our tests haven’t uncovered any major issues by the time we're writing this announcement.

In this release (2.2 + 2.3 combined):

  • BullMQ and Redis have been removed from the project and replaced with Pulse. People had a lot of issues with those two services and we've seen a great deal of simplicity with Pulse.
  • Notification channels have been added. This means you don't have to define a notification for each monitor, but add it under the global Notification section, which can be accessed from the sidebar. Then, each notification channel can be added to monitors.
  • Incidents section now includes a summary of all incidents.
  • You can optionally add/remove the administrator login link in the status page
  • You can optionally display IP/URL on a status page
  • A new sidebar for "Logs" have been added. It includes two tabs:
  • Job queue: All the jobs (e.g active pings) can be viewed here
  • Server logs: All the logs in the Docker container, which makes the debugging of issues easier.
  • Added PagerDuty integration to notifications
  • Added a search button for Infrastructure monitors
  • Status page servers can now be bulk selected

Web page: checkmate.so GitHub: github.com/bluewave-labs/checkmate Download: github.com/bluewave-labs/Checkmate/releases Documentation: docs.checkmate.so

What's Changed (2.2beta + 2.3)

All merged pull requests (139)
New contributors (18)

Full diff on GitHubv2.1.1 → v2.3

v2.2

Feature release

Checkmate 2.2-beta

Note that this release might be unstable, so use with caution

This release introduces several features and fixes a few bugs. Also there are several UI tweaks, UX improvements and small changes for stability of the whole system.

In this release:

  • BullMQ and Redis have been removed from the project and replaced with Pulse. People had a lot of issues with those two services and we've seen a great deal of simplicity with Pulse.
  • Notification channels have been added. This means you don't have to define a notification for each monitor, but add it under the global Notification section, which can be accessed from the sidebar. Then, each notification channel can be added to monitors.
  • A new sidebar for "Logs" have been added. It includes two tabs:
  • Job queue: All the jobs (e.g active pings) can be viewed here
  • Server logs: All the logs in the Docker container, which makes the debugging of issues easier.
  • Added PagerDuty integration to notifications
  • Added a search button for Infrastructure monitors
  • Status page servers can now be bulk selected
  • Languages: Portuguese, Russian, Turkish, Ukrainian and Vietnamese
All merged pull requests (84)
New contributors (13)

Full diff on GitHubv2.1.1 → 2.2

v2.1.1

Patch

This is a minor follow-up release for 2.1, intended to fix bugs and introduce small features.

Major fixes

  • E-mail issues on settings page resolved

Minor features

  • Introduced ARM CPU support
  • Allow testing of email without saving settings
  • Added port to monitor name in maintenance window search item
  • It is now possible to add ping monitors to a status page
All merged pull requests (37)
New contributors (5)

Full diff on GitHubv2.1 → v2.1.1

v2.1

Feature release

We're excited to announce the release of Checkmate 2.1, which includes several new features, improvements, and bug fixes since version 2.0.2.

Major features

  • Notification integration: We now support notifications on
  • Slack
  • Discord
  • Telegram
  • Generic webhook
  • Localisation
  • Added comprehensive internationalization (i18n) support with language selection in settings. Added Russian and Turkish language support with translations for distributed uptime monitoring features
  • Integration is via POEditor. You can join a translation team here.
  • Status pages, which can provide information about the operational health of your services.
  • JSON query monitoring
  • Bulk importing of monitors from other platforms

Minor features

  • Better UI for settings
  • E-mail settings are now configured in the UI
  • Google PageSpeed API key is now configured in the UI
  • Removed reverse proxy from Client image so you can add your own reverse proxy
  • Rather than centering the dashboard, the sidebar is positioned on the left.
  • Better colors, fonts, gaps throughout the UI
  • Filters for incidents, uptime and infrastructure monitoring
  • Option to ignore TLS/SSL errors and continue checking the website's availability

Major fixes

  • Removed ports directive from Mongo and Redis, as these ports don't need to be exposed

Minor fixes

  • Many UI fixes throughout the application

Notable changes

  • Pagespeed api key can now be configured in settings page. Previously it was an environment variable.
  • Checkmate client port is now 52345 (previously it was 5000)

Documentation

  • Updated documentation portal at docs.checkmate.so
  • Added installation instructions for various deployment methods including Coolify and Elestio
  • Expanded user guides for new features

Contributors

We've had more than 30 contributors to the project since the last release and we're very grateful for all the contributions. Thank you all for helping make Checkmate awesome!

-- Checkmate Core team (@ajhollid, @vishnusn77, @mohicody, @gorkem-bwl, @Owaiseimdad, @Br0wnHammer and @mertssmnoglu)

All merged pull requests (426)
New contributors (21)

Full diff on GitHubv2.0.2 → v2.1

v2.0.2

Patch

This release focuses on performance improvements and UI tweaks

Minor features

  • New color system implemented for MUI theme

Major fixes

  • Move to using MongoDB's aggregation pipeline for more efficient queries.
  • Monitors query is now under 100 ms (down from several seconds)
  • Group data by hours or days ( depending on selected window) to reduce checks to a reasonable number
  • Incidents page now has filtering, which makes it quite fast to retrieve data

Minor fixes

  • UI and color fixes throughout the app
  • Minor bug fixes for stability

Contributors

As always thank you to all the contributors to this project, we would not be this far without your help!

All merged pull requests (92)
New contributors (5)

Full diff on GitHubv2.0.1 → v2.0.2

v2.0.1

Patch

This release mainly implements UI fixes. There are some minor bug fixes and refactoring included in this release as well.

Minor features

  • Light/Dark mode button moved to sidebar

Minor fixes

  • Docker scripts have been updated
  • UI and Color fixes throughout the app
  • There are some minor bug fixes throughout for stability and maintainability

Contributors

A special shout out to all the new contributors that have added their touch to this project. You've made our application better for having added your code to it and we appreciate all your help!

All merged pull requests (340)
New contributors (27)

Full diff on GitHubv1.1.0 → v2.0.1

v2.0

Major release

With the introduction of Infrastructure Monitoring, you can now monitor key details like CPU usage, memory, temperate and disk performance, and set alerts to catch issues before they become problems. We've added Docker container monitoring to help you track your containers more easily. This version also comes with better stability and bug fixes as well.

Major features

  • Infrastructure monitors
  • Infrastructure monitors measure a variety of stats about the hardware of the target machine.
  • CPU usage
  • CPU temperature
  • Memory usage
  • Disk usage
  • You can set thresholds for each metric for when you want to be alerted.
  • Example: If the CPU usage threshold is 60%, you will be notified when usage exceeds 60%.
  • Requires Checkmate agent to be running on the target machine.

Minor features

  • Docker container monitoring
  • Monitor the status of Docker containers
  • Requires exposing the Docker daemon
  • Currently supports connection to docker daemon by unix socket

Minor fixes

  • There are some minor bug fixes for robustness, reliability, and clarity.

Full diff on GitHub

All merged pull requests (115)
New contributors (11)

Full diff on GitHubv1.1.0 → v2.0

v1.1.0

Feature release

What's in V1.1.0

Major Features

  • Maintenance Windows
  • A maintenance window is a scheduled time when checks will not be performed
  • Maintenance Windows can be set to recur at set intervals
  • Maintenance Windows have a set duration for which they are active
  • You can create maintenance windows for multiple monitors at once
  • You can edit your maintenance windows to change any of their options

Minor Fixes

  • There are some minor bug fixes and refactors for clarity and readability

Full diff on GitHub

v1.0

Feature release

This is the initial release of Uptime Monitor with core features implemented.

Thanks to the maintainers of this project @veyselboybay, @Skorpios604, @danielcj2, and @MuhammadKhalilzadeh for making this project possible and a special thanks to our facilitator and coordinator @gorkem-bwl.

Acknowledgements

We would like to take the opportunity to also thank all of the contributors from outside of our team for their contributions: @alvarotorrestx @mertssmnoglu @geekananya @windsywinds

We greatly appreciate your contributions to this open source project, it is better for each of you having touched it.

Quick Start

  • Download our [Docker Compose File](/Docker/quickstart/docker-compose.yaml)
  • Download our [Quickstart script](/Docker/quickstart/quickstart.sh)
  • Place these files in a directory of your choice
  • Run quickstart.sh and generate config files
  • Run docker compose up to start the application
  • Application is running at http://localhost

What's in V1.0.0

Demo application

You can try out this application at https://uptime-demo.bluewavelabs.ca

Major Features

  • Create and edit monitors that monitor the status of a server at designated intervals
  • Uptime Monitor - Monitors a given URL/address and regularly checks response status and times
  • HTTP monitor - Makes an HTTP/HTTPS request to a designated URL
  • Ping monitor - Pings a designated address
  • PageSpeed monitor - Uses the Google PageSpeed Insights API to generate a PageSpeed report for a designated URL

---

  • Uptime Monitors Dashboard
  • Display response time/status in graphic form over time for all monitors
  • Sort monitors by Name or Status
  • Filter monitors by Name or URL

image

---

  • Uptime Monitors Details
  • Show detailed stats for a given Uptime monitor

image

  • PageSpeed Monitors Dashboard
  • Display PageSpeed data over time for all monitors

image

---

  • PageSpeed monitors Details

** Show detailed stats for a given PageSpeed monitor

image

---

  • Incidents
  • Show a list of incidents
  • Filterable by monitor

image

---

  • Notifications
  • Ability to set an alert for each monitor which will send a notification when the monitor's status changes
  • Notifications are sent by e-mail

Full diff on GitHub

Get started

Run the latest,on your own terms.

Self-host every release the day it ships. No upgrade tiers, no waiting for a rollout.