Jiajun Song47 downloadsOn macOS, record microphone audio to your vault, transcribe it locally with your own Whisper CLI, and create source-linked Markdown notes with optional Codex summaries.
Turn microphone recordings into local, timestamped Obsidian minutes.
Recording Minutes is a macOS desktop plugin for a simple, inspectable flow:
Record → local WAV → local Whisper transcript → optional Codex minutes → recoverable Markdown
Click the microphone once to start and again to stop. The plugin saves microphone input as a 16 kHz mono WAV file inside your vault, runs your own local whisper-cli, and writes a transcript with links back to the recording.
Codex summaries are optional and off by default. The plugin asks for separate consent before it can send a completed transcript to Codex. It does not send audio, note titles, vault names, or file paths. Codex uses your network connection, login, and account quota.
Recording, transcription, and note writing are saved as separate stages. If Obsidian exits or a later step fails, the files already written remain available and the Recovery Center can continue from the saved material.
[!IMPORTANT] Version 0.1.0 records one microphone input only on macOS desktop. It does not capture system audio, meeting-app audio channels, or separate speakers. Remote voices are recorded only if your microphone physically picks them up.
AI output can be incomplete or wrong. Review it against the linked transcript and recording before relying on it.
| Requirement | Needed for |
|---|---|
| macOS desktop | Version 0.1.0. Windows, Linux, and mobile are not supported. |
| Obsidian 1.13.4 or later | Plugin host. |
| Microphone permission for Obsidian | Recording. |
whisper-cli from whisper.cpp |
Local transcription. |
| A compatible local GGML Whisper model | Local transcription. Use a multilingual model for Chinese. |
| A compatible, authenticated Codex CLI | Optional AI minutes only. |
| At least 500 MiB free | Starting a recording. The plugin warns below 2 GiB. |
The plugin does not install executables or download models for you. Its release-verification baseline is whisper.cpp 1.9.2 and codex-cli 0.149.0-alpha.4. Other versions must pass the built-in capability checks before use.
If the listing is not available yet, install the three files from a GitHub release manually.
main.js, manifest.json, and styles.css from the same GitHub release.<vault-config-dir>/plugins/recording-minutes/ inside your vault. The vault configuration directory is .obsidian by default.Do not mix files from different releases.
One macOS option is Homebrew:
brew install whisper-cpp
command -v whisper-cli
whisper-cli --version
Download a compatible GGML model by following the whisper.cpp model instructions. Keep the executable and model paths. Recording Minutes accepts absolute macOS paths and can also look for whisper-cli in common Homebrew locations and Obsidian's process PATH.
For Chinese or mixed-language recordings, choose a multilingual model such as base, small, or a larger compatible model. Files ending in .en are English-only.
Install and sign in to Codex by following the official Codex CLI instructions. Run it once in Terminal and complete sign-in before testing it in the plugin. Recording Minutes checks a path you select, the Codex bundled with the ChatGPT app, and Obsidian's process PATH.
Codex is not required for recording or local transcription.
Once Whisper and its model are installed, the in-plugin setup should take about five minutes.
whisper-cli executable and model, choose the transcript language, and run the local check.Recording Minutes/.The microphone is enough to save audio. Automatic transcription starts only after Whisper and a model are ready. Codex can remain disabled permanently.
The plugin registers commands for starting or stopping, pausing or resuming, keeping audio without further processing, retrying transcription, retrying Codex, opening Recovery Center, running setup checks, and importing a legacy index. It does not assign global hotkeys. Add your own under Settings → Hotkeys.
The default layout is:
Recording Minutes/
2026-08-21 153012 Recording abc12345.md
Attachments/
recording-...wav
recording-....transcript.json
Pending/
recording-.../
session.json
chunks/
whisper/
minutes.json
Final audio and normalized transcripts live under Attachments/. Pending/ contains only the material needed to finish or recover incomplete work. Plugin settings and a lightweight session index live in <vault-config-dir>/plugins/recording-minutes/data.json (.obsidian is the default vault configuration directory).
Recording Minutes manages four marked body regions and its own recording-minutes frontmatter fields. Other body text and non-plugin frontmatter fields are left alone. If markers or identity fields conflict, the plugin creates a separate Recovery note instead of overwriting the original.
Open Recovery Center from the command palette or plugin settings when a recording, transcript, note write, or Codex run needs attention. It lists what was preserved and the available next action.
Recording chunks are synchronized about every two seconds. An abrupt process or system failure can still affect the latest unsynchronized audio. See Troubleshooting for recovery steps and force-quit limitations.
The final PCM WAV uses about 115 MB per recorded hour. During finalization, the source chunks and partial WAV can temporarily use about 230 MB per hour, plus a 200 MiB safety allowance.
Cloud-synced vaults can need additional temporary space and time to settle. Do not remove files from Pending/ while recovery is in progress.
| Capability | When it is used | Data involved |
|---|---|---|
| Microphone permission | Only while recording. | One selected microphone input. No system-audio capture. |
| Vault file access | Recording, writing notes, transcription sidecars, and recovery. | Files under the configured Recording Minutes folder plus the plugin's own settings and index. |
| Local child processes | When you test or run Whisper, and only after consent when you test or run Codex. | Whisper receives the current WAV and selected model. Codex receives the completed numbered transcript through standard input. |
| Paths outside the vault | When reading user-selected executables or a model, and while Codex uses a one-time macOS temporary directory. | The Codex directory contains an output schema and result file, never audio. |
| Network | The plugin's only designed network path is optional Codex after consent. | The completed transcript and the plugin's fixed instructions. Audio and vault paths are excluded. |
| Payment | Never collected by this plugin. | Codex may use eligibility, quota, or a paid plan attached to your OpenAI account. |
Recording Minutes itself does not upload audio or provide cloud transcription. It writes WAV and transcript files to the selected vault; sync and backup services may copy those files under their own settings. There is no plugin telemetry, advertising, crash upload, or in-plugin purchase. A local executable you choose still runs with your macOS account permissions and remains outside the plugin's privacy boundary; it may access other files or the network on its own. Select software you trust.
Read Privacy for the complete boundary and Third-party notices for external projects and services.
ffmpeg integration.If <vault-config-dir>/plugins/codex-recording-minutes/data.json exists, the new plugin offers a user-initiated, read-only index import. It does not move, rename, or rewrite old notes, audio, or transcripts. Follow Migration before disabling the old entry points.
Start with Troubleshooting. If the problem remains, open a GitHub issue and include versions, the failing stage, and the exact redacted error. Do not attach private recordings, transcripts, data.json, session.json, account details, or full personal paths.
Build from source with:
npm ci
npm run format:check
npm run lint
npm run typecheck
npm test
npm run build
See CHANGELOG, Privacy, and the MIT license.
Recording Minutes is an independent community project. It is not affiliated with or endorsed by Obsidian or OpenAI.