Realtime · WS

Live traffic, the instant it happens

Subscribe to the same realtime streams that power the dashboard feed — captured requests, device + settings changes, and control events — over Supabase Realtime. No polling.

Realtime
ws:workspace LIVE · connected
nowGETapi.example.com/v1/feed
0.4sPOSTevents.example.com/track
0.9sGETcdn.example.com/app.js
1.6sPOSTrt.example.com/subscribe
2.1sGETapi.example.com/v1/me
supabase-js — subscribe to the firehose
ts
import { createClient } from "@supabase/supabase-js";

const supabase = createClient("https://api.busymate.net", PUBLISHABLE_KEY, {
  global: { headers: { Authorization: `Bearer ${oauthToken}` } },
});

supabase
  .channel("ws:<workspace_id>")
  .on("broadcast", { event: "entry" }, ({ payload }) => {
    console.log("new request", payload.method, payload.url, payload.status);
  })
  .subscribe();

Why Realtime

Build on the live feed

The dashboard is push-driven end to end. The same channels are open to your own code — react to traffic and state the moment it changes.

The entries firehose

Every captured request/response is broadcast on your workspace channel (ws:<workspace_id>) the instant it lands — the dashboard feed is just a subscriber, and so can your app be.

Table-level changes

Subscribe to postgres_changes for devices, settings, service groups, and tags to react to fan-out the moment it happens — no diffing, no refetch loops.

One token, every channel

Authenticate Realtime with the same OAuth token as REST and MCP; channels are RLS-scoped to your role, so you only ever receive what you're allowed to see.

Wire up the live stream

See the Realtime channels and payload shapes in the docs, then subscribe from your app or the in-dashboard WS explorer.