Minutes

io.github.silversteinPublished by GitHub account silversteinv0.32.1Updated Nov 6, 2026

The private, owned conversation-memory layer for AI. Record, transcribe, and search every meeting.

Overview

AI-generated overview

Minutes is a local conversation-memory MCP server that lets an assistant record, transcribe, search and summarize meetings, calls, voice memos and dictation…

What you can do
  • Start and stop recording, dictation and live transcription, and add timestamped notes to the active recording
  • List, search and read meetings, transcripts with speaker overlays, and structured insights, decisions and commitments
  • Query desktop context bound to a meeting: activity summaries, context search, rewind moments and up to three screenshots
  • Track commitments and relationships, build person profiles, run consistency reports and research topics across meetings
  • Process bounded WAV files, ingest meetings into a knowledge base, re-summarize edited meetings and check knowledge status
  • Start, stop and observe the real-time copilot and read its nudges
When to use it
Useful when you want an AI client such as Claude Code, Cursor or Codex to answer questions about your own recorded meetings and calls, follow up on promises and decisions, or keep a local, file-based memory of conversations you choose to share.
Requirements
Runs as a local process via npx (npm package minutes-mcp); the Minutes desktop app or standalone CLI must be installed and its CLI on PATH. Capture, transcription and storage are local; no API keys or environment variables are declared. Some features need configuration, such as a knowledge section in config.toml for ingest_meeting and an allowed agent_id in the agents allow file for annotations.
Before you install
It records audio and can capture desktop context and screenshots, so consent and disclosure matter; sensitive meetings default to restricted and are excluded unless an operator launch grant plus include_restricted=true is audited. Text leaves the machine when you send authorized context to a cloud agent or summarizer. Re-summarizing invokes a model and costs apply even in preview. Tools write notes, annotations and meeting files, and process_audio reads audio files.

Installation

In SourceWeft

  1. Open Minutes in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

minutes

[GitHub stars] [License: MIT] [crates.io] [npm]

useminutes.app

Minutes is a free, open-source conversation memory app for the AI you already use. Record and transcribe meetings, calls, voice memos, and dictation on your device, then let Claude Code, Codex, Cursor, or another MCP client search the history you choose to share. Your records are Markdown files you own in ~/meetings/.

Capture, transcription, and storage run locally. If you choose a cloud AI assistant or summarizer, the meeting context you authorize is sent to that provider.

Your conversations. Your memory. Ready for the AI you use.

[minutes demo; record, dictate, phone sync, AI recall]

Install

Choose the desktop app or one standalone CLI installation. The desktop app includes a CLI: use About Minutes → Set up CLI to add it to your PATH.

bash
brew install --cask silverstein/tap/minutes  # Desktop app, with bundled CLIbrew install silverstein/tap/minutes         # Standalone CLI alternativecargo install minutes-cli                   # Standalone CLI via Cargo

For an agent connection, add the MCP server separately with claude mcp add minutes -- npx -y minutes-mcp (or run npx minutes-mcp from another MCP client).

If Homebrew reports an untrusted tap, run brew trust silverstein/tap once.

Ask your agent

Add Minutes to your agent, seed five sample meetings (no mic needed), then ask about them:

bash
claude mcp add minutes -- npx -y minutes-mcpminutes demo --full

What did we decide about monthly billing, and did it stick?

The answer spans two meetings a month apart: launched on Feb 28, reversed on Mar 25.

A direct MCP call uses the same local meeting files:

text
search_meetings({"query":"monthly billing decision"})

Record a real one with minutes record, then minutes stop to transcribe. minutes demo --clean removes the samples. Setup: Codex, Gemini CLI, and Claude Desktop, Cursor, OpenCode, Pi, Mistral Vibe, and Cowork or Dispatch.

Works with

Claude Code · Codex · Cursor · OpenCode · Pi · Gemini CLI · Claude Desktop · Mistral Vibe · Cowork · Dispatch · Obsidian · Logseq · any MCP client

How it compares

WorkflowGranolaOtter.aiAnarlog (formerly Hyprnote)Minutes
ProductHosted meeting notepadHosted meeting assistantLocal meeting notepadLocal conversation memory
Agent accessHosted MCPHosted integrationsCLI + MCPLocal files, MCP, CLI, SDK
Primary storageHosted workspaceHosted workspaceLocal SQLite + filesLocal Markdown + YAML
Local AICloud transcriptionCloud transcriptionWith local providersLocal transcription; AI provider of your choice

Reviewed September 5, 2026 against Granola MCP, Otter privacy and security, and the Anarlog repository. Anarlog's community app is MIT; its enterprise components use a commercial license. See the detailed comparison and open-source alternatives for fit and limitations.

Who it's for

Agent-first users treat Minutes as the capture layer of a local second brain. They search meetings through Claude Code, Cursor, Codex, OpenCode, MCP, or the CLI, then fold useful context into a vault or wiki they own.

Desktop notetaker users record and read results in the app. They value reliable setup, clear processing and recovery, Recall, documents, Coach, and summary quality. See the full persona notes.

Surfaces

SurfaceWhat it providesDocs
Desktop appMenu bar capture, dictation, Recall, documents, and Coach.Install
CLI (60 commands)Local recording, processing, search, import, and automation.Commands
MCP server (34 tools)Local meeting tools and resources for any MCP client.MCP reference
Claude Code plugin (23 skills)Prep, capture, live help, debrief, and memory workflows.Client setup
SDKTypeScript access to meeting files without MCP.Agent architecture

Dictation

The desktop Dictation settings bring writing preferences, personal spellings and snippets, microphone selection, and recent text together. Cursor context is optional and stays on the Mac. Recovery restores text for review; local edits use an explicit Ollama preview, and spelling corrections require confirmation.

See dictation behavior and evaluation boundaries for supported fields, safe insertion and undo, clipboard restoration, and the synthetic benchmark.

Output format

Meetings are plain markdown with structured YAML frontmatter:

yaml
---title: Q2 Pricing Discussion with Alextype: meetingdate: 2026-03-17T14:00:00duration: 42mcontext: Discuss Q2 pricingaction_items:  - assignee: mat    task: Send pricing doc    due: Friday    status: opendecisions:  - text: Test monthly billing with 10 advisors---

See the frontmatter schema. Files work with Obsidian, grep, and any markdown tool.

Privacy & consent

  • Transcription and speaker processing run on-device. Audio stays on your machine.
  • Sensitive meetings save typed markers without audio and default to restricted.
  • Consent reminders, acknowledgement, and provenance help you disclose recording.
  • Text leaves the machine only when you send authorized context to a cloud agent or summarizer.

See the security documentation and consent enforcement design.

Docs

Contributing

See CONTRIBUTING.md. Minutes is MIT licensed and staying that way: no relicensing, no paid tier for anything in this repo.

MIT. Built by Mat Silverstein, founder of X1 Wealth.

Star History

[Star History Chart]

Source: README.md at commit d5e706e

Tools

34

start_recording

Start Recording

Start recording audio with call-aware preflight. When a known call app is active, Minutes can infer call intent and block silent mic-only call captures unless explicitly allowed. Note: this server does not listen to audio content. Recordings are stopped by invoking stop_recording after the user types a request in chat — never promise the user they can speak a 'stop recording' voice command. Docs: https://useminutes.app/docs/mcp/tools#tool-start_recording

Parametersmodetitleintentlanguageallow_degradedskip_audio_probe_reason

stop_recording

Stop Recording

Stop the current recording and process it (transcribe, diarize, summarize). Docs: https://useminutes.app/docs/mcp/tools#tool-stop_recording

Takes no parameters.

get_status

Recording Status

Check if a recording is currently in progress. Docs: https://useminutes.app/docs/mcp/tools#tool-get_status

Takes no parameters.

list_processing_jobs

Processing Jobs

List background processing jobs for recent recordings, including queued, transcript-ready, needs-review, failed, and completed work. Docs: https://useminutes.app/docs/mcp/tools#tool-list_processing_jobs

Parameterslimitinclude_completed

list_meetings

List Meetings

List recent meetings, voice memos, and dictations. Restricted meetings are excluded. An override requires both an operator launch grant and include_restricted=true, and is durably audited. Docs: https://useminutes.app/docs/mcp/tools#tool-list_meetings

Parameterstypelimitinclude_restricted

search_meetings

Search Meetings

Search meeting transcripts, voice memos, and dictations. Restricted meetings are excluded. An override requires both an operator launch grant and include_restricted=true, and is durably audited. Docs: https://useminutes.app/docs/mcp/tools#tool-search_meetings

Parameterstypelimitownerqueryrequiredsinceintent_kindintents_onlyinclude_restricted

activity_summary

Activity Summary

Summarize meeting-adjacent desktop context bound to one exact normal meeting source. Docs: https://useminutes.app/docs/mcp/tools#tool-activity_summary

Parameterspathrequired

search_context

Search Context

Search desktop-context events bound to one exact normal meeting source. Docs: https://useminutes.app/docs/mcp/tools#tool-search_context

Parameterspathrequiredlimitqueryrequired

get_moment

Get Moment

Show the local rewind bound to one exact normal meeting source. Docs: https://useminutes.app/docs/mcp/tools#tool-get_moment

Parametersatpathrequiredafter_minutesbefore_minutes

get_screen_context

Get Screen Context

Retrieve up to three verified PNG screenshots bound to one exact normal meeting source, optionally nearest a timestamp. Docs: https://useminutes.app/docs/mcp/tools#tool-get_screen_context

