Meeting Plugins for Google Meet, Microsoft Teams, and Zoom
Learn how to choose and configure OpenClaw's meeting plugins for Google Meet, Microsoft Teams, and Zoom. Covers installation, participation modes, and platform-specific features.
Read this when
- You want an OpenClaw agent to join a video meeting
- You are choosing between the Google Meet, Microsoft Teams meetings, and Zoom meetings plugins
- You need the shared Chrome, virtual-audio, or meeting-mode setup
OpenClaw ships distinct plugins for Google Meet, Microsoft Teams meetings, and Zoom. Each of the three can join via Chrome, supports identical participation modes, and can execute Chrome on either the Gateway host or a paired node. What sets them apart are their platform URLs, installation approach, and platform-specific features.
These plugins handle meeting participation. They sit apart from messaging channels like the Microsoft Teams channel and the Voice call plugin.
Choose a plugin
| Platform | Plugin | Accepted meeting links | Installation | Participation paths | Platform-specific capabilities |
|---|---|---|---|---|---|
| Google Meet | google-meet | meet.google.com/... | Install from npm or ClawHub; enabled by default | Local Chrome, Chrome on a paired node, or Twilio dial-in | Can create meetings through the Meet API or a signed-in browser; can read supported Meet artifacts with OAuth |
| Microsoft Teams | teams-meetings | Work links under teams.microsoft.com/l/meetup-join/... and consumer links under teams.live.com/meet/... | Install from npm or ClawHub; enabled by default | Local Chrome or Chrome on a paired node | Guest join for work and consumer meetings |
| Zoom | zoom-meetings | zoom.us/j/... and account subdomains such as example.zoom.us/j/... | Install from npm or ClawHub; enabled by default | Local Chrome or Chrome on a paired node | Guest join through the Zoom Web App |
Opt for Google Meet when your needs include meeting creation, Google API artifacts, or a Twilio phone route. Teams or Zoom suit direct browser guest participation on those platforms. Neither the Teams nor the Zoom plugin creates meetings, dials in, invokes the vendor API, or records audio/video.
Choose a mode
All three plugins share these modes:
| Mode | Behavior | Audio requirements |
|---|---|---|
agent | Realtime transcription goes to the configured OpenClaw agent; regular OpenClaw TTS speaks the reply. | Chrome talk-back requires a supported virtual-audio backend. |
bidi | A realtime voice model listens and replies directly. | Chrome talk-back requires a supported virtual-audio backend. |
transcribe | Joins observe-only and exposes a bounded live-caption transcript when the platform provides captions. | No virtual-audio bridge. |
Pick transcribe when the agent requires only meeting text. Go with agent for standard OpenClaw reasoning and tools. Choose bidi when low-latency direct voice outweighs routing each turn through the regular agent.
The bounded live transcript is exclusive to transcribe mode. Across all three modes, browser joins also save completed caption rows and a derived summary to the shared state database. Leaving the meeting finalizes visible captions and writes the summary; use openclaw transcripts to list, inspect, or export it. This durable notes path leaves the live agent-consult transcript untouched and creates no audio/video recording.
Automatic notes come enabled by default. Set transcripts.enabled: false to turn off durable notes globally. An explicitly selected transcribe session keeps its bounded live-caption tail without writing durable rows. Caption availability still hinges on the meeting platform, account, language, and host policy.
Configure Teams or Zoom
The Teams and Zoom plugins adopt the same configuration layout for their shared meeting runtime. Add an entry only when overriding a default is necessary. This example picks the normal agent path, alters the guest display name, and runs Chrome on a paired node:
{
plugins: {
entries: {
"teams-meetings": {
config: {
defaultMode: "agent",
chrome: { guestName: "OpenClaw Agent" },
chromeNode: { node: "meeting-node" },
},
},
},
},
}
Use "zoom-meetings" as the entry id for Zoom. Leave out chromeNode to run Chrome on the Gateway host.
| Setting | Purpose |
|---|---|
defaultMode | agent (default), bidi, or transcribe |
chrome.guestName | Guest display name entered on the platform prejoin page |
chrome.browserProfile | OpenClaw browser profile used for the meeting |
chrome.audioBackend | auto (default), blackhole-2ch, or pipewire-pulse |
chromeNode.node | Paired node id, name, or IP that owns Chrome and the native virtual-audio backend |
realtime.transcriptionProvider | Realtime transcription provider used by agent mode |
realtime.voiceProvider | Realtime voice provider used by bidi mode |
realtime.model | Optional realtime model override |
realtime.agentId | Agent consulted in agent mode |
realtime.toolPolicy | safe-read-only, owner, or none |
Prepare Chrome and audio
Chrome may run on the Gateway host or a paired node. A remote Chrome node must permit browser.proxy plus the platform command:
| Plugin | Node command |
|---|---|
| Google Meet | googlemeet.chrome |
| Microsoft Teams | teamsmeetings.chrome |
| Zoom | zoommeetings.chrome |
For agent or bidi mode through Chrome, install the native audio dependencies on the host running Chrome. On macOS:
brew install blackhole-2ch sox
sudo reboot
system_profiler SPAudioDataType | grep -i BlackHole
command -v sox
On a Linux desktop running PipeWire-Pulse, grab the PulseAudio command-line tools. In the desktop user's audio session, OpenClaw creates a OpenClaw Meeting Audio null sink along with a matching source, and reuses them:
# Debian/Ubuntu
sudo apt install pipewire-audio pulseaudio-utils
systemctl --user --now enable pipewire pipewire-pulse wireplumber
pactl info
command -v pactl pacat parec
Launch the Gateway or a paired node under the same desktop user account that runs Chrome. A service started as root, or one running headless without that user's XDG_RUNTIME_DIR, will be unable to reach the PipeWire-Pulse socket, and setup fails with an error that explains what went wrong.
When Chrome operates on a paired node, the Gateway host still holds the OpenClaw agent and model credentials. For agent mode, set up a realtime transcription provider plus OpenClaw TTS; for bidi mode, configure a realtime voice provider instead. Provider and audio-command details are covered in the platform guides.
Install or disable plugins
Install whichever meeting plugins you need. Once installed, every one of them is enabled by default:
openclaw plugins install npm:@openclaw/google-meet
openclaw plugins install @openclaw/teams-meetings
openclaw plugins install @openclaw/zoom-meetings
openclaw gateway restart
Turn off any meeting plugin you are not using:
openclaw plugins disable google-meet
openclaw plugins disable teams-meetings
openclaw plugins disable zoom-meetings
If your plugin-management path does not restart the Gateway automatically, restart it yourself. After that, run the platform setup check before you join.
Verify and join
| Platform | Setup check | Join command |
|---|---|---|
| Google Meet | openclaw googlemeet setup | openclaw googlemeet join 'https://meet.google.com/abc-defg-hij' |
| Microsoft Teams | openclaw teamsmeetings setup | openclaw teamsmeetings join 'https://teams.microsoft.com/l/meetup-join/...' |
| Zoom | openclaw zoommeetings setup | openclaw zoommeetings join 'https://zoom.us/j/1234567890' |
A failed setup check should be treated as a blocker for that transport and mode. For an observe-only smoke test, pick transcribe mode and verify that status shows an in-call session before you expect any caption text.
For talk-back smoke tests, verified speech means more than just bytes that the playback command accepted. The shared command-pair bridge matches a bounded waveform fingerprint from the latest output generation against audio returning on the selected virtual microphone capture path; Google Meet, Teams, and Zoom will not report speechOutputVerified: true if only the output-byte counter advances or unrelated participant audio shows up.
Handle platform policy prompts
Browser automation handles the standard controls: guest name, prejoin camera and microphone, join, in-call, and leave. It does not override platform or organizer policy.
- Google Meet can require Google sign-in, host admission, or a browser permission decision.
- Microsoft Teams can require tenant sign-in, email verification, or organizer admission.
- Zoom can require authentication, email verification, a passcode, CAPTCHA completion, or host admission; an account may also disable browser join.
If a join or status result includes manualAction, finish the step it reports in the same OpenClaw Chrome profile before trying again. Opening more tabs repeatedly will not clear an account, tenant, lobby, or CAPTCHA gate.
Join only meetings where the operator is authorized to add an agent. When local policy or consent rules demand it, let participants know about automated participation, transcription, or synthesized speech.
Discord voice chat
Discord voice channels give you native, audio-only realtime conversation without browser meeting automation. OpenClaw can enter a voice channel, listen, send turns through an OpenClaw agent or realtime voice model, and reply with speech. It never sends or receives camera video or screen sharing, even if people in the same Discord channel are using video, so Discord voice counts as a related live-conversation surface, not a fourth browser meeting plugin.