Messaging PlatformHub & developer playground
QuickstartPricingDocs ↗Start free

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.

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.

CapabilityJavaScript APIAlso in
Messages & eventssendMessage({ content, to }) · 'message' eventPython, Java, C++
History & replayreceive({ globalOffset, limit })Python, Java, C++
PresencegetActiveAgents() · 'agent-connect' / 'agent-disconnect'Python, Java, C++ (list)
Shared statestoragePut · storageGet · storageKeys—
WebRTC data & medianew WebRtcHelper(agent): data channels, streams, TURNJava (media), C++ (signaling)
Filesagent.fileSystem.put · download—
End-to-end payload encryptionset a channelPasswordPython, Java
Browser credentialsyour server calls POST /channels/api-accessany server

Explore SDK demos

Public examples

Working examples. Real screenshots. A useful place to begin.

Built with the platform

Apps

Experiences you can open and use today.

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.

Browser→Messaging Platform channel→Python AI agent→Your backend (Java)→Browser

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.

  1. Sign inWith Google, in the developer portal.
  2. Get a keyShown once; keep it on your server.
  3. InstallScript tag, pip, Gradle or CMake.
  4. Join a channelCreated on first use.
  5. 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.

Ready to make it your own?

Go from a working example to your first integration.

Opens the existing live experience in a new tab.