Parametersatpathrequiredlimit

consistency_report

Consistency Report

Flag conflicting decisions and stale commitments across meetings using structured intent data. Meetings designated `sensitivity: restricted` are always excluded from this report. Docs: https://useminutes.app/docs/mcp/tools#tool-consistency_report

Parametersownerstale_after_days

get_person_profile

Person Profile

Get a relationship profile derived from live, policy-authorized meeting snapshots within the supported corpus bounds. Restricted meetings are excluded unless an operator launch grant plus include_restricted=true is durably audited. Docs: https://useminutes.app/docs/mcp/tools#tool-get_person_profile

Parametersnamerequiredinclude_restricted

research_topic

Research Topic

Research a topic across policy-authorized meetings within the supported corpus bounds. Restricted meetings are excluded. An override requires an operator launch grant plus include_restricted=true and is durably audited. Docs: https://useminutes.app/docs/mcp/tools#tool-research_topic

Parameterstypequeryrequiredsinceattendeeinclude_restricted

get_meeting

View Meeting

Get a full meeting transcript with speaker overlays. A restricted meeting returns a stub. Full access requires an operator launch grant plus include_restricted=true and is durably audited. Docs: https://useminutes.app/docs/mcp/tools#tool-get_meeting

Parameterspathrequiredinclude_restricted

process_audio

Process Audio

On macOS and Linux, process a bounded WAV file from the Minutes inbox or Downloads through the transcription pipeline. Compressed/private containers and Windows fail closed without reading audio. Retained meeting-library audio is unavailable to agent surfaces. Docs: https://useminutes.app/docs/mcp/tools#tool-process_audio

Parameterstypetitlelanguagefile_pathrequired

add_note

Add Note

Add a note to the current active recording. Notes are timestamped and included in that recording's meeting summary. Existing meeting files cannot be mutated from this assistant tool. Docs: https://useminutes.app/docs/mcp/tools#tool-add_note

Parameterstextrequired

track_commitments

Track Commitments

List open and stale action items and explicit intent commitments from live meeting frontmatter. Optionally filter by person. Answers: 'What did I promise Sarah?' or 'What's overdue?' Meetings designated `sensitivity: restricted` never enter this live-source view. Docs: https://useminutes.app/docs/mcp/tools#tool-track_commitments

Parametersperson

relationship_map

Relationship Map

Show contacts with relationship scores, meeting frequency, and losing-touch alerts from the bounded process-private graph projection. Restricted meetings never enter the projection. Docs: https://useminutes.app/docs/mcp/tools#tool-relationship_map

Parameterslimit

start_dictation

Start Dictation

Start dictation mode. Speak naturally — text accumulates across pauses and the combined result is written when dictation ends. Runs until stop_dictation is called or silence timeout. Docs: https://useminutes.app/docs/mcp/tools#tool-start_dictation

Parameterslanguage

stop_dictation

Stop Dictation

Stop the current dictation session. Docs: https://useminutes.app/docs/mcp/tools#tool-stop_dictation

Takes no parameters.

list_voices

Voice Profiles

List active voice enrollments for speaker identification. Shows who has been enrolled, sample count, and model version. Docs: https://useminutes.app/docs/mcp/tools#tool-list_voices

Takes no parameters.

confirm_speaker

Confirm Speaker

Compatibility registration for speaker confirmation. Agent-controlled mutation is intentionally unavailable; confirm in the Minutes app or a human CLI session so identity changes cannot race policy authorization. Docs: https://useminutes.app/docs/mcp/tools#tool-confirm_speaker

Parametersnamerequiredmeetingrequiredspeaker_labelrequired

add_agent_annotation

Add Agent Annotation

Append attributed agent commentary as an agent.annotation event. This never edits meeting markdown/frontmatter and is rejected unless the agent_id is allowed in ~/.minutes/agents.allow. Docs: https://useminutes.app/docs/mcp/tools#tool-add_agent_annotation

Parametersbodyrequiredtoolssubkindagent_idrequiredcitationsconfidencemeeting_idprovenancespan_end_msmeeting_pathspan_start_ms

get_agent_annotations

Get Agent Annotations (Unavailable)

Compatibility name only: unavailable in MCP because an annotation's source pointer and body are both author-supplied, so revalidating the pointer cannot bound what the body discloses. Docs: https://useminutes.app/docs/mcp/tools#tool-get_agent_annotations

Parameterslimitagent_idmeeting_idmeeting_path

get_meeting_insights

Get Meeting Insights

