Live monitoring that actually streams

Probes paint in your browser the moment they finish — not on the next 30-second refresh.

Most uptime tools call themselves real-time, then refresh a dashboard every 30–60 seconds. Live Checks streams each probe over a dedicated WebSocket: canvas chart, per-stage DNS / Connect / TLS / TTFB phases, drag-to-zoom, bidirectional probe selection, CSV + JSON export.

Key Features

Everything you need to monitor your infrastructure effectively

Streamed, Not Polled

Probes flow from our VPS workers into your browser over a dedicated WebSocket. New points paint in well under a second — no dashboard auto-refresh, no Firestore round-trip, no 30-second lag.

Canvas Scrolling Chart

A real instrument-panel line chart that tweens smoothly as the live tip advances. A particle trail streams backward in real-time mode and quiets when you pan back through history.

Drag-to-Zoom

Select any region of the chart to zoom into a single spike or recovery. Double-click to progressively zoom out. A brush navigator below lets you pan through the full buffer while it keeps filling.

Per-Stage Phase Breakdown

Toggle Total ↔ Phases to see DNS → Connect → TLS → TTFB rendered as a stacked area on every single probe. Diagnose latency where it actually lives instead of staring at an aggregate number.

Tier-Classified Probes

Every probe is classified against the visible window's median: amber dots for ≥2× median (elevated), red for ≥3× (spike). Markers and table-row tints always agree.

Raw Probe Table

Newest-first table beside the chart with timestamp, status, response time, per-stage timings, and status code. New rows flash green for 900ms as they land. Click a row to highlight the chart point — and vice versa.

CSV & JSON Probe Export

Download visible-window or full-buffer probes as CSV or JSON, with range presets from 5 minutes to 24 hours. Per-stage phase timings, status codes, and state segments are all included in the payload.

Per-Region Multi-Connect

Your browser opens one WebSocket per region your checks live in (Frankfurt + opt-in Boston). Each region is independent and failure-isolated, capped at 10 concurrent connections per user.

Replay-Buffer Resilience

Lose your connection on a flaky train Wi-Fi? Reconnects deliver a fresh snapshot plus any state transitions missed during the gap, from a 5-minute server-side replay ring buffer. Falls back to Firestore on outage — never an error.

Firebase ID Token Auth

The WebSocket transport authenticates with the same Clerk → Firebase token bridge as the rest of the app. No new trust plane on the VPS. Probes are filtered to the verified user.

30-Byte Wire Format

Compact per-probe payload (~30 bytes on the wire, ~100 in heap) makes the stream cheap enough to leave open all day. 30-second app-level keepalive plus protocol-level ping/pong keep the socket honest.

Bidirectional Selection

Click a probe on the chart to highlight its row in the table. Click a row to highlight its dot on the chart. Click again to deselect. The two surfaces share one selection state.

Why Choose exit1.dev?

See how we stack up against the competition

Featureexit1.devOthers
Probes streamed over WebSocket (no polling)
Sub-second paint from probe → browserUnder 1s p5030–60s dashboard refresh
Per-stage DNS / Connect / TLS / TTFB on every probeAggregate or sampled only
Drag-to-zoom chart with brush navigator
Tier-classified probe markers (elevated / spike)
Bidirectional chart ↔ table selection
CSV + JSON probe export with phase timingsAggregate CSV only
5-minute replay ring buffer on reconnect
Multi-region streaming (EU + opt-in US)Single dashboard refresh
Graceful fallback if the socket dropsFirestore onSnapshotError / blank state

Technical Details

Built for developers, by developers

Architecture

Probes are dispatched on a continuous worker pool with a 500ms dispatcher tick on dedicated VPS nodes in Frankfurt (vps-eu-1) and Boston (vps-us-1). When a probe completes, the result is pushed into a region-local WebSocket gateway (wss://live-eu.exit1.dev/ws, wss://live-us.exit1.dev/ws) and fanned out to subscribed clients filtered by verified Firebase uid. The browser opens one WebSocket per region the user has checks in, capped at 10 concurrent connections. Each region is independent and failure-isolated.

Performance

Probe → paint p50 under 1 second. Wire format ~30 bytes per probe (compact float fields: {t, rt, sc?, st, dn?, cn?, tl?, ft?}), ~100 bytes in browser heap. Sub-minute check support (15-second floor on Agency, 30-second on Pro). Hardened DNS stack — c-ares resolver plus a local recursive Unbound cache on the VPS — so DNS phase noise stays out of the chart.

API

Live Checks is a frontend feature on top of the same Firebase ID token bridge that backs the rest of the app — no new SDK. For programmatic export, the Public API (Pro / Agency, with the checks:read scope) exposes /v1/checks/{id}/history and /v1/checks/{id}/stats for the same data the Live page renders, and the exit1-mcp server gives AI assistants the same windows.

Frequently Asked Questions

Everything you need to know about our monitoring

Every other uptime tool we audited (Pingdom, UptimeRobot, Better Stack, Checkly, Hyperping, StatusCake) calls itself real-time, but the dashboard refreshes on a 30–60 second timer and re-renders from a polled API. Exit1's Live Checks stream individual probes from the VPS worker into your browser over a dedicated WebSocket transport. A probe finishing on the wire shows up on your chart in p50 well under a second — there is no polling layer.

All eight: HTTP/HTTPS, heartbeat, DNS, ICMP, TCP, UDP, WebSocket, and redirect. The per-stage phase view (DNS → Connect → TLS → TTFB) is most useful for HTTP-family checks where every probe captures all four stages; other check types fall back to total response time.

The visible window keeps filling live, but the brush navigator below the main chart shows the entire buffer — you can drag it back to a 24-hour view, drag-zoom into a specific minute, and click the spike to highlight the corresponding row in the raw probe table. Or just export the visible window as CSV/JSON.

The server holds a 5-minute replay ring buffer per region. When the socket reconnects, you get a fresh state snapshot plus any state transitions you missed during the gap — filtered to your verified user. If the WebSocket stays down longer, the UI silently falls back to Firestore onSnapshot with an 8-second debounce to prevent flicker, and a banner names the affected region so you know you're in fallback mode.

Yes. Download visible-window or full-buffer probes as CSV or JSON, with presets from 5 minutes to 24 hours. The exported payload includes per-stage phase timings (DNS / Connect / TLS / TTFB), status codes, response times, and any state-segment events (maintenance start/end, disabled start/end) that fell inside the range.

Most "real-time" features run a 30-second polled check and then auto-refresh a dashboard every 30–60 seconds. That's still 30–60 seconds of UI lag on top of detection lag. Exit1's Live page streams the probe payload itself — about 30 bytes on the wire — so the only lag is the network hop from Frankfurt or Boston to your browser. The chart, the phase breakdown, and the table all update in the same frame.

Free users see a blurred preview of the Live page with an upgrade overlay. Streaming is available from Nano upward. All paid tiers stream with no rate-limit on the WebSocket transport.

No. The wire format is roughly 30 bytes per probe. A check running every 15 seconds (Agency floor) is about 7 KB/hour per check — small enough to leave open in a background tab indefinitely. A 30-second app-level keepalive plus protocol-level ping/pong keep the socket honest without adding meaningful overhead.

Live Checks streams from Nano upward

Free shows a blurred preview with an upgrade overlay. Nano ($9/mo) unlocks the Live page on every check with no rate limits on the WebSocket. Pro adds 30-second intervals and the Public API; Agency drops to 15 seconds.