Ghostmic
БесплатноНе проверенSilent meeting transcription for Claude. No bot joins the call. No data leaves your Mac.
Описание
Silent meeting transcription for Claude. No bot joins the call. No data leaves your Mac.
README
Your meetings, transcribed invisibly. No bot. No cloud. No one knows.
Give Claude live context from your Zoom calls — everything runs locally on your Mac, nothing shows up in the participant list.
The problem
Every meeting transcription tool puts a bot on your call:
Fathom: 👤 👤 👤 🤖 "Fathom Notetaker joined"
Otter: 👤 👤 👤 🤖 "Otter.ai joined"
Fireflies: 👤 👤 👤 🤖 "Fireflies.ai Notetaker joined"
ghostmic: 👤 👤 👤 (nothing. it's already recording.)
Your conversations go to their cloud. Everyone on the call sees the bot. People change how they talk.
ghostmic captures audio directly from the Zoom process via CoreAudio. No virtual drivers, no audio routing, no setup. Nobody knows. Nothing leaves your machine.
How it works
- Invisible. No bot joins the call. CoreAudio Process Taps capture Zoom audio at the system level — no virtual drivers, no speaker changes.
- Local transcription. whisper.cpp (large-v3-turbo) with Metal GPU, model resident in memory via whisper-server. Canned-outro and sound-annotation filtering tuned on 1300+ real transcripts.
- Live to Claude. Transcript updates every ~15 seconds. Ask Claude anything mid-meeting.
- Zero config. No BlackHole, no Multi-Output Device, no Zoom speaker settings. Plug in any headphones, switch anytime — recording never breaks.
- Auto-detection. Background daemon detects Zoom calls. No buttons to press.
- Speaker labels.
[You],[Remote]and[Both], from how far each channel sits above its own noise floor — so the labels survive a volume or mic-gain change mid-call. Mic auto-silences when you're muted in Zoom — private conversations stay private. - Menu bar app. Ghost icon with pause/stop controls, live timer, settings.
The AI pipeline
Zoom Audio
|
v
CoreAudio Process Tap (captures Zoom by bundle ID — no virtual driver)
|
v
Vocabulary biasing (participant names + your glossary as the initial prompt)
|
v
whisper.cpp large-v3-turbo (Metal GPU, model resident via whisper-server)
|
v
Rule-based cleanup (canned outros, sound annotations, repetition)
|
v
LLM repair pass (only on words whisper was unsure of; guarded)
|
v
Transcript file ──> server.py (MCP) ──> Claude Desktop / Claude Code
The LLM repair pass
A Qwen3-4B stage runs after transcription. Turn it off with LLM_POST=0,
pick a different model with LLM_MODEL.
Model size matters here more than it usually does. On three garbled product names — "Майндменеджер", "Клод Кот", "ресерчер" — Qwen3-0.6B and Qwen3-1.7B changed nothing at all, while Qwen3-4B returned MindManager, Claude Code and Researcher. Mapping a misheard word onto the right term needs enough model to hold the context. 4B costs 2.1 GB on disk, about 1 GB resident and ~2s per chunk, and it only runs on the chunks whisper was unsure of.
It is deliberately quiet. It is only called on chunks where whisper reported low confidence in a word — with nothing doubtful there is nothing to repair, and a model asked to improve a correct sentence tends to delete the last one. When it does run, the doubtful words are named in the prompt so it knows where to look, and its output has to get past a guard before it replaces anything:
- a lost or altered number → rejected
- length outside 0.92–1.15× the original → rejected (this is what catches truncation, the most common failure)
- normalised edit distance over 0.35 → rejected
- a known hallucination phrase → rejected
Every accepted edit is printed to watcher.log with the text before and after,
so you can see what it is doing rather than trust that it is doing something.
Measured, so you know what you are getting. tools/measure_llm_post.py
runs the production prompt through the production model over real chunks from
your own archive — pass --model to compare candidates on the same material.
Install
curl -fsSL https://raw.githubusercontent.com/m0rvayne/ghostmic/main/install.sh | bash
One command. Sets up everything: Python venv, whisper.cpp model, Claude Desktop config, LaunchAgent, menu bar indicator. No audio drivers to install.
Then restart Claude Desktop (Cmd+Q → reopen). Done.
Usage
Join a Zoom call. ghostmic detects it and starts recording. In Claude:
- "What are they talking about?"
- "Summarize the last 10 minutes"
- "Make meeting notes" — structured output with topics, decisions, action items
- "Search meetings for 'budget'"
Configuration
Settings available in the menu bar indicator (ghost icon → ⚙ Settings):
| Setting | Default | Description |
|---|---|---|
| Whisper Model | large-v3-turbo |
Lists the models present in ~/.ghostmic/models |
| Speaker Labels | On | [You] / [Remote] / [Both] diarization |
| Language | ru |
Forced language (set auto for auto-detect) |
| Save Path | ~/.ghostmic/transcripts |
Where transcripts are saved |
Glossary
Names and domain terms go in ~/.ghostmic/config.json:
{ "glossary": ["Claude Code", "MCP", "майнд-карта", "Researcher"] }
These are fed to whisper as an initial prompt — a bare comma-separated list, deliberately — which biases decoding toward the spelling you want. It is the difference between
without: «Мы обсудили Клод Кот и Майнд Карту в Ресерчере»
with: «Мы обсудили Claude Code и Майнд-карту в Researcher»
Participant names detected from the Zoom window are appended automatically, and go last because the end of the prompt carries the most weight. Only the last 224 tokens are used, so keep the list to terms whisper actually gets wrong. Edits take effect on the next chunk — no restart.
Keep it short for a second reason. A prompt becomes context the decoder can continue instead of transcribing, which is a documented whisper behaviour: an earlier version opened with a sentence and whisper wrote that sentence into 232 transcript lines. The prompt is a bare list now, and leading echoes of it are stripped from the output, but a long list is still more surface for this.
Why ghostmic vs competitors
| Fathom / Otter / Fireflies | ghostmic | |
|---|---|---|
| Visibility | Bot joins the call, everyone sees | Nothing. Invisible. |
| Privacy | Audio goes to their cloud | Never leaves your Mac |
| Audio setup | None (bot captures) | None (CoreAudio tap) |
| Headphone switching | N/A | No impact on recording |
| Transcription | Cloud ASR | whisper.cpp large-v3-turbo, on-device |
| Claude integration | None | Native MCP — live transcript in Claude |
| Cost | $15-30/month | Free, open source |
Limitations
- Zoom only. Google Meet and Teams support planned.
- macOS 14.4+. Requires CoreAudio Process Taps API.
- ~15 second latency. Audio chunks processed every ~10 seconds + AI pipeline.
- Two-party speaker labels. Cannot distinguish multiple remote speakers by voice.
- The LLM pass is a repair, not a rewrite. It fixes words whisper flagged as uncertain; it does not turn speech into polished prose.
Troubleshooting
Screen Recording permission — macOS will ask once to grant permission for audio capture. Go to System Settings → Privacy & Security → Screen Recording.
Transcript is empty — Check tail -50 ~/.ghostmic/watcher.log for errors.
Microphone permission — System Settings → Privacy & Security → Microphone → enable Terminal.
Update / Uninstall
cd ghostmic && bash update.sh # Update
bash uninstall.sh # Clean removal
Contributing
See CONTRIBUTING.md.
License
Установить Ghostmic в Claude Desktop, Claude Code, Cursor
unyly install ghostmicСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add ghostmic -- uvx --from git+https://github.com/m0rvayne/ghostmic ghostmicПошаговые гайды: как установить Ghostmic
FAQ
Ghostmic MCP бесплатный?
Да, Ghostmic MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Ghostmic?
Нет, Ghostmic работает без API-ключей и переменных окружения.
Ghostmic — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Ghostmic в Claude Desktop, Claude Code или Cursor?
Открой Ghostmic на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Fetch
Web content fetching and conversion for efficient LLM usage.
Roblox Studio
Enables AI coding tools to control Roblox Studio for workspace exploration, instance manipulation, and script management. It provides tools for playtesting, sce
автор: paralovOpencode Omniroute Plugin
OpenCode plugin for the OmniRoute AI Gateway. Drives dynamic model discovery, /connect auth flow, and multi-instance OmniRoute providers via the official @openc
автор: GitHub ActionsAWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzMCP-Agent
A simple, composable framework to build agents using Model Context Protocol by [LastMile AI](https://www.lastmileai.dev)
автор: lastmile-aiSpring AI MCP Client
Provides auto-configuration for MCP client functionality in Spring Boot applications.
mcp.natoma.ai
A Hosted MCP Platform to discover, install, manage and deploy MCP servers by [Natoma Labs](https://www.natoma.ai)
MCPHub
Website to list high quality MCP servers and reviews by real users. Also provide online chatbot for popular LLM models with MCP server support.
Compare Ghostmic with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai
