> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reactor.inc/llms.txt
> Use this file to discover all available pages before exploring further.

# Models

> How models on Reactor work and how to drive them from your app

A **Reactor model** is a real-time generative model (typically a video or world model). You connect to it over a session, steer it with commands, and receive streamed output.

Every model on Reactor shares the same wire protocol:

* You open a **session** and `connect()` over WebRTC
* You send **commands** to control what the model does (e.g. `set_prompt`, `send_image`, `move`)
* The model emits **media tracks** (video, audio) and **messages** (structured JSON events)
* You close the session with `disconnect()`

The [`Reactor`](/sdk-reference/reactor-class) base class implements this shared protocol. Sessions, auth, file uploads, tracks, and events work the same regardless of which model you're driving. A session can also be shared by multiple clients; see [Sessions](/concepts/sessions#multiple-connections-per-session).

What *does* differ is the schema: which commands a model accepts, what their parameters mean, what events it emits, and any model-specific state rules.

## Per-model command and event reference

Each model publishes its own command and event schema. For the full reference of a specific model (every command, every parameter, every event), see the [Model API Reference](/model-api-reference/overview).

## Driving a model: typed SDK vs base class

Two ways to talk to a model:

* **A typed SDK** for the model (e.g. `HeliosModel`): adds named methods that mirror the model's schema. Recommended for production
* **The base [`Reactor`](/sdk-reference/reactor-class) class**: generic, model-agnostic, sends raw JSON. Useful when no typed SDK exists yet, when prototyping, or when you want one client for several models

Both paths use the same wire protocol. See the [SDK Reference overview](/sdk-reference/using-the-sdk) for when each fits.
