Two lanes, one connection.
Presence rides unreliable datagrams — latest-wins, droppable, ~20 Hz. Events ride a reliable, ordered stream. A WebSocket has one lane, so it head-of-line-blocks under loss.
Join a room from the browser with @silt/client — no QUIC, certs, or routing to set up. Two lanes over one WebTransport connection: presence (unreliable, ~20 Hz) and events (reliable, ordered). Rooms scale to zero: $0 idle, ~70 ms cold wake.
Silt runs the transport, routing, and room lifecycle. Here is the path an inbound packet takes, from the browser to the room VM.
joinRoom() opens one WebTransport (QUIC) connection to a room URL. WebTransport reached browser Baseline in March 2026, including iOS. No socket fallback, no cert setup.
The edge reads each inbound QUIC packet's Connection-ID and forwards it across the netns boundary to the microVM running that room. Two clients on the same URL reach the same VM. Proven live.
An idle room has no running VM. The first packet restores its Firecracker µVM in ~70ms — inside the QUIC handshake's ~1s retransmit window (RFC 9002), so the client's connect isn't delayed.
presence rides unreliable datagrams (latest-wins, ~20Hz); events ride a reliable, ordered stream. A WebSocket has one lane and head-of-line-blocks under loss.
No QUIC handshake, no cert pinning, no server to deploy. Join a room by URL, set your presence state, listen for everyone else's. The two lanes ride one WebTransport connection. This is the client API shape — point it at your own relay to run it.
Presence rooms are inearly access — the sample above illustrates the API; it isn't a live room you can join today.
// 1. join a room by URL — one WebTransport connection
import { joinRoom } from "@silt/client";
const room = await joinRoom("https://your-relay.example/room/lobby", { id });
// 2. others' positions stream in on the datagram lane
room.on("presence", (peerId, state) => draw(peerId, state));
// 3. broadcast yours — latest-wins, ~20Hz, droppable
room.presence.set({ x, y, heading });The transport a realtime multiplayer game needs: an unreliable presence lane, rooms that scale to zero at $0 idle, and a pure-relay default that needs no server code.
Presence rides unreliable datagrams — latest-wins, droppable, ~20 Hz. Events ride a reliable, ordered stream. A WebSocket has one lane, so it head-of-line-blocks under loss.
A room has no running VM until a client connects. No traffic, no VM, no charge.
The first packet restores the room VM inside the QUIC handshake's ~1s retransmit window, so the client's connect isn't delayed.
A relay room needs no server code — bring a client, the backend is optional.
WebTransport reached browser Baseline in March 2026, including iOS. Real UDP in the browser, no plugin to install.
A WebSocket has one lane and head-of-line-blocks under loss. HTTP serverless scales to zero but can't pass datagrams. A game-server fleet passes UDP but runs warm, and you operate it. Silt has both lanes, scales to zero, and runs the QUIC layer for you.
Silt is early and built in the open. The dataplane is proven on real hardware; compute-in-the-room is next. Join the waitlist for launch, or preorder founding-member access now.
We'll email you once, when early access opens. Meanwhile, play the demo.
Silt is early — this preorder funds the build. You get founding-member status, this $49 rate locked for future paid plans, and the first year of the hobby tier free when the hosted platform ships.
preorder — this funds the build, not a finished product