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 hooks34 tools/plugin install minutes@minutes
Claude Desktop34 tools + MCP Appnpx minutes-mcp or .mcpb
Codex19 skills via .agents/34 toolsnpx minutes-mcp
Gemini CLI19 skills via .agents/34 toolsnpx minutes-mcp
Pi19 skills via .agents/agent_command = "pi"
Cursor34 toolsnpx minutes-mcp in Cursor MCP settings
OpenCode19 skills + /minutes-* commands34 tools.opencode/ auto-discovered
Any MCP client34 toolsnpx minutes-mcp

Every agent uses the same policy-aware local tools over your ~/meetings/ folder. Switch hosts without migrating data or bypassing the corpus sensitivity boundary. 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, bounded person/topic research, 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 policy-authorized meetings and voice memos.

minutes-recap

Best for: Get a same-day digest across policy-authorized 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

Bounded policy-safe relationship intelligence from owned meeting history.

minutes-graph

Best for: Rank relationships, inspect commitments, confirm aliases, build a person profile, or research a topic.

/minutes-graph profile Alex from my normal meeting history

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 sealed whisper.cpp, 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 (34 tools, 11 resources, 6 prompt templates) is the main active agent interface. Any MCP-compatible client can search, record, and read live transcript deltas through it. Compatibility-only derived insight and annotation reads return explicit unavailable errors until their source policy provenance can be revalidated live.

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, and live mode toggle. Updates remain manual until a hosted manifest and rollback UX exist.

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

04MCP tool surface

34 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_meetingsPolicy-authorized full-text search across meeting transcripts.
research_topicCross-meeting research: decisions, follow-ups, and mentions of a topic.
activity_summarySummarize desktop context bound to one exact normal meeting source.
search_contextSearch opted-in desktop context bound to one exact normal meeting source.
get_momentShow the local desktop-context rewind bound to one exact normal meeting source.

People and relationships

get_person_profileBuild a profile from policy-authorized meetings within supported corpus bounds.
relationship_mapRank relationships from the bounded process-private policy-safe graph projection.
track_commitmentsOpen and stale commitments, optionally filtered by person.
consistency_reportFlag contradicting decisions and stale commitments.

Insights

get_meeting_insightsDecisions, commitments and questions, released only after the meeting the pipeline recorded as each insight's source is re-verified against live sensitivity policy. Withheld records are reported as a partial view.
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 finalized lines and, when requested, one fresh provisional current-speech draft.
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 inbox or Downloads audio on macOS/Linux; Windows fails closed without reading audio; retained library recordings are unavailable.
resummarize_meetingRegenerate the summary for one policy-authorized meeting.

Voice and speaker ID

list_voicesList enrolled voice profiles for speaker identification.
confirm_speakerCompatibility name; speaker identity changes require the Minutes app or human CLI.

Coach, screen context, and collaboration

get_screen_contextRetrieve bounded, verified screenshots bound to one exact normal meeting source.
start_copilotStart Coach for a goal and observe its live nudge stream.
stop_copilotStop Coach without changing recording or live transcription.
copilot_statusRead the current Coach session and provider health.
read_copilot_nudgesRead observed Coach nudges incrementally by cursor or time window.
add_agent_annotationAppend allowlisted agent commentary without editing meeting markdown or frontmatter.
get_agent_annotationsCompatibility name only; unavailable because an annotation's source pointer and body are both author-supplied, so revalidating the pointer cannot bound what the body discloses.

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/architecture/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.For broader relationship rankings, call relationship_map and require a successful policy-authorized response.

User wants real-time coaching during a meeting

  1. 1.Call start_live_transcript to begin streaming.
  2. 2.When the user asks for help, call read_live_transcript with include_current to get recent finals plus at most one fresh provisional draft.
  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