Realtime · WS

Build on the exact feed the dashboard uses

대시보드가 쓰는 바로 그 라이브 이벤트 — 발생하는 순간 푸시됩니다.

A single realtime channel spine pulses INSERT and UPDATE events left to right; branch lines deliver the same event tick at the same instant to three subscribers — a monitoring chart, a bot and an alert bell — under channel chips named ws:workspace, devices and audit, over the wss endpoint address. ws:workspace devices audit INSERT UPDATE INSERT wss://api.busymate.net/realtime/v1
supabase-js — 소방호스 구독
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();

왜 Realtime인가

Push, never poll

끝에서 끝까지 푸시 기반. 트래픽, 상태, 감사가 바뀌는 순간 여러분의 코드에서 구독하세요.

엔트리 소방호스

캐처된 모든 요청이 도착하는 순간 브로드캐스트됩니다 — 대시보드 자신이 구독하는 바로 그 채널에서. 여러분의 모니터는 팀이 보는 것을 같은 순간에 봅니다.

테이블 변경을 스트림으로

디바이스, 설정, 태그, 서비스 그룹, 공유 할 일 보드 — 모두 postgres_changes 이벤트로 전달됩니다. 데이터베이스에서 바뀌면 반드시 알게 됩니다. 타이머도, 새로고침 루프도 없습니다.

트래픽 그 이상

라이브 감사 로그, 메모리 임포트 진행 상황, 디바이스 제어 이벤트도 구독할 수 있습니다. 알림 봇, 월 대시보드, 플랫폼 자체에 반응하는 자동화를 만드세요.

문서에서 바로 구독

대시보드 내 WS 익스플로러는 여러분의 토큰으로 실제 채널에 참여하고 도착하는 이벤트를 보기 좋게 출력합니다. 코드 한 줄 쓰기 전에 피드를 구경하세요.

How it works

Subscribe once, stay current

Realtime-not-polling is a standing engineering rule here — every feature is push-driven end to end, and the dashboard itself never polls.

  1. 01

    Connect once

    One WebSocket to api.busymate.net's Realtime service, authenticated with the same OAuth token as REST and MCP.

  2. 02

    Join channels

    Subscribe to topics — a workspace firehose, a single device, fleet-wide status — each authorized by the same row-level security as the tables themselves.

  3. 03

    Events push to you

    Database triggers broadcast changes the instant rows land. No polling loop, no missed window between polls — the push IS the source of truth arriving.

  4. 04

    React — or publish back

    Feed alerting, wall dashboards and bots — or drive control flows the other way, like continuing a paused breakpoint over the proxy-control channel.

postgres_changes — table events
ts
// Raw table changes — the shared to-do board
supabase
  .channel("todos:all")
  .on(
    "postgres_changes",
    { event: "*", schema: "public", table: "todos" },
    (change) => console.log(change.eventType, change.new),
  )
  .subscribe();

The channels

A map of the live topics

The channels your code can join — the same canonical list the in-dashboard WS explorer documents and subscribes.

ws:<workspace_id>broadcast

The workspace entries firehose — every captured request from every device, the moment it lands. The exact channel the dashboard feed renders.

ws:<workspace_id>:<owner_user_id>broadcast

The same firehose narrowed to one owner's devices — what a non-operator account subscribes.

device:<uuid>broadcast

Per-device control plane: settings pushes, VPN and unpair commands, browser and farm command round-trips, live-activity messages.

devices:alldb

Device renames, pairing and status changes, fleet-wide — the reason device lists everywhere update without a refresh.

proxy-controlbroadcast

Dashboard ↔ proxy control flow: continue a request paused at a breakpoint, or resend a captured request.

settings:global · settings_device:all · settings_user:alldb

Settings pushes at every tier — capture engines refetch their effective settings the moment any layer changes.

service_groups:alldb

Service-group membership and rule changes, so grouped devices re-apply rules live.

breakpoint_events:alldb

Every request pausing and resuming at a breakpoint, as it happens — the read side of the continue flow.

audit:all · audit:<actor_uuid>db

The live audit trail — every action by every human and agent, fleet-wide for operators or scoped to your own events.

todos:allpostgres_changes

The shared to-do board as raw table-change events — the simplest channel to start with.

What teams build

React in real time

Alerting bots

Watch the firehose for error spikes on a production host and page your team the second they start — not on the next poll.

Wall dashboards

Render live traffic, device fleet state and the audit trail on a NOC screen — the same push the product dashboard consumes.

Reactive automation

React to a device going offline, a breakpoint pausing, or a settings change — then act back through MCP or the proxy-control channel.

One platform, five surfaces

Push is one of five surfaces

Every capability aligns across the dashboard, MCP, REST, WebSockets and BusyBro — a standing rule, checked on every ship. Read over REST, subscribe over WS, act over MCP: one identity, one permission model.

FAQ

Before you subscribe

What do I connect with?

supabase-js is the shortest path (it handles the Realtime protocol, auth and reconnection), but any client that speaks the Supabase Realtime protocol over WebSockets works. Authenticate with the same OAuth token as REST and MCP.

Broadcast vs postgres_changes — what's the difference?

Most channels are database-triggered broadcasts: a trigger fans a shaped payload to a named topic the instant a row lands — scalable and authorized per topic. A few simple tables (like the to-do board) stream raw postgres_changes events instead.

Can I publish, or only subscribe?

Both. Subscriptions cover the feeds; control flows publish back — the proxy-control channel carries breakpoint-continue and resend-request, and the confirm-gated MCP tools publish device commands on your behalf.

Will I see other people's traffic?

No — channel access is authorized by row-level security on the Realtime layer. Plain accounts get their own devices' feed; the fleet-wide firehose and audit stream require operator capabilities.

Why not just poll the REST API?

Realtime-not-polling is a standing engineering rule here: every feature is push-driven end to end, and the dashboard itself never polls. Push gives you lower latency, no missed events between polls, and no wasted queries.

Wire up the live stream

채널과 페이로드 형태는 문서에 — 아니면 대시보드 익스플로러에서 구독하세요.

Ask your mate