Google Meet (plugin)
Google Meet participant support for OpenClaw. The plugin is explicit by design:- It only joins an explicit
https://meet.google.com/...URL. realtimevoice is the default mode.- Realtime voice can call back into the full OpenClaw agent when deeper reasoning or tools are needed.
- Auth starts as personal Google OAuth or an already signed-in Chrome profile.
- There is no automatic consent announcement.
- The default Chrome audio backend is
BlackHole 2ch. - Twilio accepts a dial-in number plus optional PIN or DTMF sequence.
- The CLI command is
googlemeet;meetis reserved for broader agent teleconference workflows.
Quick start
Install the local audio dependencies and make sure the realtime provider can use OpenAI:blackhole-2ch installs the BlackHole 2ch virtual audio device. Homebrew’s
installer requires a reboot before macOS exposes the device:
google_meet tool:
BlackHole 2ch for
the microphone/speaker path used by OpenClaw. For clean duplex audio, use
separate virtual devices or a Loopback-style graph; a single BlackHole device is
enough for a first smoke test but can echo.
Install notes
The Chrome realtime default uses two external tools:sox: command-line audio utility. The plugin uses itsrecandplaycommands for the default 8 kHz G.711 mu-law audio bridge.blackhole-2ch: macOS virtual audio driver. It creates theBlackHole 2chaudio device that Chrome/Meet can route through.
LGPL-2.0-only AND GPL-2.0-only; BlackHole is GPL-3.0. If you build an
installer or appliance that bundles BlackHole with OpenClaw, review BlackHole’s
upstream licensing terms or get a separate license from Existential Audio.
Transports
Chrome
Chrome transport opens the Meet URL in Google Chrome and joins as the signed-in Chrome profile. On macOS, the plugin checks forBlackHole 2ch before launch.
If configured, it also runs an audio bridge health command and startup command
before opening Chrome.
BlackHole 2ch is not installed, the join fails with a setup error
instead of silently joining without an audio path.
Twilio
Twilio transport is a strict dial plan delegated to the Voice Call plugin. It does not parse Meet pages for phone numbers.--dtmf-sequence when the meeting needs a custom sequence:
OAuth and preflight
Google Meet Media API access uses a personal OAuth client first. Configureoauth.clientId and optionally oauth.clientSecret, then run:
oauth config block with a refresh token. It uses PKCE,
localhost callback on http://localhost:8085/oauth2callback, and a manual
copy/paste flow with --manual.
These environment variables are accepted as fallbacks:
OPENCLAW_GOOGLE_MEET_CLIENT_IDorGOOGLE_MEET_CLIENT_IDOPENCLAW_GOOGLE_MEET_CLIENT_SECRETorGOOGLE_MEET_CLIENT_SECRETOPENCLAW_GOOGLE_MEET_REFRESH_TOKENorGOOGLE_MEET_REFRESH_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKENorGOOGLE_MEET_ACCESS_TOKENOPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATorGOOGLE_MEET_ACCESS_TOKEN_EXPIRES_ATOPENCLAW_GOOGLE_MEET_DEFAULT_MEETINGorGOOGLE_MEET_DEFAULT_MEETINGOPENCLAW_GOOGLE_MEET_PREVIEW_ACKorGOOGLE_MEET_PREVIEW_ACK
spaces/{id} through spaces.get:
preview.enrollmentAcknowledged: true only after confirming your Cloud
project, OAuth principal, and meeting participants are enrolled in the Google
Workspace Developer Preview Program for Meet media APIs.
Config
The common Chrome realtime path only needs the plugin enabled, BlackHole, SoX, and an OpenAI key:plugins.entries.google-meet.config:
defaultTransport: "chrome"defaultMode: "realtime"chrome.audioBackend: "blackhole-2ch"chrome.audioInputCommand: SoXreccommand writing 8 kHz G.711 mu-law audio to stdoutchrome.audioOutputCommand: SoXplaycommand reading 8 kHz G.711 mu-law audio from stdinrealtime.provider: "openai"realtime.toolPolicy: "safe-read-only"realtime.instructions: brief spoken replies, withopenclaw_agent_consultfor deeper answers
Tool
Agents can use thegoogle_meet tool:
action: "status" to list active sessions or inspect a session ID. Use
action: "leave" to mark a session ended.
Realtime agent consult
Chrome realtime mode is optimized for a live voice loop. The realtime voice provider hears the meeting audio and speaks through the configured audio bridge. When the realtime model needs deeper reasoning, current information, or normal OpenClaw tools, it can callopenclaw_agent_consult.
The consult tool runs the regular OpenClaw agent behind the scenes with recent
meeting transcript context and returns a concise spoken answer to the realtime
voice session. The voice model can then speak that answer back into the meeting.
realtime.toolPolicy controls the consult run:
safe-read-only: expose the consult tool and limit the regular agent toread,web_search,web_fetch,x_search,memory_search, andmemory_get.owner: expose the consult tool and let the regular agent use the normal agent tool policy.none: do not expose the consult tool to the realtime voice model.
Notes
Google Meet’s official media API is receive-oriented, so speaking into a Meet call still needs a participant path. This plugin keeps that boundary visible: Chrome handles browser participation and local audio routing; Twilio handles phone dial-in participation. Chrome realtime mode needs either:chrome.audioInputCommandpluschrome.audioOutputCommand: OpenClaw owns the realtime model bridge and pipes 8 kHz G.711 mu-law audio between those commands and the selected realtime voice provider.chrome.audioBridgeCommand: an external bridge command owns the whole local audio path and must exit after starting or validating its daemon.
googlemeet leave stops the command-pair realtime audio bridge for Chrome
sessions. For Twilio sessions delegated through the Voice Call plugin, it also
hangs up the underlying voice call.