@komaa/openclaw-msteams-bridge is a self-contained Teams CVI plugin for OpenClaw. It depends only on the
published openclaw plugin-sdk + api.runtime - no fork, no vendored runtime.
This adds voice/video (CVI) on top of OpenClaw’s existing
Microsoft Teams chat channel - run both for chat + calls.
Requirements
- An OpenClaw install - host ≥
2026.6.9. - A StandIn subscription (standin.komaa.com, free package) - the hosted media bridge that joins the Teams call and connects to this plugin. See Architecture.
- Realtime mode: a realtime voice provider + key. Streaming mode: your openclaw-configured STT / TTS / agent (no realtime key needed).
Install
Also on ClawHub:
openclaw plugins install clawhub:@komaa/openclaw-msteams-bridge - OpenClaw falls back to npm
automatically if the ClawHub fetch fails. See the
plugin README.Verify
Once installed, enable it in your config (plugins.entries."msteams-voice".config.enabled: true) and
start the gateway:
ws://<host>:9442/voice/msteams/stream).
Expose the WebSocket (Agent voice URL)
StandIn connects to your plugin from the internet, so port9442 must be reachable - a public
host, or a tunnel. With Tailscale Funnel, put voice on the 8443 slot (this is what the installer
does, and it keeps the 443 slot free for the Teams chat webhook):
sharedSecret) in the
StandIn sandbox or on your identity in the
dashboard, then place a Teams call to your bot. Include the
port - a bare host means the 443 slot, which is normally your chat webhook, not voice.
Funnel serves up to 3 external ports (443, 8443, 10000). The usual layout on one machine:
443 -> 3978 (Teams chat webhook), 8443 -> 9442 (OpenClaw voice). Running the Hermes
plugin too? Put it on the remaining slot:
tailscale funnel --bg --https=10000 8443 →
wss://<machine>.<tailnet>.ts.net:10000/voice/msteams/stream, and register each runtime as its own
agent with its own secret.Next: the full configuration reference for realtime, streaming, outbound,
and security keys.