Meeting Copilot

by Alvaro Lobato
5
4
3
2
1
Score: 48/100

Description

Granola-style meeting capture for Obsidian on macOS: Google Calendar → dual-channel recording → transcription (remote or on-device Whisper) → AI enrichment.

Reviews

No reviews yet.

Stats

5
stars
177
downloads
1
forks
30
days
29
days
30
days
81
total PRs
2
open PRs
1
closed PRs
78
merged PRs
96
total issues
16
open issues
80
closed issues
234
commits

Latest Version

a month ago

Changelog

What's Changed

Full Changelog: https://github.com/alvarolobato/obsidian-meeting-copilot/compare/0.9.4...0.9.5

README file from

Github

Meeting Copilot

Integrated meeting transcription, note-taking, and summarization for Obsidian on macOS: Google Calendar → dual-channel recording → transcription (remote or on-device Whisper) → AI summaries.

Meeting Copilot

Installation

Community plugins: in Obsidian, open Settings → Community plugins → Browse, search for Meeting Copilot, then install and enable it.

BRAT (beta builds): install BRAT, then add:

alvarolobato/obsidian-meeting-copilot

Manual: download main.js, manifest.json, and styles.css from the latest release into .obsidian/plugins/meeting-copilot/, then enable the plugin.

On first recording, the plugin downloads its system-recorder helper and whisper runtime (see Helper downloads). Grant the macOS prompts, then quit and reopen Obsidian.

Optional: Tasks (action-item tracking). The meetings dashboard and agenda are both built-in views — no Dataview or other query plugin needed.

See Setup for Google Calendar, AI endpoint, transcription, and enrichment.

Features

  • Dual-channel recording (system audio + mic)
  • Google Calendar sync and agenda sidebar
  • Auto notes, transcript, and AI enrichment
  • Local on-device Whisper (optional)
  • Meetings dashboard and recording retention

More

Requirements

  • macOS 13.3+ (Apple Silicon)
  • Obsidian Desktop
  • Google account (calendar)
  • OpenAI-compatible endpoint (local or remote) when you use enrichment and/or remote transcription. Not needed for on-device Whisper with enrichment off.

Network use

Meeting Copilot talks to these remote services, only for the features you enable:

  • Google Calendar API — reads your calendar (read-only) to build the agenda.
  • Google Cloud Identity Groups API + People API — expands Google Group invitees into the individual people on the group, then resolves those people's display names from your Workspace directory — read-only, each independently toggleable under Settings → Meeting Copilot → General → Optional permissions (on by default); see Setup.
  • OpenAI-compatible endpoint (your choice of provider, local or remote) — used for remote transcription and AI enrichment, only if you configure one. Not needed for on-device Whisper with enrichment off.
  • AI command-line tool (optional) — if you pick Claude Code, Codex, OpenCode, or pi as the enrichment backend, the plugin runs that tool on your Mac, and the tool sends the note to its own provider.
  • GitHub Releases — downloads the system-recorder helper, its whisper runtime, and the fvad.wasm voice-activity detector the first time each is needed (see Helper downloads).
  • Hugging Face — downloads the on-device Whisper model you pick (from ggerganov/whisper.cpp), only when you use local transcription.

The plugin has no server of its own and collects no telemetry. See the privacy policy.

Helper downloads

Obsidian installs only main.js, manifest.json, and styles.css. Recording and on-device transcription need native macOS code, so the plugin downloads these files into its own plugin folder (.obsidian/plugins/meeting-copilot/) the first time they're needed:

