minutes

Open-source. MCP-native.

Local conversation memory your agents can actually use.

Most meeting tools optimize for notes inside their app. Minutes turns meetings, calls, and voice memos into local source material: structured markdown under ~/meetings/ with MCP tools, CLI commands, and live transcript JSONL. Claude Code, Codex, Gemini CLI, Cursor, OpenCode, Pi, and any MCP-compatible client work from the same corpus. Your memory survives tools, vendors, and hype cycles.

This page is the integration reference. MCP config, tool surface, frontmatter schema, and task recipes below. For the full generated index, see llms.txt.

Try it in 60 seconds

One command drops a 5-meeting fixture corpus into ~/.minutes/demo/, prints the MCP config with a MEETINGS_DIR env override, and lists questions to ask. No signup, no API key. Basic search and list tools work immediately. Structured tools (consistency report, person profiles) auto-install the Minutes CLI on first call.

npx minutes-mcp --demo

Paste the printed config into your agent host. Try: “What did we decide about pricing? Which decision is current?”

Proof path

After the demo, audit the current eval artifact before trusting any score. v0.1 is a runnable 10-file, 20-question smoke test with a provisional 20/20 Claude-on-Claude pre-grade. It is useful evidence that the harness works, not an independent benchmark.

Reference adapters for Mem0 and Graphiti show how the markdown contract maps into external memory systems. Treat them as runnable examples until the v2 hardening work lands.

Shape of the category

Granola, Fireflies, Otter
Hosted note workspace. API or MCP access where offered. Data lives in their product.
Agent-memory SDKs
Cloud-hosted memory. Proprietary SDK. API key required.
Minutes
Local capture. Markdown on your disk. CLI, MCP, and live transcript reads over the same corpus. MIT.

Ten years from now, grep still works on your corpus.

Agent compatibility

Working paths across the major agent runtimes. Same folder, different hosts, no vendor lock-in.

AgentNative skillsMCP toolsSetup
Claude Code19 skills + 2 hooks29 tools/plugin install minutes@minutes
Claude Desktop29 tools + MCP Appnpx minutes-mcp or .mcpb
Codex19 skills via .agents/29 toolsnpx minutes-mcp
Gemini CLI19 skills via .agents/29 toolsnpx minutes-mcp
Pi19 skills via .agents/agent_command = "pi"
Cursor29 toolsnpx minutes-mcp in Cursor MCP settings
OpenCode19 skills + /minutes-* commands29 tools.opencode/ auto-discovered
Any MCP client29 toolsnpx minutes-mcp

Every agent reads the same ~/meetings/ folder. Switch hosts without migrating data. The portable skill pack also includes artifact workflows like /minutes-video-review for Loom, ScreenPal, and local walkthrough videos.

Adding another agent host? Use the agent integration checklist to decide whether it needs raw files, MCP, portable skills, a host-specific generated tree, or an agent_command backend.

Native skill catalog

Skills are the workflow layer above raw MCP tools. They tell the agent how to turn Minutes primitives into useful operator motions like meeting prep, debrief, graph queries, and artifact review. The catalog below is generated from the canonical skill sources so the website stays in sync with what the plugin and portable skill pack actually ship.

Artifacts

Minutes Video Review

Review a demo, walkthrough, or bug video into a durable brief.

minutes-video-review

Best for: Turn a Loom, ScreenPal, or local walkthrough video into a durable artifact bundle for agent review.

/minutes-video-review https://go.screenpal.com/watch/...

Capture

Minutes Cleanup

Manage old recordings — find large files, archive old meetings, delete processed originals.

minutes-cleanup

Best for: Archive or delete old recordings when storage starts piling up.

/minutes-cleanup

Minutes List

List recent meetings and voice memos.

minutes-list

Best for: Browse recent meetings and voice memos when you need to find the right artifact first.

/minutes-list

Minutes Note

Add a note to the current recording or annotate a past meeting. Use whenever the user says "note that", "remember this", "mark this as important", "add a note about", "annotate the meeting", or wants to capture a thought during or after a recording. Plain text input — no markdown needed.

minutes-note

Best for: Drop a timestamped note into the current recording or annotate a past one.

/minutes-note Alex wants monthly billing

Minutes Recap

