A point is a player. A line is a message. A plane is a room. Three primitives, one small SDK — and the real-time backend underneath is ours to run, not yours.
Anonymous or named, a player joins with one call and gets a stable identity — and a colour — the instant they arrive. No auth server to stand up first.
const me = await plot.join()Send state between points at up to 30 Hz. Plot draws the line; you decide what travels along it — a position, a score, a chat string, an entire game state.
room.send({ x, y })A room is one Durable Object at the edge nearest its players. It holds the shared truth, stays consistent, and vanishes when the last point leaves.
await plot.open('lobby-1')This is the whole client. Points join the plane, lines carry their state, every other point sees it within a frame. Eleven lines, no backend of your own.
Every room runs on Cloudflare's edge, within roughly 50 ms of the people in it. You never choose a region or plan capacity. The plane forms where the points are and follows them.