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

# Teams Voice Plugin (StandIn)

> Turn a Microsoft Teams call into a two-way video conversation with your AI agent - it sees, converses, and appears as a lip-synced avatar.

**Teams Voice Plugin (StandIn)** gives your AI agent a **Conversational Video Interface (CVI)** inside
Microsoft Teams: it answers and places calls, **sees** the caller's camera and screen-share,
**converses** in real time, and **appears** as a lip-synced animated avatar - a genuine *stand-in* that
joins 1:1 and group meetings, speaks only when addressed, and handles Teams chat. All over
recording-gated, allowlisted, HMAC-authenticated transport.

It ships as **seven backends** - two plugins that drop into an agent framework you already run, and
five standalone bridges that connect a hosted, room-based, or speech-to-speech agent platform.
Pick the one that matches your stack:

<CardGroup cols={2}>
  <Card title="OpenClaw plugin" icon="npm" href="/openclaw/installation">
    [`@komaa/openclaw-msteams-bridge`](https://www.npmjs.com/package/@komaa/openclaw-msteams-bridge) - TypeScript plugin for **OpenClaw**, via `openclaw plugins install`.
  </Card>

  <Card title="Hermes plugin" icon="python" href="/hermes/installation">
    [`hermes-msteams-bridge`](https://pypi.org/project/hermes-msteams-bridge/) - Python plugin for **Hermes Agent**, via `pip` / `uv`.
  </Card>

  <Card title="ElevenLabs bridge" icon="waveform-lines" href="/elevenlabs/installation">
    Put a hosted **ElevenLabs agent** on Teams calls. Node
    [`@komaa/elevenlabs-msteams-bridge`](https://www.npmjs.com/package/@komaa/elevenlabs-msteams-bridge)
    or Python [`elevenlabs-msteams-bridge`](https://pypi.org/project/elevenlabs-msteams-bridge/).
  </Card>

  <Card title="LiveKit bridge" icon="tower-broadcast" href="/livekit/installation">
    Dispatch any **LiveKit agent** (incl. avatar agents) into Teams calls. Node
    [`@komaa/livekit-msteams-bridge`](https://www.npmjs.com/package/@komaa/livekit-msteams-bridge)
    or Python [`livekit-msteams-bridge`](https://pypi.org/project/livekit-msteams-bridge/).
  </Card>

  <Card title="OpenAI bridge" icon="bolt" href="/openai/installation">
    Put an **OpenAI Realtime agent** (`gpt-realtime`, speech-to-speech) on Teams calls, with
    extensible tools and MCP. Node
    [`@komaa/openai-msteams-bridge`](https://www.npmjs.com/package/@komaa/openai-msteams-bridge).
  </Card>

  <Card title="Deepgram bridge" icon="microphone-lines" href="/deepgram/installation">
    Put a **Deepgram Voice Agent** (Nova STT + LLM + Aura TTS) on Teams calls, copy-only at 16 kHz.
    Node [`@komaa/deepgram-msteams-bridge`](https://www.npmjs.com/package/@komaa/deepgram-msteams-bridge)
    or Python [`deepgram-msteams-bridge`](https://pypi.org/project/deepgram-msteams-bridge/).
  </Card>

  <Card title="Cartesia bridge" icon="phone-volume" href="/cartesia/installation">
    Put a **Cartesia Line agent** (your agent code on Cartesia's platform) on Teams calls, verbatim
    at 16 kHz. Node [`@komaa/cartesia-msteams-bridge`](https://www.npmjs.com/package/@komaa/cartesia-msteams-bridge)
    or Python [`cartesia-msteams-bridge`](https://pypi.org/project/cartesia-msteams-bridge/).
  </Card>
</CardGroup>

## The three CVI pillars

A Teams call becomes a true two-way video conversation: the agent watches what you show, talks with
you in real time, and appears as an animated face.

| Pillar                               | Meaning                  | What you get                                                                                                                                                                                                                            |
| ------------------------------------ | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Perception** - *the agent sees*    | inbound video vision     | camera + screen-share (VBSS) frames; `look_at_screen` on demand, auto-attach per turn (streaming), and **continuous ambient vision** (realtime); per-participant attribution in meetings; per-call vision spend cap                     |
| **Dialogue** - *the agent converses* | speech, both ways        | **realtime speech-to-speech** *or* streaming **STT → agent → TTS**; barge-in + deterministic verbal interrupts; group "speak only when addressed" gate; DTMF/IVR; multilingual (configurable `languages` list); roster greeting by name |
| **Rendering** - *the agent is seen*  | a lip-synced avatar tile | **expression cues** (happy/sad/surprised), **viseme lip-sync** (`speech.marks`), and **`show_to_caller`** image overlays - sent by the plugin, drawn by the hosted StandIn bridge                                                       |

## Capabilities

* 🎙️ **Two dialogue modes** - realtime speech-to-speech (OpenAI / Azure) or streaming STT→agent→TTS (any provider). [Modes →](/concepts/modes)
* 👁️ **Vision** - camera + screen-share, continuous ambient frames, retroactive keyframe history, budget-capped.
* 🧑‍🤝‍🧑 **Group/meeting etiquette** - silent until addressed by a wake phrase, with a follow-up window; 1:1 always answers; per-speaker attribution.
* 📞 **Outbound "call me back"** - speaks the result then hangs up; voicemail fallback when unanswered.
* 📝 **Meeting recap & minutes** - key points / decisions / action items, plus an on-demand `.docx` with per-person attribution.
* 🪄 **Avatar driver cues** - expression, viseme lip-sync, picture-in-picture image sharing.
* 🛡️ **Chat governance** - "Ask about this" message action, voice-message transcription, audit-log mirror, outbound DLP redaction.
* 🔐 **Secure transport** - HMAC handshake (replay-proof), caller allowlist (closed by default), recording-status gate before any media is processed.

## How it fits together

The Teams call media and avatar rendering are handled by **StandIn**, a hosted service at
[standin.komaa.com](https://standin.komaa.com) - create an account (a paid plan, the free BYO-bot
identity, or the no-Azure sandbox - see
[Free identity vs Sandbox](/quickstart#free-identity-vs-sandbox-which-am-i)), connect your Teams
bot, and StandIn's managed bridge connects to your plugin. The plugin is the cross-platform **brain**

* dialogue, perception, group logic, governance, and the avatar cues. No media infrastructure for you
  to run. [Architecture →](/concepts/architecture)

## Related

This plugin layers **voice/video (CVI)** on top of each runtime's existing **Teams chat** channel:

<CardGroup cols={2}>
  <Card title="OpenClaw Teams channel" icon="comment" href="https://docs.openclaw.ai/channels/msteams">
    The OpenClaw `msteams` chat channel docs.
  </Card>

  <Card title="Hermes Agent Teams" icon="comment" href="https://hermes-agent.nousresearch.com/docs/user-guide/messaging/teams">
    The Hermes Agent Teams messaging docs.
  </Card>
</CardGroup>

<CardGroup cols={3}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Install, configure, place a test call.
  </Card>

  <Card title="Modes" icon="shuffle" href="/concepts/modes">
    Realtime vs. streaming - when to use each.
  </Card>

  <Card title="Features" icon="stars" href="/concepts/features">
    Vision, group gating, outbound, recap, security.
  </Card>
</CardGroup>