File What it is Downloaded from When
system-recorder Swift helper that records system audio and the mic, lists microphones, and runs on-device transcription (source) This repository's GitHub release for the installed plugin version First recording, or refreshing the microphone list in settings
whisper whisper.cpp runtime library the helper links, saved as whisper.framework/Versions/Current/whisper Same release With the helper
fvad.wasm WebRTC voice-activity detector (@echogarden/fvad-wasm) Same release First transcription that separates your voice from others
models/*.bin On-device Whisper model Hugging Face When you press Download under Settings → Transcription, or on the first local transcription
  • Checksum-verified. Every download is checked against a SHA-256 checksum built into that plugin version, and discarded if it doesn't match. The recorder helper is re-checked before each recording, on-device transcription, or microphone refresh. The other files aren't re-hashed after download; they're downloaded again only if their size changes.
  • Pinned to the plugin version. The plugin never fetches a "latest" build. The helper only changes when you update the plugin itself; models are downloaded once and reused.
  • Built in the open. Release files are built from this repository by GitHub Actions and carry signed build provenance. Check one with gh attestation verify system-recorder -R alvarolobato/obsidian-meeting-copilot.
  • Visible. A notice shows while the helper or runtime downloads, and model download progress shows in settings. The small voice-activity detector downloads without a notice.

File and system access

Meeting Copilot is desktop-only and uses Node.js APIs beyond Obsidian's vault API. It uses them only for the following.

Filesystem

  • Plugin folder — stores the helper files and models listed above, plus directory-cache.json: the Google Workspace names and group members already looked up, so they aren't requested again. It syncs to your other devices if you sync .obsidian/plugins.
  • System temp folder — short-lived working files while recording, transcribing, and running an AI command-line tool, removed afterwards.
  • Your vault — recordings, transcripts, and meeting notes are saved in the vault folders you configure.

Processes

  • system-recorder — records audio, lists microphones, and runs on-device transcription.
  • pgrep — checks whether a Zoom call is running (the CptHost process). Runs every 10 seconds by default (configurable) while meeting detection and Zoom detection are on (both on by default).
  • osascript — checks Chrome, Brave, Edge, or Arc tabs for an active Google Meet call, only when Google Meet detection is on (off by default). macOS asks once for Automation permission.
  • Your AI command-line tool (claude, codex, opencode, or pi) — only if you pick one as the enrichment backend: to enrich notes and to list its models. The plugin looks for it at the path you set, on your PATH, in common install locations (Homebrew, /usr/local/bin, and version managers such as Volta, asdf, fnm, and nvm), and in npm's global folder (found with npm config get prefix).
  • open — opens the Notifications or Screen & System Audio Recording pane in macOS System Settings, when you use the button that offers to.

Local network listener

  • Google sign-in — while you sign in, a temporary web server listens on 127.0.0.1 (a random port, not reachable from other machines) to receive the callback from your browser. It closes as soon as sign-in finishes or is cancelled.

Obsidian and browser APIs

  • Vault-wide file list — finds meeting notes for the agenda, dashboard, and notes-with-issues list, matches recordings to their notes, and finds old recordings for retention cleanup.
  • Clipboard — writes a meeting link when you choose Copy meeting link. It never reads the clipboard.
  • Local storage — Google OAuth tokens and any client secret are kept in Obsidian's per-vault local storage, so they're never written to the synced data.json. All other settings use the normal plugin data file.

macOS permissions — macOS asks for these on behalf of Obsidian, because the helper runs as part of it. Look for Obsidian, not system-recorder, under System Settings → Privacy & Security:

  • Microphone — records your side of the meeting.
  • Screen & System Audio Recording (called Screen Recording on older macOS) — captures system audio.
  • Automation — Google Meet detection only.
  • Notifications — meeting prompts.

After granting Microphone or Screen Recording, quit and reopen Obsidian.

Attribution

Meeting Copilot is an integrated meeting workflow built from permissively licensed open-source parts. It vendors and adapts code from the projects below — you do not need to install them separately. Full license texts are in THIRD_PARTY_NOTICES.md.

Component Source Author License What we use
Recorder & calendar System Recording Yuto Takagi 0BSD Dual-channel ScreenCaptureKit recorder (swift-helper/), Google Calendar integration, and parts of the core plugin scaffolding
Agenda sidebar Meetings Plus Jacob Holm 0BSD Meeting agenda view (day grouping, meeting rows, status header, date picker, and related UI/styles)
Remote transcription AI Transcriber Musashino Software MIT Transcription engine under src/transcribe/vendor/ (audio chunking, VAD, Whisper/GPT-4o clients, cleaners, transcript merge, dictionary correction). Driven headlessly by Meeting Copilot — no AI Transcriber plugin required

Not from AI Transcriber: on-device Whisper transcription runs in Meeting Copilot's own system-recorder Swift helper (whisper.cpp over Metal), not the vendored engine above.

License

0BSD — see LICENSE and THIRD_PARTY_NOTICES.md.