# Avatar dock

Each slide can place the agent's avatar in one of three positions, with optional per-slide overrides for shape and visibility.

## Three modes

**Side dock (default):**

Avatar fills a card to the left or right of the content. Best for slides where the agent is the focus.

```json title="side-dock.json"
{
  "avatar": { "dock": "side-left" }
}
```

**PIP (picture-in-picture):**

Avatar floats as a 1:1 bubble inside the content card. Best for slides where the visitor needs to focus on the slide content.

```json title="pip.json"
{
  "avatar": {
    "dock": "inside",
    "pipShape": "circle",
    "pipCorner": "top-right"
  }
}
```

**Hidden:**

Avatar wrapper is hidden via `display: none`, but the LiveKit session inside stays mounted so audio keeps flowing. Use for transitional slides where you want the agent's voice without their face.

```json title="hidden.json"
{
  "avatar": { "visible": false }
}
```

## Deck-wide vs per-slide

You can set a deck-wide default in the deck settings, then override on individual slides:

1. **Set deck default**

   In the deck settings, choose `agentPosition` = `left` / `right` / `pip`. This applies to every slide unless overridden.

2. **Override per slide**

   On any slide's avatar settings panel, pick a different `dock`. The per-slide setting wins.

## Mobile behavior

On viewports under ~768px, the avatar always renders as PIP regardless of the configured dock — there's not enough room for a side dock to read well. Your dock choice still applies on desktop.

> [!TIP]
> The 5-slide live-layer tour at `/a/live-layer-tour` demonstrates each mode. Slide 2 uses `side-right`, slide 3 uses `inside` (PIP top-right circle), slides 1/4/5 use `side-left`.

## Schema reference

<!-- omitted: ParamsTable -->
