11 protocols
From WireGuard and OpenVPN to VLESS, Hysteria2 and TUIC.
Monitoring
VPN monitoringUptime monitoringIntegrationsPlatform
AI assistantsAPI and CLISecurityMore
PricingFree testerDocsBlog Log inWe run the real protocol handshake, not a ping. 11 VPN protocols, alerts the moment a server is confirmed down.
Every plan is free for 14 days. Cancel before day 15 and you pay nothing.
Every check runs the real handshake for these protocols
A port ping calls a VPN server healthy when nobody can connect. TunnelHQ checks at the protocol layer: wrong keys, expired preshared secrets, SNI blocks, REALITY misconfig, UDP shaping.
TunnelHQ reads the protocol, host, port and keys, and fills in the tunnel for you.
From WireGuard and OpenVPN to VLESS, Hysteria2 and TUIC.

WireGuard and OpenVPN take a config file, VLESS and Trojan a share link, IKEv2 and OpenConnect a host and login.
2.84sauth_failedEach check brings the tunnel up. When one fails, you see which stage broke and why.
Slack, PagerDuty, Telegram, email and more, plus signed webhooks. Turn one on for a whole project, or per tunnel or check.
One alert when a second check confirms the failure, another when the server recovers.

When it went down, how long it lasted, who acknowledged it and when it recovered.
Invite teammates as Admins, Managers or Viewers. Viewers never see a tunnel's VPN credentials.
osaka-1.larkspurvpn.comseoul-1.larkspurvpn.comSort tunnels by provider, location or customer. Each group shows its worst status.
Private key
Credentials are encrypted at rest.
Keys and passwords are encrypted with AES-256-GCM before they reach the database. The free tester keeps nothing.
Websites, APIs, hosts and cron jobs, in the same projects and alert channels as your tunnels. Uptime checks are free during the beta.
Average129 ms
Fastest96 ms
Slowest187 ms
| Time period | Availability | Downtime | Incidents |
|---|---|---|---|
| Last 24 hours | 100% | none | 0 |
| Last 7 days | 100% | none | 0 |
| Last 30 days | 99.98% | 9m | 1 |
| Last 90 days | 99.99% | 9m | 1 |
Every check charts its response times and reports availability for the last day, week, 30 and 90 days.

Website, keyword, ping, TCP port and DNS, every 20 seconds to every 30 minutes.

A failed check waits out its confirmation period, two minutes by default, and checks again. Only a second failure alerts.

Website and keyword checks warn up to two months before a certificate or domain expires.
Make a HEAD, GET or POST request to this address each time the job runs:
https://app.tunnelhq.com/api/push/Lk7q2NvR8sTb3WmYc4HdJf6Pz9Xa1EuQCopyTo report a failure, add /fail, or the job’s exit code (/0 means it worked).
# After the job succeeds curl -fsS -m 10 --retry 5 -o /dev/null \ https://app.tunnelhq.com/api/push/Lk7q2NvR8sTb3WmYc4HdJf6Pz9Xa1EuQ # Or report the job’s own exit code your-job; curl -fsS -m 10 --retry 5 -o /dev/null \ https://app.tunnelhq.com/api/push/Lk7q2NvR8sTb3WmYc4HdJf6Pz9Xa1EuQ/$?
A job calls its heartbeat address each time it runs. A missed call, or one that reports a failure, sends the alert.
$ curl https://app.tunnelhq.com/api/v1/check \ -H "X-API-Key: thk_••••••••" \ -d '{"protocol": "wireguard", "config": "[Interface]…"}' { "status": "healthy", "protocol": "wireguard", "connect_ms": 142, "latency_ms": 24, "exit_ip": "176.61.144.46" }
34 endpoints for tunnels, tests, incidents and usage, with an OpenAPI file.

Claude, ChatGPT, Cursor and VS Code connect by signing in. You choose the project and the access.

