Skip to content

Getting Started

This walks you from nothing to a working Teams voice call with your OpenClaw agent.

  • An OpenClaw install, host >= 2026.6.10. Follow docs.openclaw.ai.
  • Microsoft Teams set up as an OpenClaw channel (the chat channel). This plugin adds voice/video on top of it. See the OpenClaw Teams channel docs.
  • A StandIn connection. The sandbox is free and needs no Teams bot of your own - perfect for a first call. See Connecting to StandIn.
  • For realtime mode, a realtime voice provider key (OpenAI or Azure OpenAI). For streaming mode, your OpenClaw-configured STT/TTS/agent is enough.

The one-line installer detects your OpenClaw install and walks you through the config (mode, shared secret, provider key), then prints next steps:

Terminal window
curl -fsSL https://standin.komaa.com/install.sh | bash

Prefer to do it by hand?

Terminal window
openclaw plugins install npm:@komaa/openclaw-msteams-bridge
openclaw gateway restart

It is also on ClawHub: openclaw plugins install clawhub:@komaa/openclaw-msteams-bridge (OpenClaw falls back to npm automatically). The package ships prebuilt (v0.1.10+) - no build step either way.

The sandbox is the fastest path to a first call and needs no Azure/Teams bot of your own:

  1. Open standin.komaa.com/sandbox and follow it to generate a Teams meeting link. It gives you a shared secret for the session.
  2. Put that secret in your plugin config as sharedSecret (below).
  3. Join the meeting yourself; the shared StandIn bot joins and connects to your plugin.

Config lives under plugins.entries."msteams-voice".config. A minimal realtime setup:

{
"plugins": {
"entries": {
"msteams-voice": {
"config": {
"enabled": true,
"mode": "realtime",
"bindAddress": "0.0.0.0", // so the hosted bridge can reach the plugin
"port": 9442,
"sharedSecret": "<the secret from StandIn>",
"inboundPolicy": "open", // first-call testing; lock down after (see below)
"realtime": {
"provider": "openai",
"providers": { "openai": { "apiKey": "<key>", "model": "gpt-realtime" } }
}
}
}
}
}
}
  • bindAddress: "0.0.0.0" lets the hosted bridge connect (the default 127.0.0.1 only accepts local connections).
  • sharedSecret must match the value StandIn uses, or the handshake is rejected.
  • inboundPolicy must be set to receive calls at all: when it is unset, every inbound call is denied. open is fine for the first sandbox call.
  • Leave mode out to auto-select: realtime if a provider resolves, otherwise streaming.

See the full Configuration Reference for every option, and Realtime & Streaming Modes for provider setup.

Restart the gateway so the config takes effect:

Terminal window
openclaw gateway restart

Then place (or join) the Teams call. You should hear the agent, see its avatar, and - if you turn on your camera or share your screen - it can see you too.