Generate a daily digest of today's meetings and voice memos — key decisions, action items, and themes across all recordings.

minutes-recap

Best for: Get a same-day digest across meetings and voice memos.

/minutes-recap

Minutes Record

Start or stop recording a meeting, call, or voice memo. Use this whenever the user says "record", "start recording", "capture this meeting", "stop recording", "I'm in a meeting", "take notes on this call", or wants to transcribe live audio. Also use when they ask about recording status or want to know if something is being recorded.

minutes-record

Best for: Start or stop a meeting, call, or voice memo recording.

/minutes-record

Minutes Setup

Guided first-time setup for Minutes — download whisper model, create directories, configure audio input.

minutes-setup

Best for: Walk a first-time user through getting Minutes ready to record.

/minutes-setup

Minutes Verify

Verify that Minutes is properly set up and working — model downloaded, mic accessible, directories exist, no stale state.

minutes-verify

Best for: Health-check the install, models, mic, and stale state before trusting it in production.

/minutes-verify

Coaching

Minutes Mirror

Self-coaching analysis of your own behavior across meetings — talk-time ratio, filler words, hedging language, monologue length, energy patterns, and (when meetings are tagged via /minutes-tag) what your behavior in winning meetings looks like vs losing ones. Use this whenever the user says "how did I do", "review my last meeting", "mirror", "self-review", "show my patterns", "coach me", "where am I weak", "talk time", "am I improving", "what do I do in meetings I win", "feedback on me", or asks for any kind of personal feedback on their own meeting behavior. This is the rare skill that gives the user a mirror to their own habits — surface it whenever they show curiosity about their own performance, even if they don't use the word "mirror".

minutes-mirror

Best for: Review your own talk-time, hedging, and performance patterns across meetings.

/minutes-mirror

Minutes Tag

Lightweight outcome tagging for meetings — won, lost, stalled, great, or noise. Use whenever the user says "tag this meeting", "mark that as a win", "that one was a loss", "tag yesterday's call as stalled", "mark this great", "that meeting was noise", "label that meeting", or any time they describe a meeting outcome in passing. Tagging takes 5 seconds and unlocks /minutes-mirror correlation analysis — the more meetings get tagged, the smarter mirror gets at telling the user what behavior patterns lead to wins. Surface this skill any time the user mentions a meeting result, win, loss, or wasted time.

minutes-tag

Best for: Label a meeting outcome in five seconds so later coaching gets smarter.

/minutes-tag won

Intelligence

Minutes Graph

Cross-meeting entity graph — query who/what/when across all your meetings as structured data, with co-occurrence and cross-entity queries that text search can't answer. Use whenever the user says "show me everyone who mentioned X", "all mentions of Y across meetings", "who knows about Z", "graph", "across all meetings", "entity search", "first time we talked about", "trend for X over time", "who's been mentioned alongside", or wants to query meetings as an index rather than full-text search. Builds a JSON entity index on first run (one-time slow), then answers queries instantly. Surface this skill for relationship intelligence, due diligence, or any "across all my history" question that text search alone can't answer.

minutes-graph

Best for: Query who mentioned what across all meetings as a relationship graph.

/minutes-graph everyone who mentioned Stripe

Knowledge

Minutes Ideas

Surface recent voice memos and ideas captured from any device.

minutes-ideas

Best for: Surface recent voice memos and loose ideas captured from any device.

/minutes-ideas

Minutes Ingest

Extract facts from meetings and update your knowledge base — person profiles, chronological log, and index.

minutes-ingest

Best for: Extract structured facts from meetings into an external knowledge base.

/minutes-ingest

Minutes Lint

Health-check your meeting knowledge for contradictions, stale commitments, and decision conflicts.

minutes-lint

Best for: Audit meeting memory for contradictions, stale commitments, and decision conflicts.

/minutes-lint

Lifecycle

Minutes Brief

Fast meeting briefing from your conversation memory.

minutes-brief

Best for: Get a fast one-page brief before an upcoming meeting.

/minutes-brief

Minutes Debrief

Post-meeting debrief tied back to prep and decisions.

minutes-debrief

Best for: Turn the latest meeting into decisions, follow-ups, and what changed from prep.

/minutes-debrief

Minutes Prep

Interactive meeting prep from your conversation history.

