Watchdog probes your app every 30 seconds from multiple independent locations, walks your user journeys every 5 minutes, verifies pricing-tier enforcement end-to-end, and tells you before your users do. Watchdog monitors itself — the proof you see here is this engine verifying its own claims.
Plans from $9/mo · free tier included · see pricing
Generic uptime probes ping a URL. Watchdog walks through your signup flow, verifies the checkout returns the expected tier, and confirms the API rejects requests without a key. The differences are visible when something goes wrong.
| capability | WatchdogHQ.dev delivers |
|---|---|
| User journey testing | Walks homepage → pricing → auth → checkout like a real user, not a ping. |
| Pricing-tier enforcement verification | Logs in as each tier and confirms the limits enforce. Proven on the conformance fixture today; real-app pilots are gated cross-lane. |
| Multi-location HTTP checks | Probes fan out across multiple independent network locations — no single vantage point. |
| Journey cadence separation | Endpoint probes every 30 seconds, full journeys every 5 minutes. Cadence split is intentional. |
| AI-build failure checks | Hallucinated dependencies, dead routes, broken auth, hardcoded env vars — the way AI actually breaks apps. |
| DNS + SSL + security headers | Cert expiry and header hygiene before browsers warn your users. |
| Self-describing config | Drop a single watchdog.json at /.well-known/ — Watchdog discovers what to test. |
| Public proof page + badge | A truthful, embeddable badge that reflects real journey results — and stays honest on stale evidence. |
| Prometheus /metrics + MCP for AI agents | GET /metrics for your dashboards; six MCP tools your AI agent can call to verify before it ships. |
Every 30 seconds Watchdog probes the basics. Every 5 minutes it walks your app like a real user. The signature capability — pricing-tier enforcement — runs against your limits and reports when the contract drifts.
Homepage loads. Pricing renders. The dashboard redirects to auth instead of leaking the view. The API rejects requests without a key. Watchdog verifies the flows your users actually take.
Does the demo account actually hit its 10-project limit before charging? Does Pro stop at 500? Watchdog logs in as each tier and confirms the contract. Proven on our conformance fixture today; real-app pilot runs are gated cross-lane.
Drop a single manifest at /.well-known/watchdog.json. Watchdog discovers journeys, tiers, and probes with no dashboard configuration.
Probes fan out across multiple independent network locations. An outage at one isn’t an outage in your status badge. Generic phrasing — we publish no specific fleet topology.
Hallucinated dependencies. Routes that were never wired. Env vars that got hardcoded. Checks built around the failure modes that ship from AI coding sessions.
A live, embeddable badge that turns red the instant a journey, tier, or probe stops working. The same signal that drives your proofs; the badge never fakes green.
Six tools: scan a URL, read status, fetch the badge, query the run ledger. Your AI can verify a deployment against a watchdog.json before declaring it shipped — without leaving the terminal.
Priced on what verified monitoring is worth, not on what monitoring tools usually charge. Free to start, managed when you want it. Add watchdog.json, pick a tier when you’re ready.
Drop in watchdog.json. Get scanned once. Show the gray badge.
no card · no expiry
Continuous monitoring. Green/yellow/red badge. Email alerts when a journey breaks.
cancel anytime
Tier-enforcement verification. Priority cadence. Slack and Telegram alerts.
pilot access · tier verifier wired
White-label status pages. Programmatic API. Team seats. For shops monitoring client apps.
annual also available
Add a single JSON manifest at /.well-known/watchdog.json. Watchdog reads it on probe time, walks your journeys, hits your tier boundaries, and surfaces drift on the proof page. No dashboard configuration required.
"name": "my-app", "version": "1.0.0", "url": "https://myapp.com", "health": "/api/health", "journeys": [ { "name": "homepage", "path": "/", "expect": 200 }, { "name": "pricing", "path": "/pricing", "expect": 200 }, { "name": "auth_redirect", "path": "/dashboard", "expect": [301, 302, 307, 308] }, { "name": "api_reject_nokey", "path": "/api/data", "expect": [401, 403] } ], "tiers": { "standard": { "limits": { "projects": 3 } }, "pro": { "limits": { "projects": 50 } } }
Drop the shield in your README. The image is rendered live from your last cycle — it can’t lie and it can’t fake-green. The semantics demo below shows what each state actually means on a live /healthcheck-driven badge.
One HTML tag. The badge is an SVG served from watchdoghq.dev/badge.svg — it always reflects your latest cycle, never cached, never green-washed.
// semantically truthful: caps to STALE
// when fresh data isn’t available
// so the badge never lies
live now · /healthcheck.json
semantics demo — live badge driven by real evidence · see /proof/conformance-app
Point Watchdog at your app. In seconds you'll know it resolves, responds, and has a valid certificate plus sane security headers. No signup required to scan.
# instant health scan — no signup $ curl "https://watchdoghq.dev/api/scan?url=https://yourapp.com" # continuous monitoring — for your stack $ open https://watchdoghq.dev/home ✓ DNS · HTTP · SSL · headers ✓ journeys · pricing-tier enforcement ✓ multi-location, multi-cadence
Watchdog runs its own journey checks against watchdoghq.dev every 5 minutes. This panel is live — rendered from the same reports that power the badge. ALL PASS
| check | url | code | latency | sla | |
|---|---|---|---|---|---|
| ✓ | home | https://watchdoghq.dev/home | 200 | 212ms | p95 251ms |
| ✓ | competition | https://watchdoghq.dev/competition | 200 | 404ms | p95 450ms |
| ✓ | badge | https://watchdoghq.dev/badge.svg | 200 | 213ms | p95 247ms |
| ✓ | health | https://watchdoghq.dev/health | 200 | 211ms | p95 236ms |
<img src="https://watchdoghq.dev/badge.svg" />