Learn · Start here

Core concepts

A linked map of the room model, client transport, shared context, and execution contracts.

A room connects people, application views, and background work through shared history. The objects below describe who can act, what they record, and how others receive it.

A room contains participant authority, channel definitions, an ordered log, current projections, and requested work. Two subscriptions select different facts from that shared room; they do not create separate logs.
A channel groups facts inside the room; a subscription is a consumer’s view.Open SVG ↗Excalidraw source ↓

Find the concept you need

Consider a support conversation: the customer sends a message, a specialist reads it, and an agent produces a shipment summary. They use the same room without needing the same view or permissions.

Room: shared history and state

A room groups the conversation's participants, topics, events, and current context. Its lifetime follows the product session. A customer disconnecting or closing a panel does not end the shared conversation.

Participant: identity with grants

A participant is the identity used to act in a room. Your backend maps an authenticated user or service to a participant and grants its operations. A specialist may read an internal note that the customer cannot see.

Channel: a topic, not a socket

A channel groups related events, such as chat, vision, or results. Split topics when readers or permissions differ. Channels share the room's history and connection; creating a topic does not create another transport.

Event: an immutable durable fact

An event records something that happened, with a type and payload. RMC assigns its identity, actor, and position in room history. A message correction is another fact; it does not rewrite the original message. Publishers use a stable publication ID to retry one send.

Subscription: an independent view

A subscription selects the events one consumer needs. The transcript reads messages; the task panel reads progress. Multiplexing carries both over one connection, with an independent cursor for each view's processed position.

State and artifacts: current values

Use a state document for a current value, such as the preferred language. Use an artifact for an identified result, such as the shipment report. Both are versioned so clients can detect conflicting updates.

An event explains how something changed. State or an artifact gives the current value without reconstructing every change.

Add shared context and requested work

A delegation requests a task and tracks its progress and result. A room agent reacts to selected events. A tool performs a named operation. Adapters connect these contracts to concrete implementations.

For the shipment summary, use a delegation when the customer requests it, or a room agent when selected messages should trigger it automatically. The work guide compares the choices.

Learn through one client loop

Run the quickstart, or follow the architecture walkthrough to see a message move from publication to storage, delivery, and background work.

Search the documentation

Type to search all guides.

Diagram

100%Open original ↗