TunnelHQ vs Healthchecks.io

Healthchecks.io and TunnelHQ use opposite monitoring models. Healthchecks.io is heartbeat-based — your service pings their endpoint on schedule, and if the ping is late, you get alerted. TunnelHQ is probe-based — it actively reaches out to your VPN servers, performs the protocol handshake, and alerts on the result. Both are valid; they catch different failure modes.

TL;DR

Pick Healthchecks.io if: you want to monitor scheduled jobs, cron tasks, batch processes, or long-running services that can ping an endpoint when they're alive. Especially good for backups, ETL jobs, and dead-man's-switch patterns.

Pick TunnelHQ if: you want to monitor VPN server availability from outside — you don't control the VPN server's ability to self-report, you need to see what a real client sees, and you need protocol-aware handshake validation.

The models side by side

Healthchecks.io (pull / heartbeat)

your service ──HTTP GET──▶ healthchecks.io/ping/[uuid] (every N minutes) if late ──▶ alert

The service is responsible for proving it's alive. Healthchecks.io sits passive, waiting for pings. Missed ping = alert. Excellent for confirming that a backup actually ran, a cron actually executed, a long-lived job is still running.

TunnelHQ (push / probe)

TunnelHQ check node ──WireGuard handshake──▶ your VPN server (every 1-10 min, from US/EU/APAC/SA) if fail ──▶ alert

The monitoring service initiates. The target can be completely passive — in fact, it shouldn't know it's being checked. Good for external services, VPN servers, APIs your customers consume.

Feature comparison

TunnelHQHealthchecks.io
Model Active probe from check nodes Passive heartbeat (service pings in)
Good for External-facing services — VPN, API, web Internal jobs — cron, batch, background workers
VPN protocol handshakes 10+ protocols native Not applicable (service would ping HC from inside the VPN server, which proves only that something is running)
Sees what users see? Yes — probes from outside No — only knows whether the service pinged
Requires code changes? No — just paste the config Yes — add a ping step to your service
Detects "process running but not working" Yes — handshake fails even if process is up Partial — depends on where ping is wired in the job
Free tier 5 monitors, 10-min interval 20 checks free forever (personal)
Lowest paid tier $12/mo — 20 monitors $5/mo — 100 checks (Hobbyist)
Status pages Included Included
REST API 30–120 req/min by plan Yes; documented
Self-hostable No (commercial SaaS) Yes — open source (BSD-3-Clause)

When to use each

Use Healthchecks.io for

Use TunnelHQ for

The obvious combination

Many teams run both. Example setup:

The two tools cover different failure modes. They don't compete.