Is the site up, is the certificate still valid, did the page change?
DeskUptime answers those three questions from your own computer. A free command-line tool for one-off checks and CI, and a small desktop app that keeps checking in the background. No hosted dashboard, no monthly fee, nothing about your sites stored on someone else's server.
CLI is free and MIT-licensed. Desktop app is free for up to 3 sites; Pro licence 19 USD one-time.How it works
One command, no install, no account:
$ npx github:mahope/deskuptime check https://example.com https://cloudflare.com Checking 2 URL(s)... ok https://example.com Status: 200 OK Response: 85 ms SSL: expires in 63 days Content: 559 bytes, sha256 unchanged ok https://cloudflare.com Status: 200 OK Response: 312 ms SSL: expires in 42 days Content: 1,316,377 bytes
Add watch to keep checking on an interval, and it prints a line each time something changes:
deskuptime watch https://example.com --interval 300
- Uptime and response time
- HTTP status, redirect chain and how long the response took. A non-2xx status or a timeout is reported as down.
- SSL certificate
- Days until expiry, issuer, protocol version. The default warning threshold is 14 days.
- Content changes
- A SHA-256 hash of the response body is compared with the previous run. Useful for spotting a broken deploy, an injected script or a defaced page.
- Exit codes and JSON for CI
- Exit 0 when everything passes, 2 when a site is down.
--jsongives machine-readable output,watch --onceruns a single pass for cron. Use it as a post-deploy smoke test or on a schedule in GitHub Actions.
Who it is for
Freelancers and small agencies who look after a handful of client sites and do not want another subscription for it. Developers who want a smoke test after every deploy. Anyone who has found out from a customer that a certificate expired.
It is not a replacement for a distributed monitoring service with a status page and on-call rotation. Checks run from the machine you run them on; if that machine is asleep, nothing is checked. That is the trade-off for keeping it local and free of running costs.
Install the CLI
brew tap mahope/tap && brew install deskuptime # macOS / Linux
npx github:mahope/deskuptime check https://your-site.com # no install, needs Node 18+
Tagged tarballs are on GitHub Releases. In GitHub Actions, use the mahope/deskuptime action with a list of URLs; the job fails when a site is down and a status table lands in the job summary. There is a walkthrough for the CI setup.
Desktop app
A small Tauri app for macOS and Windows that lives in the system tray and runs the same checks on a schedule. Notifications when a site goes down, a certificate approaches expiry or the content hash changes. Current version 0.2.7.
- macOS, Apple Siliconzip, aarch64
- macOS, Intelzip, x86_64
- Windows 10 and laterNSIS installer
If macOS or Windows warns about an unidentified developer on first launch, that is because the build is not code-signed through their paid programmes. Right-click and choose Open on macOS; choose "More info" then "Run anyway" on Windows.
Free and Pro
| CLI | Desktop | Desktop Pro | |
|---|---|---|---|
| Uptime, SSL and content checks | yes | yes | yes |
One-off check of any number of URLs | yes | yes | yes |
| Continuous watch / background checks | yes | yes | yes |
| System tray and notifications | — | yes | yes |
| Sites in watch mode | 3 | 3 | unlimited |
| Email and webhook alerts | — | — | yes |
| Price | free | free | 19 USD once |
CLI and desktop app
Free
MIT-licensed. One-off checks have no limits; continuous watch mode covers up to three sites.
Desktop Pro
19 USD one-time, 3 machines, all 1.x updates
Removes the three-site limit and adds email and webhook alerts. A licence key, no subscription, no phone-home.
Pro is coming — checkout is not open yet. The free version is complete and MIT-licensed, and nothing in it expires.
Questions
What happens when my computer is off or asleep?
Nothing is checked until it wakes up. DeskUptime runs where you run it. If you need checks that continue while your laptop is closed, run the CLI on a server or in a scheduled GitHub Actions workflow — both are free.
Does it send my URLs anywhere?
Only to the sites being checked. There is no account, no central server and no telemetry. This site runs an anonymous page-view counter and nothing else.
How is this different from UptimeRobot or Pingdom?
Those check from many locations around the clock and charge monthly for it. DeskUptime checks from one place — yours — and costs nothing to run. For a personal site or a few client sites that is usually enough. For a service with an SLA, it is not.
Can I check many sites at once?
Yes. Pass any number of URLs to check. Watch mode is limited to three sites without a Pro key. The free web checkers do a bulk URL check and a security-headers check without installing anything.
Is there a Linux desktop build?
Not yet. The CLI runs on Linux; the desktop app is currently built for macOS and Windows only. It is a Tauri app, so a Linux build is possible if there is demand — open an issue on GitHub.
Who makes this
DeskUptime is built by Mads Holst Jensen, an independent developer in Odense, Denmark, working as mahoje.dk. It came out of looking after client WordPress sites and wanting a check that did not need another account. The engine, the CLI and the desktop app are all on GitHub.
Related reading: checking SSL certificate expiry, website monitoring from the terminal, post-deploy smoke tests for static sites.