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

# Recall.ai (Meeting Bots)

> How Ospri Brain uses Recall.ai for meeting recording and transcription.

## Overview

Ospri Brain uses [Recall.ai](https://recall.ai) as the infrastructure for meeting bots. Recall.ai handles joining video calls, recording audio/video, and providing raw transcript data.

## How It Works

1. **Bot creation** — When a meeting is scheduled, Ospri creates a Recall.ai bot configured with the meeting link, bot name, and auto-leave settings
2. **Bot joins** — At the scheduled time, the bot joins the meeting like a regular participant
3. **Recording** — The bot captures audio (and optionally video) using separate audio streams for each participant
4. **Real-time events** — During the meeting, Recall sends real-time webhooks for transcript segments, participant joins/leaves, and chat messages
5. **Post-meeting** — After the meeting ends, the full recording and transcript are available for download

## Bot Configuration

Each bot is configured with:

| Setting                   | Value                                     |
| ------------------------- | ----------------------------------------- |
| **Bot name**              | Customizable per user                     |
| **Everyone left timeout** | 30 seconds                                |
| **No one joined timeout** | 5 minutes                                 |
| **Waiting room timeout**  | 10 minutes                                |
| **Silence detection**     | 2 minutes                                 |
| **Bot detection**         | 2 minutes                                 |
| **Diarization**           | Perfect (separate streams)                |
| **Transcript provider**   | Recall AI streaming (prioritize accuracy) |
| **Chat greeting**         | Automatic message on join                 |

## Calendar V2 Integration

Ospri uses Recall's Calendar V2 API for calendar-connected bot scheduling. Each user creates a separate Recall calendar with their Microsoft OAuth tokens, and bots are scheduled per-event with deduplication keys.

## Live desktop controls

The Brain desktop app controls the existing meeting bot; it does not record the
computer locally. While authenticated, the main process polls the device-JWT
meeting status endpoint. It stays hidden for merely scheduled bots and appears
when the bot begins joining the call. The local, always-on-top popup can:

* pause recording with Recall's `POST /bot/{id}/pause_recording/` API
* resume recording with `POST /bot/{id}/resume_recording/`
* stop the bot with `POST /bot/{id}/leave_call/`
* save a highlight for the previous 30 seconds

The popup never receives a Recall API key, bot credential, or upload token.
Control and highlight IPC calls do not accept a meeting ID; the main process
targets the earliest active meeting returned for the signed-in user. Highlight
timestamps and ownership are computed on the server.

## Bot API versus Desktop SDK

Recall's bot API and Desktop SDK are separate integration modes:

* **Bot API (current):** a Recall participant joins Zoom, Google Meet, or
  Microsoft Teams. This is the mode used by Brain's Otter/Fathom-style popup.
* **Desktop SDK (future, botless):** a native integration records a selected
  desktop window with `startRecording({ windowId, uploadToken })`,
  `pauseRecording({ windowId })`, `resumeRecording({ windowId })`, and
  `stopRecording({ windowId })`. It currently supports macOS on Apple Silicon
  and Windows.

The Desktop SDK is intentionally not packaged in the current Electron app.
Brain still ships a universal macOS binary, while the SDK requires a separate
native packaging and signing path. Moving to botless capture therefore remains
a dedicated follow-up rather than a dependency of the bot-control popup.

## Webhook Events

Ospri receives real-time webhook events from Recall:

| Event                             | Description                                        |
| --------------------------------- | -------------------------------------------------- |
| `bot.status_change`               | Bot status updates (joining, in\_call, done, etc.) |
| `bot.done`                        | Bot has finished recording                         |
| `recording.done`                  | Recording is ready for download                    |
| `transcript.data`                 | Real-time transcript segment                       |
| `participant_events.join`         | Someone joined the meeting                         |
| `participant_events.leave`        | Someone left the meeting                           |
| `participant_events.chat_message` | Chat message in the meeting                        |
| `calendar.sync_events`            | Calendar events synced                             |
| `calendar.update`                 | Calendar connection updated                        |

<Info>
  This is an internal integration — end users don't need to configure anything related to Recall.ai directly. The calendar connection and bot settings are managed through Ospri Brain's UI.
</Info>
