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

# Modalities

> The input and output channels your agent can work with: speech and audio, text, vision, and avatars.

A **modality** is a channel your agent uses to perceive or respond. Zero Runtime agents are
voice-first, but the same pipeline can take text in, see video, and render a visual avatar,
often at the same time. Pick the modalities your experience needs; the pipeline wires them in.

<CardGroup cols={2}>
  <Card title="Speech & Audio" icon="waveform" href="/build/modalities/speech-and-audio/overview">
    Voice in, voice out, plus background audio and TTS caching.
  </Card>

  <Card title="Text" icon="keyboard" href="/build/modalities/text/overview">
    Text input and output for chatbots, omnichannel, and debugging.
  </Card>

  <Card title="Vision" icon="eye" href="/build/modalities/vision/overview">
    Let the agent see: send camera or screen frames to the model.
  </Card>

  <Card title="Avatars" icon="user" href="/build/modalities/avatars/overview">
    Give the agent a real-time visual face.
  </Card>
</CardGroup>

## How modalities map to the pipeline

Modalities are selected by the components you pass to the [`Pipeline`](/build/configure-a-pipeline/overview)
and by per-session flags on `zrt.serve(...)` or `zrt.Room(...)`:

| Modality         | Turned on by                                                                        |
| :--------------- | :---------------------------------------------------------------------------------- |
| Speech & audio   | `stt` + `tts` (or a realtime model), the default voice loop                         |
| Text             | Sending text with `pipeline.process_text(...)`; LLM-only or LLM+TTS pipelines       |
| Vision           | `zrt.serve(vision=True)` (or `zrt.Room(vision=True)`) + `agent.capture_frames(...)` |
| Avatars          | `Pipeline(avatar=...)`                                                              |
| Background audio | `zrt.serve(background_audio=True)` (or `zrt.Room(background_audio=True)`)           |

Modalities compose: a pipeline can run voice, vision, and an avatar together.

## References

<Tabs>
  <Tab title="Python">
    #### Examples

    <CardGroup cols={2}>
      <Card title="Multimodal Agent" icon="github" href="https://github.com/ZeroRuntimeAI/zrt-python-sdk-examples/blob/main/features/vision.py">
        Combine speech, text and vision in one agent.
      </Card>

      <Card title="Cascade Basic" icon="github" href="https://github.com/ZeroRuntimeAI/zrt-python-sdk-examples/blob/main/features/basic_cascade.py">
        Voice agent built from a cascade pipeline.
      </Card>

      <Card title="Realtime Basic" icon="github" href="https://github.com/ZeroRuntimeAI/zrt-python-sdk-examples/blob/main/features/realtime.py">
        Speech-to-speech realtime agent.
      </Card>
    </CardGroup>

    #### SDK Reference

    <CardGroup cols={2}>
      <Card title="Pipeline" icon="book" href="/api-reference/python/core/pipeline">
        `Pipeline` in the Python API reference.
      </Card>
    </CardGroup>
  </Tab>
</Tabs>
