Omniscio documentation
Browse all documentation
  1. Getting Started13
  2. Sessions & Agents115
  3. Inbox & Notifications59
  4. Projects & Tasks95
  5. Automation & Scheduling75
  6. Knowledge & Memory26
  7. AI Features60
  8. Integrations100
  9. Plugins & Marketplace33
  10. Cloud & Teams56
  11. Settings & Customization58
  12. Account & Billing28
  13. Troubleshooting84
  14. CLI & API Reference22
  15. Legal & Policies4
  16. Uncategorised22

Google Meet

Your Google Meet meeting history inside Omniscio: conference records, participant rosters, cloud recordings and speaker-attributed transcripts, synced in the background and browsable from a panel of their own.

What it is

A built-in integration that pulls your Google Meet meeting history into Omniscio: conference records, participant rosters, cloud recordings, and speaker-attributed transcripts. It syncs automatically in the background (every 15 minutes) and shows meetings in a dedicated sidebar panel, so you can browse past meetings, read who attended, and review what was said without leaving Omniscio.

This integration uses the Google Meet REST API v2 (GA 2025) and requires a Google Workspace Business Standard (or higher) account. Consumer @gmail.com accounts cannot access the Meet conference records API. The integration piggybacks on Omniscio's existing Google sign-in; there is no separate authentication flow for Meet.

In-development, off by default. Enable it in Settings (Lab toggle or googleMeetEnabled setting). Once enabled, it appears as a sidebar entry under the Communication group with a blue video-camera icon.

Where to find it

How to use it

Connecting

Google Meet shares the same Google account connection as Gmail, Calendar, and other Google features. If you have already connected your Google account in Settings > Connections > Google, Meet is ready; you just need to enable it.

If you connected Google before the Meet scope was added, you will need to reconnect (disconnect and reconnect in Settings > Connections > Google) so the OAuth consent screen includes the new meetings.space.readonly scope. The Meet panel's Settings tab shows your connection and scope status.

Browsing meetings

Once enabled and synced, the Meetings tab shows your recent conference records sorted newest-first. Each row shows the meeting title (or a default label), date/time, participant count, and badges for recordings and transcripts when available. Click a meeting to open its detail view.

Meeting detail

The detail view shows:

  • Participants tab: the full attendee roster with display names and join/leave times, fetched live from the Google Meet API when you open the detail.
  • Transcript tab (when available): speaker-attributed text segments in chronological order. Each entry shows the speaker name, the text, and timestamps. Transcripts are fetched live from the API.
  • Recordings tab (when available): recording metadata with a link to open the recording in Google Drive.

Syncing

The background sync runs every 15 minutes automatically. You can also trigger a manual sync from the Settings tab. The sync fetches conference records from the last 90 days; older records are pruned automatically.

The sync self-gates: it only runs when (1) the feature is enabled, (2) a Google account is connected, (3) the device is online, and (4) the Meet scope is present in the OAuth grant. If any condition is unmet, the tick silently no-ops.

How it behaves

How it works

Architecture. The integration follows the standard Omniscio integration pattern:

  • Manifest (src/shared/integrations/google-meet.ts): declares the integration id (google-meet), display name, virtual project sentinel, parent sidebar group (communication), and push channels.
  • API client (src/main/services/google/google-meet-client.ts): a thin, stateless wrapper around the Google Meet REST API v2 at https://meet.googleapis.com/v2/. All responses are Zod-validated. Handles 429 rate limits with exponential backoff + jitter (3 retries, base 1s, max 30s) and surfaces 403 errors as typed GoogleMeetApiError for graceful degradation when the account lacks Workspace Business Standard.
  • Sync service (src/main/services/google/google-meet-sync.ts): a createRegisteredService poller on a 15-minute interval. Each tick fetches conference records (paginated), enriches each with participant count and recording/transcript presence, and upserts into the local SQLite table. Dead Google grants and 403 errors trigger a 1-hour pause to avoid hammering. Emits a google-meet:sync-complete push event so the UI reloads.
  • Database: one table (google_meet_conferences) stores synced conference metadata with indexes on start_time and is_deleted. Queries in src/main/db/queries-google-meet.ts follow the codebase conventions (soft delete, ISO timestamps bound in JS, ? placeholders).
  • IPC handlers (src/main/ipc/google-meet-handlers.ts): seven channels for list, detail, participants, transcript, recordings, manual sync, and status. All handlers use wrapHandler() with Zod input validation and rate limiting. List and detail are local DB reads; participants, transcript, and recordings are live API calls (they aren't cached locally). Humanized error messages via friendlyGoogleMeetError().
  • Frontend (src/renderer/src/features/google-meet/): a Zustand store drives the UI. The main panel has two tabs (Meetings, Settings) via SegmentedControl. Meeting list uses ListItem rows; detail view shows participants, transcript, and recordings as sub-tabs.

Auth. Uses the shared Google OAuth sign-in (google-auth-service.ts). The meetings.space.readonly scope is added to the existing OAUTH_SCOPES array. No separate auth button; the Google Account Card in Settings is the single connection point (Google Account Connection contract I1). The API token is obtained per-call via getAuthClient().getAccessToken() and never leaves the main process.

Feature gating. Registered in UNRELEASED_FEATURES with status in-development and setting key googleMeetEnabled. The sidebar entry is gated via UNRELEASED_PROJECT_GATES in project-visibility.ts. Flip status to shipped to release.

Data retention. 90-day rolling window. The sync service hard-deletes records whose start_time is older than 90 days. Individual records support soft delete (is_deleted = 1) for user-initiated removal.

Limitations

  • Workspace Business Standard required. The Google Meet REST API v2 conference records endpoint requires a Google Workspace Business Standard, Business Plus, Enterprise, or Education edition. Consumer Gmail accounts and Workspace Business Starter accounts get a 403 error. The integration detects this and shows a clear message.
  • No meeting creation. This integration is read-only; it pulls meeting history but does not create or schedule meetings.
  • Transcript availability. Transcripts are only available for meetings where cloud transcription was enabled. The Google Meet host must have turned on transcription during the meeting.
  • Recording availability. Cloud recordings require the host to have started recording. Recordings are stored in the host's Google Drive; the integration shows metadata and a Drive link but does not download the recording.
  • Sub-resource calls are live. Participants, transcripts, and recordings are fetched live from the Google Meet API when you open a meeting's detail view (not cached locally). This means they require an active internet connection and count against your Google API quota.

For agents

CLI parity

All seven IPC channels are blocked in the WebSocket bridge (BLOCKED_CHANNELS in web-access-ws-channels.ts) for the initial release. No CLI routes are exposed. Conference data is desktop-only for now.

Related

  • gmail-integration.md — the Gmail integration, which shares the same Google account connection
  • google-integrations.md — the Google Calendar / Drive / Sheets integrations, which also share the same Google auth and follow a similar sync-poller pattern
  • fathom-mcp.md — Fathom meeting transcripts via MCP (a separate, complementary meeting-data source)

Last verified 2026-10-06