## Get your first meeting into memory
Install meeting capture, enable audio access, connect transcription — then check that your agent can retrieve what was said. Five steps, in order; each depends on the last.
-
Step 1 · Install meeting capture
$ brew install contorch/tap/meeting-captureA prebuilt, Developer ID-signed universal binary — no Xcode build. Don't have Homebrew? Install it first, finish its “Next steps,” then come back. On first run
meeting-capturesets up its own Python environment; that takes a minute. -
Step 2 · Allow system-audio capture
Open System Settings → Privacy & Security → Screen & System Audio Recording, click +, and add the installed sysaudio binary. Enable it under System Audio Recording Only too. Grant this to sysaudio, not to Terminal.
$ echo "$(brew --prefix)/opt/meeting-capture/bin/sysaudio"Copy the printed path. In the Settings file picker press ⌘⇧G, paste it, and select the file. (Apple Silicon:
/opt/homebrew/opt/meeting-capture/bin/sysaudio.)On macOS 15+: your first recording pops a Microphone prompt for sysaudio. Click Allow to capture your own voice as
Me. Without it your side is missing. macOS 13–14 capture system audio only.Grants survive upgrades — the binary carries a stable Developer ID signature. Capture stopped after a macOS update? Re-check this pane and re-add sysaudio if the grant disappeared.
-
Step 3 · Add your Gemini API key required for transcription
Create a key in Google AI Studio. Meeting audio is sent to Gemini to produce the transcript; free-tier availability and paid usage depend on your Google project (Gemini API terms). Write the key to a file — a background daemon won't see a variable you exported in one shell.
$ mkdir -p ~/.config/google && touch ~/.config/google/key $ chmod 600 ~/.config/google/key $ nano ~/.config/google/keyPaste only the key. Save with ⌃O, Enter, then exit with ⌃X.
GOOGLE_API_KEY/GEMINI_API_KEYin the environment also work. -
Step 4 · Start it and verify a real recording
$ meeting-capture install # auto-start at login (launchd) $ meeting-capture doctor # binaries, permissions, key, daemonFix anything
doctorreports. Then join a short test call, allow the microphone prompt, have both sides say something, and hang up. Check:$ meeting-capture last $ open ~/transcriptsSuccess: a new Markdown transcript contains the test conversation. On macOS 15+, both
MeandThemlines appear. -
Step 5 · Connect agent memory
Capture writes transcripts; context-orchestrator indexes them and serves them to your agent over MCP, along with notes, sources, and saved lessons. It's a separate install:
$ git clone https://github.com/contorch/context-orchestrator.git $ cd context-orchestrator && ./setup.shThis registers the MCP server with Claude Code and installs the transcript watcher. Restart Claude Code, then ask:
Search contorch for my latest test meeting. What did we say? Cite the transcript.
That answer, with a real citation, is the finish line. A copied command isn't a successful install — a retrieved transcript is.
Advanced: install the full suite from source
$ curl -fsSL https://contorch.com/install | bash
Installs context-orchestrator, meeting-capture, the menu-bar monitor, and the Claude Code auto-context hook in one go. It currently builds meeting-capture from source and needs the Xcode Command Line Tools. Audio permissions and a Gemini key are still required. If you already installed capture with Homebrew, use the steps above instead — this path won't preserve the signed binary.
## Claude Code memory that includes your meetings
Claude Code remembers what happens in the editor. contorch adds what happened outside it.
A decision made on a call should be available in your next coding session. contorch captures
the conversation, indexes the transcript on your Mac, and makes it searchable from Claude Code
alongside your notes, sources, and saved lessons — complementing Claude's own CLAUDE.md
and auto-memory, not replacing them.
With the auto-context hook installed, the top hits are loaded into every prompt without asking. Without it, any MCP-connected agent can still search explicitly.
Set up contorch for Claude Code →> what did we decide about the retry fix? cite the meeting.
Ship it tonight behind a flag; staging needs the flag service up first. → meeting-2026-07-11.md, 10:02
> pick up the auth-refactor work
Loads the task manifest — 3 sources, 2 meetings, 1 lesson — and starts where you stopped: the token-rotation PR.
> why does staging keep failing?
A lesson saved on Jun 12: staging deploys need the flag service up first. → repo knowledge, context-orchestrator
## Meetings are the start. Keep the rest, too.
Four inputs to one memory layer, all on your disk. Meetings are captured once set up; notes and documents are added by you; lessons are saved through your agent.
Conversations captured
Your meetings, saved as searchable transcripts.
Take the call like always — no bot joins. contorch notices your mic go live and captures
system audio and, on macOS 15+, your microphone, labeled Me and Them.
Review the transcript when exact wording or numbers matter.
Them can we ship it before the freeze?
Me done — it ships tonight.
Docs & links you add
The spec lives with the task.
Attach files, PRs, dashboards, and threads to the work they belong to — one call, and every future session finds them.
+ add_source auth-spec-v2.pdf → auth-refactor
Decisions & notes you add
Say it once, never again.
Write “JWT ships behind a flag” one time. Stop re-explaining your project's state to every fresh chat window.
+ note "JWT rotation ships behind a flag"
Lessons via your agent
Hard-won knowledge stays won.
When an agent works out your test command or a deploy gotcha, it saves the lesson. The next session on this Mac doesn't rediscover it.
+ lesson "staging needs the flag service up first"
## Local memory. Cloud transcription.
What stays on your Mac, and what leaves it.
Stays on your Mac
- Transcripts — Markdown in
~/transcripts, yours to grep, edit, or delete. - Notes, sources, tasks, and lessons — SQLite plus a local vector index.
- Search — served to agents from
127.0.0.1, not from a server of ours. - No contorch account. No cloud sync.
Leaves your Mac
- Meeting audio is sent to Google's Gemini API to produce the transcript. contorch deletes its temporary local audio afterward; handling on Google's side is governed by the Gemini API terms (unpaid and paid tiers differ).
- Context an agent retrieves becomes available to that agent and may be processed by its model provider.
- Cost: contorch is free and open source. Gemini transcription is about $0.005 per meeting-minute per channel at list prices — roughly $0.60 for a two-sided hour — beyond any free tier.
Open source, Apache-2.0, on GitHub — read every line that can hear you. (This website itself loads Google Fonts and Google Analytics.)
## Before your first call
- Which Macs?
- macOS 13 or later (ScreenCaptureKit). Own-voice
Mecapture needs macOS 15+; on 13–14 you get the other side only. Apple Silicon and Intel. - My voice is missing from transcripts.
- The Microphone grant for sysaudio was denied or never prompted. Check
Privacy & Security → Microphone, then
meeting-capture doctor. - Can I pause it?
meeting-capture pauseandmeeting-capture resume. It only records while another app is using your microphone — no call, no capture.- What if I skip the Gemini key?
- Nothing is transcribed. Notes, sources, tasks, lessons, and search still work, fully local.
- Another Mac?
- There's no sync. Transcripts are plain files — copy
~/transcriptsover and the watcher indexes them. - Which agents?
- Anything that speaks MCP. Claude Code is what
setup.shregisters today; the auto-context hook is Claude Code-only.
Install on macOS
$ brew install contorch/tap/meeting-capture