# Live stack runbook

## Objective

Bring up the current integrated stack for:

- Jetstream/stream.place-style chat intake
- Gemini Live response generation
- OpenVT avatar control
- OBS scene/text control

## Required environment

Set these before starting the live loop:

```bash
export GEMINI_API_KEY=...
export OBS_WS_URL=ws://127.0.0.1:4455
export OBS_SCENE_NAME="Your Scene"
export OBS_TEXT_INPUT_NAME="Your Text Source"
# optional
export OBS_WS_PASSWORD=...
```

## Required running services

1. OpenVT running with runtime control listener enabled
2. OBS running with obs-websocket enabled on port 4455

## Preflight check

```bash
bun run check:live-stack
```

Expected good state:

- `GEMINI_API_KEY: set`
- `OBS websocket: open`
- `OpenVT runtime control: open`

## Start the loop

```bash
./scripts/run-live-stack.sh
```

or:

```bash
bun run src/index.ts --live
```

## Current behavior

When chat arrives:

1. immediate OpenVT cues are sent:
   - `talk:start`
   - default `emotion:curious`
2. runtime generates a reply
3. reply text is sent to:
   - OpenVT text control
   - OBS text input (if configured)
4. remaining avatar actions are sent to OpenVT

## What is still manual

- actual OBS source/scene setup
- stream.place ingest configuration in OBS
- real Gemini credential provisioning

