Preview page — visible to crawlers and to humans only with ?preview=true. The bare URL redirects human visitors back to the homepage. This is a service we intend to launch; it is not generally available yet.
Preview

Monitoring

Assertion-based uptime checks for the endpoints you actually care about. Give us a URL and what “healthy” means — a status code, a response header, a string in the body — and we watch it on your schedule and tell you the moment it stops being true.

HTTP(S) today; WebSocket and gRPC on the same engine. No account, no signup — a check belongs to an unguessable siteId you keep to yourself.

  Create a health check

Live preview gadget — mint a siteId and add HTTP(S) / WebSocket / gRPC checks. No signup.

A health check is a target + an interval + assertions

“Up” should mean more than “the socket answered.” A check is up only when every assertion you set holds; the moment one fails, the check is down and the report names the assertion that broke — so you learn what went wrong, not just that something did.

AssertionWhat it checksExamples
Response code The HTTP status, as an exact code or an allowed set/class 200; 2xx; 200,201,204
Response header A header is present, equals, or contains a value Content-Type contains application/json; Strict-Transport-Security present
Body contains A substring that must appear (or must not appear) in the body body contains "status":"ok"; body does not contain Exception

A check is just data — a target, a cadence, and a list of assertions:

{
  "target":   "https://api.example.com/health",
  "interval": 60,                  // minutes: 1 (default) … 1440
  "assert": {
    "status":  "2xx",
    "headers": { "content-type": "~application/json" },
    "body_contains": "\"status\":\"ok\""
  }
}

Three protocols, one engine

HTTP(S)

The full assertion set above — status, headers, body — over HTTP/1.1 and HTTP/2, with redirects and per-request timeouts. Available first.

WebSocket

Open the socket, optionally send a frame, and assert that the expected frame (or an echo) comes back inside the timeout — a real handshake, not just a TCP connect.

gRPC

Speaks the standard gRPC Health Checking Protocol (grpc.health.v1.Health/Check) and asserts the service reports SERVING — the idiomatic way to health-check a gRPC backend.

No account — your siteId is the key

Create your first check and you get an auto-generated siteId — a random UUID. That UUID is your credential: anyone who has it can view and edit the checks under it; anyone who doesn’t, can’t. There is no password or account. An email address is optional and used only when you enable notifications; it must be confirmed with a one-time UUID before any alert can be sent. The siteId remains the credential.

It is the same zero-friction model as our other no-account tools (Notes; the vynx MCP bridge session): an unguessable capability token, not an account. Treat the siteId like an API key — keep it private, share it to delegate access, and “rotate” by moving your checks to a fresh one.

Limit (preview defaults)Value
Checks per siteIdup to 100
Check interval1 min (default) to 1440 min (24 h)
Sign-up requirednone — the siteId is minted on first use

Verified email alerts — available in the preview

Add an optional notification address, enter the one-time UUID sent to that mailbox, and opt individual checks into incident and recovery messages. A down alert fires after two consecutive failures to damp short flaps; recovery is sent once the check is healthy again. Verification codes expire after 15 minutes. Challenge sends have dedicated IP, site, and recipient limits; confirmation attempts are limited by IP and site.

On the roadmap

Domain ownership verification

To monitor a domain you’ll prove you own it with a one-time TXT / CNAME DNS record, so a siteId can’t claim a domain that isn’t yours.

Plans & tiers

The 100-check cap and the 1-minute floor become plan-dependent — more checks and tighter intervals on paid tiers; the free tier stays genuinely useful.

Public status pages

A shareable uptime / status page per siteId — a hosted status page without standing up a separate provider.

Honest status

Preview, not GA

The data model and limits above are live as a preview at the Monitoring gadget. It is not a general-availability SLA: data may expire after inactivity and API details can still change while the preview is evaluated.

The siteId is a bearer secret

Because the siteId is the only credential, leaking it grants full control of its checks, and losing it means losing access — there is no recovery. That is the deliberate trade for a no-account tool. Keep it safe.

Frequency is best-effort

A 1-minute interval is a target cadence, not a hard real-time guarantee; checks are scheduled with small jitter to spread load. Sub-minute monitoring is out of scope for now.

Want in on the preview?

Monitoring is shaping its first release around real checks. Back the preview to help us get it shipped — then tell us what you’d point it at.

  Support indie, corporate-free software!   Buy me a coffee!

Secure checkout via Revolut. Want to shape it — an API, a site, a WebSocket or gRPC backend, and what “healthy” means? Email info@loxal.net. This page is a preview — the Monitoring service is not generally available yet.