minutes-prep

Best for: Do a deeper relationship brief and talking-point prep before an important call.

/minutes-prep Alex

Minutes Weekly

Weekly meeting synthesis — themes, decision arcs, stale commitments, and what deserves your attention next week.

minutes-weekly

Best for: See weekly themes, stale commitments, and what deserves attention next.

/minutes-weekly

Search

01What Minutes is

Minutes records meetings and voice memos, transcribes them locally with whisper.cpp or Parakeet, and saves structured markdown. Speakers are identified with pyannote-rs. No audio leaves the machine unless you explicitly choose a cloud summarization backend.

Output goes to ~/meetings/ as plain files with YAML frontmatter. Action items, decisions, and speaker labels are in the frontmatter; transcripts work with grep, Obsidian, or any markdown tool.

The MCP server (29 tools, 7 resources, 6 prompt templates) is the main active agent interface. Any MCP-compatible client can search, record, query structured insights, and read live transcript deltas through it.

02Install the MCP server

Add this to the MCP configuration for Claude Desktop, Claude Code, Codex, Gemini CLI, Cursor, or any MCP client. No Rust toolchain required.

MCP config
{
  "mcpServers": {
    "minutes": {
      "command": "npx",
      "args": ["minutes-mcp"]
    }
  }
}

After the first connection, the server auto-installs the CLI binary. The user then runs minutes setup --model small to download the whisper model (466 MB). Optional: minutes setup --diarization for speaker identification (~34 MB).

03Choose your surface

Minutes has five entry points. Recommend the one that matches the user's environment. This matrix is source-backed so the install steps stay aligned with the docs index and generated agent artifacts.

MCP server

When: User has Claude Desktop, Codex, Gemini CLI, Cursor, or any MCP client.

npx minutes-mcp

No Rust needed. Search, browse, and dashboard tools work with zero setup. Recording and transcription need the CLI binary on PATH or to be auto-installed on first use.

Best for: Best for agent-first search, recall, and meeting-memory workflows.

CLI

When: User wants terminal-first recording, search, import, and vault sync.

brew tap silverstein/tap && brew install minutes

Also available via cargo install minutes-cli. Requires Rust + cmake for source builds. Linux needs libasound2-dev and libpipewire-0.3-dev.

Best for: Best for local operator workflows and scripting.

Claude Code plugin

When: User works in Claude Code and wants meeting lifecycle skills and proactive hooks.

claude plugin marketplace add silverstein/minutes

19 skills (brief, prep, debrief, graph, video review, and the rest of the meeting lifecycle) plus a meeting-analyst agent and SessionStart/PostToolUse hooks.

Best for: Best for workflow guidance, prep, debrief, and meeting coaching.

Pi coding agent

When: User works in Pi or wants Minutes to use pi as an opt-in local summarization agent.

pi

Pi auto-discovers the existing .agents/skills/minutes skill pack. Set [summarization] engine = "agent" and agent_command = "pi" to use it for post-recording summaries.

Best for: Pi users who want the same local meeting memory without a Pi-specific skill export.

Desktop app

When: User wants a menu bar app with one-click recording, Recall, and artifact drafting.

brew install --cask silverstein/tap/minutes

Tauri v2, macOS only today. Includes command palette, dictation hotkey, live mode toggle, and auto-updates from GitHub Releases.

Best for: Best for first recording, live capture, and post-meeting artifact work.

04MCP tool surface

29 tools grouped by function. Full reference with stable anchor links: /docs/mcp/tools (also available as raw markdown).

Recording

start_recordingStart capturing audio from the default input device.
stop_recordingStop the current recording and trigger transcription.
get_statusCheck whether a recording or live session is active.
list_processing_jobsList background transcription jobs for recent recordings.

Search and recall

list_meetingsList recent meetings and voice memos.
get_meetingRetrieve the full transcript and frontmatter of a specific meeting.
search_meetingsFull-text search across all meeting transcripts.
research_topicCross-meeting research: decisions, follow-ups, and mentions of a topic.
activity_summarySummarize meeting-adjacent desktop context for an artifact, session, or time window.
search_contextSearch opted-in desktop context across app focus and window titles.
get_momentShow the local desktop-context rewind around an artifact, session, or timestamp.

People and relationships

