minutes

by silverstein

1.3k 3.3k downloads Not rated yet MIT

About

Every meeting, every idea, every voice note — searchable by your AI. Open-source, privacy-first conversation memory layer.

Details

License
MIT

Explore

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name minutes
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository


Step 1: Create a sync folder — pick one that syncs between your phone and desktop:

bash

claude plugin marketplace add silverstein/minutes
claude plugin install minutes

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

stop_recording

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

get_status

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

list_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

list_meetings

List recent meetings and voice memos. 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

search_meetings

Search meeting transcripts and voice memos. 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

activity_summary

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

search_context

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

get_moment

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

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

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

get_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

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

get_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

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

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

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

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

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

stop_dictation

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

list_voices

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

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

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

get_agent_annotations

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

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

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

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

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

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

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

read_live_transcript

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

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

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

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

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

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

McpServers

{
    "minutes": {
        "command": "npx",
        "args": [
            "-y",
            "minutes-mcp"
        ]
    }
}

GitHub stars
License: MIT
crates.io

Open-source conversation memory.   useminutes.app

Agents have run logs. Humans have conversations. minutes captures the human side — the decisions, the intent, the context that agents need but can't observe — and makes it queryable.

Record a meeting. Capture a voice memo on a walk. Ask Claude "what did I promise Sarah?" — and get an answer. Your AI remembers every conversation you've had.

Minutes is not just a meeting-notes app. It is local conversation infrastructure for agents: audio capture, transcripts, decisions, commitments, people, and provenance exposed through plain files, CLI commands, MCP tools, and live transcript streams.

> Own every conversation you've ever had. Cloud meeting tools rent your own conversations back to you. Minutes writes every meeting to ~/meetings/ as plain markdown, which every AI you use (Claude Code, Codex, Gemini CLI, Cursor, OpenCode, Pi) reads directly. No SDK. No API key. No vendor to outlive. Ten years from now, grep still works on your corpus.  For agents →  ·  Frontmatter schema →

<p align="center">
minutes demo — record, dictate, phone sync, AI recall
</p>

Works with

<p align="center">
<a href="#claude-code-plugin">Claude Code</a> &bull;
<a href="#any-mcp-client-claude-code-codex-gemini-cli-claude-desktop-or-your-own-agent">Codex</a> &bull;
<a href="#opencode-cli">OpenCode</a> &bull;
<a href="#pi-coding-agent">Pi</a> &bull;
<a href="#any-mcp-client-claude-code-codex-gemini-cli-claude-desktop-or-your-own-agent">Gemini CLI</a> &bull;
<a href="#any-mcp-client-claude-code-codex-gemini-cli-claude-desktop-or-your-own-agent">Claude Desktop</a> &bull;
<a href="#mistral-vibe">Mistral Vibe</a> &bull;
<a href="#vault-sync-obsidian--logseq">Obsidian</a> &bull;
<a href="#vault-sync-obsidian--logseq">Logseq</a> &bull;
<a href="#phone--desktop-voice-memo-pipeline">Phone Voice Memos</a> &bull;
Any MCP client
</p>

Quick start

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.

Videos about minutes

Relevant YouTube tutorials, setups, and demos