Query structured insights extracted from meetings, decisions, commitments and questions with confidence levels. Each insight records a path to the meeting it was derived from; that path is resolved to a meeting in the live corpus, and the resolved meeting is re-read from disk and re-verified against the live sensitivity policy before the insight is released. A path that cannot be resolved into this corpus is withheld. Released records carry the source title and path as they were recorded, which may name a location outside this corpus. Withheld records are reported as a partial view rather than an empty one. Docs: https://useminutes.app/docs/mcp/tools#tool-get_meeting_insights

Parameterskindlimitsinceconfidenceparticipantactionable_onlyinclude_restricted

start_copilot

Start Copilot

Start the independent Minutes real-time copilot for a goal. This launches `minutes copilot start`; MCP does not run model inference, own capture, or need to stay connected for the engine to produce nudges. The stdout surface is recommended for complete structured nudge observation. Docs: https://useminutes.app/docs/mcp/tools#tool-start_copilot

Parametersgoalrequiredsurface

stop_copilot

Stop Copilot

Request that the active Minutes copilot stop. This invokes `minutes copilot stop` and never stops recording or live transcription. Calling it while no copilot is active returns a calm not-active status. Docs: https://useminutes.app/docs/mcp/tools#tool-stop_copilot

Takes no parameters.

copilot_status

Copilot Status

Read the current operational copilot state from the strict `minutes copilot status --json` contract. This is observation only and returns a clear Off/not-active payload when no engine is running. Docs: https://useminutes.app/docs/mcp/tools#tool-copilot_status

Takes no parameters.

read_copilot_nudges

Read Copilot Nudges

Read nudges observed from the active real CLI copilot stream. Use cursor (or a numeric since value) for lossless delta reads; since also accepts durations such as '5m'/'30s' and ISO timestamps. MCP never generates nudges itself. Docs: https://useminutes.app/docs/mcp/tools#tool-read_copilot_nudges

Parameterslimitsincecursor

start_live_transcript

Start Live Transcript

Start real-time transcription. If a recording is already running, it already includes a live transcript — use read_live_transcript to read it. Runs until stop is called. Docs: https://useminutes.app/docs/mcp/tools#tool-start_live_transcript

Parameterslanguage

read_live_transcript

Read Live Transcript

Read the live transcript — works during both recordings and live transcript sessions. Use 'since' to get new finalized lines after a cursor (line number) or time window (e.g., '5m', '30s'). Set include_current for one fresh, clearly provisional current-speech draft. Use 'status' mode to check if a session is active. Docs: https://useminutes.app/docs/mcp/tools#tool-read_live_transcript

Parameterssincestatus_onlyrelay_cursorinclude_current

ingest_meeting

Ingest Meeting

Extract facts from a meeting and update the knowledge base (person profiles, log, index). Requires [knowledge] to be configured in config.toml. Uses structured frontmatter data only by default (zero hallucination risk). Set engine to 'agent' for richer LLM-based extraction. Docs: https://useminutes.app/docs/mcp/tools#tool-ingest_meeting

Parametersallpathdry_run

resummarize_meeting

Resummarize Meeting

Re-run the AI pass (summary, action items, decisions) on an edited meeting or memo. Preview by default: returns the regenerated content WITHOUT writing — note the summarization model IS still invoked (cost applies even in preview). Set apply=true to write the file (a timestamped backup is created and derived views — graph, search index, vault, QMD — refresh automatically). User edits outside AI-owned sections are never touched; checked action items and decision notes are carried forward by the merge. Docs: https://useminutes.app/docs/mcp/tools#tool-resummarize_meeting

Parameterspathrequiredapplyengineingesttemplateinclude_restricted

knowledge_status

Knowledge Status

Reconcile persistent meeting derivatives and show the privacy-safe knowledge-base status. This cleanup/status tool cannot create or register an external index. Docs: https://useminutes.app/docs/mcp/tools#tool-knowledge_status

Takes no parameters.

Version history

22
  1. v0.32.1LatestNov 5, 2026
  2. v0.32.0Nov 3, 2026
  3. v0.31.1Oct 29, 2026
  4. v0.30.10Oct 22, 2026
  5. v0.30.9Oct 21, 2026
  6. v0.30.8Oct 21, 2026
  7. v0.30.7Oct 20, 2026
  8. v0.30.6Oct 20, 2026
  9. v0.30.5Oct 19, 2026
  10. v0.30.4Oct 18, 2026
  11. v0.30.2Oct 17, 2026
  12. v0.30.1Oct 16, 2026
  13. v0.30.0Oct 15, 2026
  14. v0.29.1Oct 14, 2026
  15. v0.29.0Oct 13, 2026
  16. v0.28.2Oct 9, 2026
  17. v0.28.1Oct 7, 2026
  18. v0.28.0Oct 7, 2026
  19. v0.27.2Oct 1, 2026
  20. v0.27.1Oct 1, 2026
  21. v0.27.0Sep 26, 2026
  22. v0.26.3Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts