Call Copilot

io.github.AnisurRahmann由 GitHub 帳號 AnisurRahmann 發布v0.4.3更新於 Nov 3, 2026

Search and read locally-recorded meeting transcripts over stdio. Read-only, no network.

已驗證STDIO僅桌面知識與記憶溝通與協作

概覽

AI 產生的概覽

唯讀 MCP 伺服器,讓助理在 Mac 上列出、讀取並以關鍵字搜尋本機錄製的會議逐字稿。

可以做什麼
  • 列出已錄製的工作階段,並依日期縮小範圍找出某場會議
  • 讀取指定工作階段的完整逐字稿
  • 以關鍵字跨逐字稿搜尋,回傳符合的行並標註工作階段 id 與時間戳
  • 回答完全在本機完成:伺服器嚴格唯讀,不發出任何網路請求
適用情境
如果你已在 macOS 上用 Call Copilot 的 rec 指令錄製會議,並希望助理回答會中說了什麼、列出過往會議與時長,或調出完整逐字稿,且每個回答都引用工作階段 id,就適合使用。
執行需求
以本機 stdio 程序執行,指令為 rec mcp(PyPI 套件 call-copilot,可用 uvx 啟動)。需要 macOS 14.2 以上版本,以及由 rec 工具產生的既有錄音;搜尋索引在 ~/.local/share/rec/index.db 視需要建立。不需要 API 金鑰、帳號或網路存取。
安裝前請注意
它會把錄製的會議逐字稿(可能包含其他與會者)提供給你所連接的助理用戶端;錄音取得同意由使用者自行負責。首次使用某個 Whisper 模型時會從 Hugging Face 下載權重。伺服器本身唯讀,但底層工具會錄製音訊並寫入檔案。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Call Copilot,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Call Copilot

[call-copilot MCP server] [Call Copilot MCP server]

One thing. Done really well. Record meetings. Save transcripts. Don't break audio.

Call Copilot is a terminal command (rec) that records your meeting audio and, when you stop it, transcribes locally and saves a clean markdown transcript. Everything runs on your machine — no cloud, no API keys, no account. Audio and transcripts never leave the computer.

[Call Copilot demo]

$ rec setup         # one-time: verify macOS + grant capture permission$ rec start         # starts recording, you keep working$ rec stop          # stops, transcribes, saves markdown$ rec list          # shows past recordings

How it captures audio (no BlackHole, no Multi-Output Device)

By default, rec captures both the microphone (your voice) AND system audio (other participants / anything apps play) — so a real meeting where you speak gets recorded, not just the audio coming out of your speakers. Both sources are tapped directly via Apple's Core Audio taps API (macOS 14.2+) using the audiotap library. There is:

  • no virtual audio driver to install (no BlackHole),
  • no Multi-Output Device to create in Audio MIDI Setup,
  • no system output device to switch and restore,
  • and therefore no silent-recording failure that the old driver-based approaches produce when routing breaks.

The mic and system streams are recorded as two separate WAVs (each at its own true rate), transcribed separately, and merged into one transcript with [Mic] / [System] labels so you can tell who said what. Want just one source? rec start --mic-only or --system-only.

Grant capture permission (one-time, per terminal app)

macOS ties capture permission to the app you run rec from (Terminal, iTerm, Warp, VS Code, …). You need two grants:

  1. Microphone (your voice): System Settings → Privacy & Security → Microphone → enable your terminal app.
  2. System audio (grouped under Screen Recording on macOS 14.2+): System Settings → Privacy & Security → Screen Recording → enable your terminal app, then quit and reopen it (required for the change to take effect).

Until mic is granted, rec start records system audio only and skips the mic (it tells you so). rec setup checks the current mic-permission status.

After rec stop (or Ctrl+C from rec start), the recording(s) are transcribed locally with faster-whisper (CPU, int8 — no API, no data leaves your machine) and written to a markdown transcript.

recording.wav ──> faster-whisper (local, free) ──> transcript.md

Requirements

  • macOS 14.2 or later (Sonoma — the Core Audio process taps API rec records through landed in 14.2). Apple Silicon recommended. Intel works.
  • Python 3.11+ only needed for the pipx install; the Homebrew formula brings its own.

No virtual audio driver (no BlackHole), no Multi-Output Device, no manual Audio MIDI Setup. The tap reads system output directly. rec checks the macOS version itself and refuses to run below 14.2 with a one-line message — you don't have to guess.

Install

Homebrew (recommended — no Python to manage):

bash
brew install AnisurRahmann/tap/call-copilot

pipx (if you prefer a plain Python install, no Homebrew):

bash
pipx install call-copilot

Either way you get a rec command on your PATH. Then jump to One-time setup.

Using rec on a machine below macOS 14.2 prints Error: rec requires macOS 14.2 or later ... and exits — no traceback, no mystery. See docs/HOMEBREW.md if you're setting up the tap yourself.

Recording consent & privacy

Call Copilot records audio from your meetings, which may include other participants. Recording laws vary by jurisdiction and many require the consent of everyone being recorded (one-party vs. all-party consent). Obtaining that consent is your responsibility — check your local laws and your organization's policy before recording.

On the technical side, your data stays put:

  • Transcription runs 100% locally with faster-whisper (CPU, int8) — no API, no cloud.
  • Audio and transcripts never leave your machine. The only network access is the first run of a given Whisper model, which downloads its weights from Hugging Face; after that it's fully offline.
  • Recordings live under ~/.local/share/rec/sessions/ (XDG data home), outside any repo.

One-time setup

bash
rec setup

Verifies your macOS version, that the audiotap library + its bundled dylib load, saves your config, and tells you about the one-time capture permission prompt.

Recording a meeting

bash
rec start                          # mic + system (default); Ctrl+C to stop & transcriberec start --system-only            # just what apps play (not your voice)rec start --mic-only               # just your voice (not system audio)rec list                           # browse past sessionsrec transcribe 2026-07-27_14-30-00 --model medium    # re-transcribe at higher qualityrec diagnose 2026-07-27_14-30-00                      # bundle debug info for an AI agent

By default rec start records both your microphone and system audio; the transcript labels each line [Mic] or [System]. Use --system-only / --mic-only to narrow.

rec start shows a live indicator while recording:

● REC  2026-07-28_14-30-00elapsed 03:47   size 18.2 MBpress Ctrl+C to stop & transcribe

Press Ctrl+C when your meeting ends — it stops the recording and transcribes in the same command, then prints the transcript path. One command, start to finish.

Want the old background behavior instead? rec start --detach spawns the recorder and exits immediately; stop it later from another terminal with rec stop (or check progress with rec status).

Tip: if a transcript comes back empty, the recording was silent — nothing was playing, or the capture permission was revoked. rec start (and rec stop) warn you about this immediately, and rec diagnose <session> bundles the audio levels + logs.

Use your meetings from Claude Code

rec ships an MCP server (the open protocol Claude Code, Cursor, Zed, Cline, and other AI tools speak). Point any MCP client at your locally-recorded transcripts and ask questions about them — answers come back with the session id cited, so you can check the exact moment. Nothing leaves your machine: the server is strictly read-only and makes no network calls.

bash
rec mcp install     # writes the server entry into Claude Code's config

Then restart Claude Code and ask, for example:

  • "What did the client actually ask for on Tuesday's call?" — it searches the transcripts, finds the line, and cites the session id (e.g. 2026-07-28_12-25-20) with a timestamp.
  • "List my meetings from last week with their durations." — it lists sessions, narrowing by date.
  • "Show me the full transcript of the standup where we discussed the API migration." — it finds the session, then reads the whole transcript.

Three tools are exposed: list_sessions (find a meeting by date), get_session (read a whole transcript), and search_transcripts (find specific lines across long transcripts — pass it keywords like pricing discount, not a full sentence). The search index lives at ~/.local/share/rec/index.db; it builds lazily on first search and is a disposable cache — rec index refreshes it, rec index --rebuild recreates it from scratch.

Other MCP clients (Cursor, Zed, Cline, …)

rec mcp install prints a config block that works in any MCP client. For Cursor, paste it into .cursor/mcp.json; for Zed, into settings.json under mcp_servers. It looks like:

json
{  "call-copilot": {    "type": "stdio",    "command": "rec",    "args": ["mcp"]  }}

You can also run the server directly with rec mcp (stdio transport) if a client prefers a raw command.

Official MCP Registry

Call Copilot is listed on the official MCP Registry under io.github.AnisurRahmann/call-copilot. Any MCP client that speaks the registry can discover and add it from there. The registry entry runs the server with:

bash
uvx --from call-copilot rec mcp

(The PyPI package is call-copilot; the command it installs is rec, so the server is launched as rec mcp.)

Browser UI

rec web opens a local browser tab — a read-mostly viewer for sessions you've already recorded, plus Start/Stop controls. It's modelled on the qBittorrent / Transmission web UI: a loopback HTTP server serves a single-page app that drives the same session store the CLI uses. The terminal can't show a live capture meter, a seekable audio player beside its transcript, or a session list you can skim in one glance — the browser can, so the UI exists for exactly those three things.

[rec web — session list]

[rec web — session detail with audio and transcript]

bash
rec setup            # one-time, in a terminal (the UI can't grant capture permission)rec web              # opens a browser tab at http://127.0.0.1:7717

From the tab you can browse sessions, play and seek the audio next to its transcript, search across every transcript, and Start/Stop a recording. Start calls the same recorder the CLI does; Stop queues transcription and the page polls until the transcript is ready. If no config is found, the Start button tells you to run rec setup in a terminal first.

The server binds to 127.0.0.1 only — the host is not configurable, by design (a local tool must not become an open transcript server). --port overrides the default port; --no-open skips the automatic browser tab.

