Live video
Real-time calls, without running real-time infrastructure
Browsers encode with WebCodecs and send binary frames over one WebSocket. Synento relays them to everyone in the session and writes them to durable streams as they pass.
Live video
Camera, mic and screen
Publish any combination, audio-only included. Screen share works in both directions.
Automatic reconnection
A dropped connection resumes without a page reload, and fresh tokens are fetched as it does.
Up to 16 per room
Rooms hold up to 16 participants by default. A full room refuses new joins and never degrades calls already running.
Codec-agnostic relay
Frames are self-describing, and the server never parses a payload. That is why it doesn't need to scale like an SFU.
Chat alongside media
Messages travel with the session and are stored in its own durable stream, so they are part of the recording too.
Checked before joining
WebCodecs support is detected before a call starts, so nobody joins a call that can't work.
import { SynentoRoom } from '@synento/client'
const room = new SynentoRoom({
userId: 'alice',
// Called again on every reconnect, so tokens rotate on their own.
getToken: () =>
fetch('/api/synento', {
method: 'POST',
body: JSON.stringify({ sessionId, userId: 'alice' }),
}).then((res) => res.json()),
})
await room.connect()
const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true })
await room.publishCamera(stream)
// That's it. There is no "start recording" call.The honest trade-off
Latency is sub-second but higher than peer-to-peer WebRTC. If sub-200 ms is a hard requirement, a WebRTC platform is the better fit, and our comparisons say which one.
Keep exploring
Give your agent a video platform it can verify.
Sign up, point your agent at llms.txt, and have a recorded call running before lunch.