Demos
developer platform · physical AIA session is a graph. Cameras and robots join, models from a catalog are attached to their video while it runs, and every result is a track on the same clock as the frames. Nothing is deployed in between. These pages are written against the real SDK.
import * as rgb from '@rgb-live/sdk';
const client = rgb.client({ apiKey: KEY, origin: ORIGIN });
const session = await client.sessions.create({ name: 'detect-demo' });
const cam = await session.join({ as: 'camera', id: 'cam0', publish: ['video'] });
const objects = await session.attach('sam3-detector-v1', { to: 'cam0', as: 'objects', params: { prompts: ['person'] } });
const alerts = await session.attach('qwen-monitor-v1', { to: 'cam0', as: 'alerts', params: { rules: ['a fire broke out'] } });
objects.on('detections', drawBoxes);
alerts.on('event', async (e) => {
const clip = await cam.record({ from: e.ts - 5, to: e.ts + 10 }); // the stream is already buffered: cut around the event
slack.post(`${e.rule}: ${e.reason} ${clip.url}`);
});
Open-vocabulary detection
Type what to look for. Boxes and track ids come back as data on a separate track, drawn by the page.
Natural-language alerts
Rules in plain language. A detector gates every frame; a VLM confirms and explains before anything is raised.
Pose and depth
Attach body pose and a depth model to your webcam; each lands on the node that serves it. Pose comes back as JSON keypoints, depth as a second video track.
Fleet and recordings
Every node, what it serves, its slots and health; every recording made from a session, playable from its CDN URL.
pages take ?session=…&cam=… · the API behind them: llms.txt