One prompt finds the sites, APIs and jobs in your project, asks before adding them, and tests each one.
POST /hooks/tunnelhq X-TunnelHQ-Event: monitor.down X-TunnelHQ-Signature: sha256=9f2c… { "event": "monitor.down", "data": { "monitor_name": "Seoul 1", "message": "Tunnel unreachable", "failed_stage": "connect" } }
Down, degraded and up, plus incident opened and resolved, each signed with HMAC-SHA256.
sam@Sams-MacBook-Pro ~ % thq test ./lisbon-1.conf ◆ Instant Test Source: lisbon-1.conf (wireguard) Protocol: wireguard Endpoint: lisbon-1.larkspurvpn.com:51820 ✔ Reachable — 240ms test_id: chk_q4tn81xk55302h7bdf tested_at: 2026-10-19T09:41:07.512Z assigned_ip: 10.66.0.2 sam@Sams-MacBook-Pro ~ % thq servers create ./lisbon-1.conf --name "Lisbon 1" ✔ Created Lisbon 1 (srv_4821) id: srv_4821 protocol: wireguard interval: 180s status: unknown sam@Sams-MacBook-Pro ~ %
Test a config, link or subscription from your terminal, or add a tunnel. It saves nothing on a test and exits 1 on a failure, so CI can stop a bad config.
Every plan runs the real handshake on all 11 protocols. Start with 14 days free.
For a small VPN service or a side project.
$12per month
Billed monthly
Start 14-day trialIncludes:
For a VPN service with users in many countries.
$39per month
Billed monthly
Start 14-day trialEverything in Starter, plus:
For large fleets that need every minute covered.
$99per month
Billed monthly
Start 14-day trialEverything in Pro, plus:
For fleets bigger than Business.
Custom
Talk to sales for a quote
Talk to salesEverything in Business, plus:
Every plan includes
14 days free on every plan. Your card is charged on day 15, and you can cancel any time before. Compare every plan
All 11: WireGuard, AmneziaWG, OpenVPN, OpenConnect, IKEv2, VLESS, VMess, Trojan, Shadowsocks, Hysteria2, and TUIC — including V2Ray/Xray share links and subscription JSON. URI-based protocols auto-detect from the scheme; config-based protocols take the full config (with credentials where needed).
We do the real handshake. For WireGuard we run a key exchange against the peer. For OpenVPN we negotiate TLS and auth-user-pass. For VLESS / VMess / Trojan / SS / Hy2 / TUIC we open the real transport and complete the protocol handshake. A reachable UDP port is not enough. A dead peer with an open firewall port still fails for us and alerts you.
Yes. That's the only way to run a real handshake. Credentials are encrypted at rest with AES-256-GCM and never logged. Best practice: use a dedicated monitoring peer with its own keypair, separate from your production client keys.
Each tunnel can be checked as often as every 5, 2 or 1 minutes, depending on the plan (Starter, Pro, Business). The first failed check opens an incident straight away. With the default 2 retries, the next failed check confirms the tunnel down, and the alert goes out at once: email, Slack, Telegram, Discord or any of the 20 channels.
30 req/min on Starter, 60 on Pro, 120 on Business. The same API covers instant checks, batch testing, server CRUD, incident management, and usage analytics. We also run an MCP server: Claude, ChatGPT, Cursor and VS Code connect by signing in, and can manage your fleet directly.
Not for new signups — instead, every plan now starts with a 14-day free trial: full plan features, all 11 protocols. You add a card at checkout, right after you create your account, and it isn't charged until day 15, and you can cancel anytime before that. Existing free workspaces keep their plan. Paid plans start at $12/mo.
The free tester runs one real handshake against a config you paste and keeps nothing. Monitoring runs that handshake as often as every 5, 2 or 1 minutes, depending on your plan, keeps the history, opens incidents, sends alerts, and works through the REST API, the CLI and AI assistants.
Yes. Our checker supports REALITY, XTLS-Vision, WebSocket + TLS, gRPC, and uTLS fingerprints for the URI-based protocols. Full handshake runs through whatever transport the URI specifies.
Yes, with Uptime checks. Website checks alert when a URL goes down or returns an unexpected status code, keyword checks when a page loses or gains a word, and ping, TCP port and DNS checks watch hosts and name servers. For a cron job or backup, a heartbeat alerts when the job stops checking in. Uptime checks sit in the same projects as your tunnels, alert through the same channels, and are free during the beta, without counting toward your tunnels.
Adding a tunnel past your plan's limit is refused, with a link to upgrade. The tunnels you have keep running. Uptime checks don't count toward it during the beta.
No. TunnelHQ is a managed service. If you need self-hosting, open-source monitoring tools exist, but none checks VPN protocols out of the box.
Use Bulk import: paste share links and configs, or upload .ovpn and .conf files, and each server becomes a tunnel. A V2Ray or Xray subscription URL brings in a whole fleet and keeps it in sync. You can also create tunnels through the REST API.
Better TunnelHQ, with your consent.
We use first-party, EU-hosted analytics to understand how TunnelHQ is used. No ads, no data selling, no cross-site tracking. If you decline, your visit is still counted anonymously, without cookies.
Privacy policy