What this is not. The UI is still not a real-time transcription surface — the transcript arrives after Stop, exactly as in the CLI, and there is still no cloud, no sync, and no account. Every action in the browser maps to a command that already exists; if a feature has no CLI equivalent, it is not in the UI.

Configuration

Stored at ~/.config/rec/config.json (XDG). Recordings live under ~/.local/share/rec/sessions/{id}/. Override the XDG roots with XDG_CONFIG_HOME / XDG_DATA_HOME if needed.

json
{  "sample_rate": 16000,  "channels": 1,  "whisper_model": "base",  "capture": "system",  "sessions_dir": "~/.local/share/rec/sessions"}

16 kHz mono float32 is Whisper's native input format — no resampling, smallest files (~7.5 MB/min), best transcription accuracy.

A note on sample rate (why your recordings play at the right speed)

audiotap's sample_rate parameter is not honored — the tap always delivers audio at your output device's native rate (typically 48 kHz), regardless of what we request. rec handles this transparently: the recorder measures the true capture rate when the tap starts and writes the WAV at that rate (so playback is the correct speed), and the transcriber resamples to 16 kHz before feeding Whisper (so transcription is accurate). You don't need to do anything; this section exists to explain the capture_sample_rate field in session.json (which may differ from the sample_rate in your config).

A note on VAD (voice activity detection)

Transcription runs without faster-whisper's Silero VAD pre-filter by default. The VAD is tuned for close-mic speech and aggressively rejects system-audio capture (speakers/headphones via a tap, which has a different character) — we've seen it discard 100% of a clearly-audible recording and return an empty transcript. Whisper's own no_speech_threshold handles silence adequately without that risk.

If you have clean close-mic input and want long silences skipped (faster, cleaner output), enable it per run:

bash
rec stop --vad              # VAD on for this transcriptionrec transcribe <id> --vad   # re-transcribe with VAD

Stack

ToolRole
audiotapCore Audio taps → captures system audio directly (macOS 14.2+)
soundfileStreams WAV chunks to disk (constant memory)
faster-whisperLocal speech-to-text (CPU int8)
rich + clickTerminal UI + CLI

Everything is free and open-source. Transcription runs 100% locally — no API cost, no data leaves the machine. (The first run of a given whisper model downloads its weights from Hugging Face; after that it's offline.)

Logging & debugging

Every activity — the audio tap lifecycle, chunk writes, transcription, formatting, each CLI decision — is logged. Logs flow to three destinations:

DestinationPathLevelWhat it's for
Console (stderr)your terminalWARNING*User-facing; clean by default
Global log~/.local/share/rec/logs/rec.logDEBUGMonitor surface — tail -f it
Session log~/.local/share/rec/sessions/<id>/recorder.logDEBUGPer-session post-mortem

* WARNING by default: -v → INFO, -vv → DEBUG, --quiet → CRITICAL, REC_LOG_LEVEL=DEBUG.

Every command failure is logged at ERROR with the reason + exit code; unexpected crashes include the full traceback.

Hand a session to an AI agent to debug

bash
rec list                                 # find the session idrec diagnose 2026-07-27_14-30-00        # → writes sessions/<id>/diagnose.mdrec diagnose 2026-07-27_14-30-00 --stdout | <your-ai-tool>   # pipe straight to an agent

The bundle contains the session metadata, the daemon's recorder.log, the global-log lines tagged with that session, the transcript if it exists, and the config — followed by a debugging checklist. (rec diagnose accepts a unique prefix too, e.g. 2026-07-27.)

Note on the recording loop: the audio callback runs on Core Audio's real-time thread and deliberately logs nothing — it copies each chunk to a queue and a writer thread does the disk I/O. The daemon logs only at tap start/stop and on signals.

Development

You only need this if you're hacking on rec itself. End users should use the Install commands above.

bash
git clone https://github.com/AnisurRahmann/call-copilot.git && cd call-copilotmake install          # creates .venv and installs `rec` in editable mode + dev depsmake test             # unit tests (offline — no audio device or model download needed)make run              # rec start, using the dev venv's rec

make install requires Python 3.11+ on your PATH (it pins python3.11 for the venv). For everything else — releasing, the Homebrew tap, code style — see CONTRIBUTING.md and docs/HOMEBREW.md.

Contributing

Issues and pull requests are welcome at github.com/AnisurRahmann/call-copilot. Please read CONTRIBUTING.md before opening a PR, and report security issues privately per SECURITY.md.

What this is NOT

  • Not a real-time transcription tool (transcription happens after you stop).
  • Not a meeting summarizer (just the transcript).
  • Not a Zoom/Meet plugin (it captures system audio generically).
  • Not cross-platform (macOS 14.2+ only).

License

MIT — see LICENSE. © Anisur Rahman.

來源:README.md,提交 b8355c0

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.4.3最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分