Architecture

Layer map

Runtime

Owns scene rendering, input, camera, presence visualization, XR session lifecycle, media surfaces, and quality profiles.

Media plane

Owns voice, screen share, track lifecycle, and media transport.

State plane

Owns room state, participant presence, transforms, and room logic.

Control plane

Owns tenants, templates, rooms, asset metadata, links, and deployment metadata.

Asset pipeline

Owns import rules, validation, compression presets, and quality budgets.

Core flows

Join room

  1. User opens a room link.
  2. apps/runtime-web fetches room manifest from apps/api.
  3. Runtime requests state token and media token from apps/api.
  4. Runtime joins apps/room-state and LiveKit.
  5. Runtime renders the room using manifest-driven scene config.

Create room

  1. Admin opens apps/control-plane.
  2. Control plane creates tenant/room records through apps/api.
  3. Assets are registered and attached to template slots.
  4. API generates the manifest and room link.
  5. Runtime consumes the published room config without code changes.

Boundaries that must hold

Source: docs/architecture.md in vrata-labs/platform at revision 380b2e7ff1dd, license Apache-2.0. GitHub