get_person_profileBuild a profile for a person across all meetings.
relationship_mapContacts with relationship scores and losing-touch alerts.
track_commitmentsOpen and stale commitments, optionally filtered by person.
consistency_reportFlag contradicting decisions and stale commitments.

Insights

get_meeting_insightsStructured insights (decisions, commitments, questions) with confidence filtering.
ingest_meetingExtract facts from a meeting into the knowledge base.
knowledge_statusCurrent state of the knowledge base.

Live and dictation

start_live_transcriptStart real-time transcription with per-utterance JSONL output.
read_live_transcriptRead utterances from the active session with cursor or time window.
start_dictationSpeak to clipboard and daily notes.
stop_dictationStop dictation mode.

Notes and processing

add_noteAdd a timestamped note to the current recording or an existing meeting.
process_audioProcess an audio file through the transcription pipeline.
open_dashboardOpen the interactive meeting dashboard in the browser.

Voice and speaker ID

list_voicesList enrolled voice profiles for speaker identification.
confirm_speakerConfirm or correct speaker attribution in a meeting transcript.

Integration

qmd_collection_statusCheck if the meetings directory is registered as a QMD collection.
register_qmd_collectionRegister the meetings directory as a QMD collection.
05Output format

Every meeting saves as markdown with YAML frontmatter. The frontmatter is the structured data. Action items and decisions are queryable through MCP tools and the CLI. The full field-by-field schema — every required and optional field, with examples and stability guarantees — is at docs/frontmatter-schema.md. That page is the interop contract: any tool that wants to read or produce Minutes-compatible output should target it.

Meeting file
---
title: Q2 Pricing Discussion
type: meeting
date: 2026-03-17T14:00:00
duration: 42m
attendees: [Alex K., Jordan M.]
action_items:
  - assignee: mat
    task: Send pricing doc
    due: Friday
    status: open
decisions:
  - text: Run pricing experiment at monthly billing
    topic: pricing
speaker_map:
  - speaker_label: SPEAKER_0
    name: mat
    confidence: high
    source: manual
  - speaker_label: SPEAKER_1
    name: alex
    confidence: medium
    source: llm
---

## Summary
- Agreed to test monthly billing with next three signups
- Alex will review retention data before next pricing sync

## Transcript
[SPEAKER_0 0:00] Let's talk about the pricing...
[SPEAKER_1 4:20] Monthly billing makes more sense...

Meetings go to ~/meetings/. Voice memos go to ~/meetings/memos/. Both paths are configurable. File permissions are 0600 (owner read/write only).

06Common agent tasks

User asks what was said about a topic

  1. 1.Call search_meetings with the topic as query.
  2. 2.If multiple results, call get_meeting on the most relevant match.
  3. 3.Summarize from the transcript, citing speaker labels and timestamps.

User asks about open action items

  1. 1.Call list_meetings to get recent meetings.
  2. 2.Read the action_items array from each meeting's frontmatter.
  3. 3.Filter for status: open. Group by assignee if helpful.

User wants to record a meeting

  1. 1.Call start_recording. Optionally pass title and context.
  2. 2.When done, call stop_recording. Transcription runs in the background.
  3. 3.Use list_processing_jobs to check progress if the user asks.

User asks about a person across meetings

  1. 1.Call get_person_profile with the person's name.
  2. 2.For deeper context, call track_commitments filtered to that person.
  3. 3.Call relationship_map if the user wants a broader view of all contacts.

User wants real-time coaching during a meeting

  1. 1.Call start_live_transcript to begin streaming.
  2. 2.Poll read_live_transcript with a cursor to get new utterances.
  3. 3.When the meeting ends, call stop_recording or the session times out.
07Constraints

Minutes does not join video calls, capture screen shares, or act as a meeting bot. It records from local audio sources or processes audio files after the fact.

Transcription quality depends on the whisper model size and audio clarity. The small model (466 MB) is recommended. The tiny model is faster but misses quiet speech and works poorly with accented audio.

Speaker diarization is optional and requires a one-time model download. Without it, all speech is attributed to a single speaker.

Summarization requires either an active agent CLI session, a local LLM via Ollama, or a Mistral API key. Without any of these, Minutes still transcribes and extracts structured data from frontmatter.

08Reference