REALTIME INFRASTRUCTURE FOR DEVELOPERS
Build realtime apps
without building realtime infrastructure.
Messaging, presence, shared state and WebRTC through one SDK and a managed backend. Connect browsers, servers, AI agents and games in minutes.
What you can build
One platform. Many realtime experiences.
Every card opens a working example built on the same SDK.
Chat
Channels, presence and room sharing, encrypted by the channel password.
Open demo → AgentsAI agents
A Python agent and a browser on one channel, streaming both ways.
See how ↓ GamesMultiplayer games
Host-authoritative state, relayed or peer-to-peer.
Play air hockey → Shared stateCollaborative docs
A document several people edit at once, synced to every screen.
Open demo → Shared stateWhiteboards
Every stroke on every screen, saved for whoever joins later.
Open demo → EventsLive polls & dashboards
Votes and results that update the moment they change.
Open demo → Remote controlShared terminal
A real terminal in the browser; others watch, or type once you allow it.
Open demo → WebRTCVideo & audio calls
Signaling and TURN handled; media flows peer-to-peer.
Open Room → PresencePresence
Who is here, who just left, and who is hosting.
Open demo → HistoryReplay & history
Step back through every saved state of a session.
Open demo →Why not build it yourself?
You could. Here is what you would be building.
Messaging Platform gives you these as one SDK and a managed backend, so you spend the time on your application.
Without Messaging Platform
- A WebSocket service, with a polling fallback for networks that block it
- Authentication, API keys and short-lived browser credentials
- Reconnect and resume without losing or duplicating messages
- Channels, rooms and who may join them
- Persistence, ordering and replay from an offset
- Presence: joins, leaves, and noticing the ones that never say goodbye
- Shared state that late joiners can catch up on
- WebRTC signaling, plus STUN/TURN for the peers that cannot connect directly
- Rate limits, quotas and usage metering
- Client libraries for every language you ship
With Messaging Platform
const agent = new AgentConnection(); // messages and events agent.addEventListener('message', e => render(e.response.data)); // presence agent.addEventListener('agent-connect', e => showOnline(e.agentName)); agent.addEventListener('connect', () => { agent.sendMessage({ content: 'hello, room' }); // shared state that late joiners catch up on agent.storagePut({ storageKey: 'board', content: board }); }); agent.connect({ api, apiKey, channelName: 'room-123', channelPassword, agentName, autoReceive: true }); // peer-to-peer media and data over the same channel const rtc = new WebRtcHelper(agent);
Real SDK calls, not pseudocode. Run your first one →
The core idea
One channel carries everything.
Join a channel once. Messages, presence, state, history and WebRTC signaling all travel over it.
| Capability | JavaScript API | Also in |
|---|---|---|
| Messages & events | sendMessage({ content, to }) · 'message' event | Python, Java, C++ |
| History & replay | receive({ globalOffset, limit }) | Python, Java, C++ |
| Presence | getActiveAgents() · 'agent-connect' / 'agent-disconnect' | Python, Java, C++ (list) |
| Shared state | storagePut · storageGet · storageKeys | — |
| WebRTC data & media | new WebRtcHelper(agent): data channels, streams, TURN | Java (media), C++ (signaling) |
| Files | agent.fileSystem.put · download | — |
| End-to-end payload encryption | set a channelPassword | Python, Java |
| Browser credentials | your server calls POST /channels/api-access | any server |
Explore SDK demos
Public examplesWorking examples. Real screenshots. A useful place to begin.
Built with the platform
AppsExperiences you can open and use today.
No matches yet
Try another name or reset the filters to explore the collection.
Realtime infrastructure for AI agents
Put your agent on the same channel as your users.
Bring your own model. Messaging Platform is the realtime layer around it: the browser, the agent and your backend talk over one channel, with no polling endpoints and no WebSocket server of your own.
What it is for
- Streaming an agent's answer to the browser as it is generated
- Human approval: the agent asks, a person approves, the agent continues
- Tool progress and status events while long work runs
- Several agents, and several people, in one room
- A Python agent and a Java service exchanging work without a queue to run
An agent in a few lines of Python
agent = AgentConnection.with_api_key(
API, os.environ["MESSAGING_PLATFORM_API_KEY"])
agent.connect("support-room", ROOM_PASSWORD, "assistant")
class Assistant(AgentConnectionEventHandler):
def on_message_events(self, events):
for e in events:
if e.get("from") == "assistant":
continue # skip our own replies
if e.get("type") == "chat-text":
reply = answer(e.get("content")) # your model
agent.send_message(reply)
agent.receive_async(Assistant())
Messaging Platform is not a model provider; it is the channel your model talks through.
Try it now
From API key to two clients talking in five minutes.
- Sign inWith Google, in the developer portal.
- Get a keyShown once; keep it on your server.
- InstallScript tag, pip, Gradle or CMake.
- Join a channelCreated on first use.
- Send & receiveRun it twice and watch them talk.
Pricing
Start free. Upgrade when your application grows.
Everything is free during the public beta, with no credit card. Paid plans for production apps, teams and dedicated deployments are planned and priced in the open.
Public beta. APIs may still change and there is no uptime guarantee yet. Build and test freely; talk to us before putting critical production traffic on it.
Go from a working example to your first integration.