What it is
The Meeting Recorder is a component of the TATER agent that records the meetings you attend but don't host - the ones where you have no access to the host's transcript. It captures system audio (everyone else, via a WASAPI loopback) and your microphone (you) as two separate tracks, transcribes them entirely on your own machine with a local Whisper model, and turns the result into a TATER Meeting Record that your AI can mine for action items.
Why local
| Concern | How the Meeting Recorder handles it |
|---|---|
| Privacy | Audio is captured, mixed, and transcribed on the endpoint. No cloud speech service, no audio upload. |
| Cost | No per-minute transcription billing - the local Whisper model does the work on the CPU. |
| Meetings you don't host | Loopback capture records whatever you can hear, so you get a transcript even when the organizer's recording/transcript is off-limits. |
| Speaker attribution | The two-track split gives you free diarization: your mic = You, the system audio = Others. |
Recording a meeting
- Click the TATER agent tray icon β π Record Meeting. The recorder window opens, pinned above other windows.
- Press Record. A live indicator and elapsed timer show it's capturing.
- When the meeting ends, press Stop. The status changes to Transcribing locally⦠while Whisper processes the audio.
- A Review & save panel appears with the draft (see below).
- Adjust the details and click β Save to TATER - or Discard (the local transcript file is always kept either way).
You can also drive it entirely from the agent's local dashboard (the same window the tray opens).
Review & save
Nothing is auto-uploaded. You review every recording before it becomes a meeting record. The panel lets you confirm:
| Field | Notes |
|---|---|
| Link to a calendar event | The Outlook events that overlapped the recording, best match first (and pre-selected). Picking one adopts its subject as the title, its invitees as attendees, and its body as the notes, and links the recording to that event. Choose Don't link to an event to keep what you typed. |
| Title | Taken from the linked calendar event, or a timestamp default. Always editable — once you type your own, switching events won't overwrite it. |
| Attendees who were actually there | Comma-separated. Prefilled from the linked event's invitees so you can delete the no-shows — but only for smaller meetings. Past ~12 invitees it's left blank rather than claiming everyone invited attended; the complete invite list is stored on the meeting record either way. |
| Notes | Prefilled with the calendar invite's body (agenda and so on), with the Teams join boilerplate stripped. Edit freely. |
| Transcript preview | The speaker-tagged transcript, so you can confirm it captured cleanly before saving. |
| Metadata | Duration, segment count, speakers, and the local file path (with a reveal link to open it in the file browser). |
Saved recordings appear in the Recent recordings list with a β in TATER badge and quick links to the local file and the TATER meeting record.
Calendar matching
While you review a recording, the recorder lists the Outlook events that overlapped it (Microsoft Graph, app-only Calendars.Read) and pre-selects the best match. The event you pick supplies the subject, organizer, attendees, and Teams meeting id for the meeting record. If no event overlapped - or the grant isn't in place - the recording still saves with your own title; nothing is ever blocked on the calendar.
Calendars.Read - get the app right. The recorder resolves Graph credentials from the tenant's stored tenant credential (Manage › Tenant Credentials) - not the sign-in / MSAL app registration. Grant application Calendars.Read to that app, then admin-consent it. Granting it to the wrong app looks identical to "no event matched": the lookup fails silently by design, so nothing is logged and no error is shown. If matching never works, check the grant on the tenant-credential app first. See Azure app registration.
What happens after you save
The transcript lands as a TATER Meeting Record with the transcript attached. From there, extraction (action items, decisions, summaries) happens in your own AI session via the TATER MCP server - Claude/Copilot pulls the transcript with get_meeting_transcript and writes tasks and decisions back with the standard MCP tools. TATER runs no server-side LLM; your AI subscription does the compute.
Finding your meetings later
My TATER › My Meetings lists every meeting you're connected to - ones you recorded with the agent, organized, attended, or were invited to - newest first, with a chip on each row saying which. Filter by relationship or search by title/organizer, and click through to the full record and transcript in Ops.
whoami /upn), stored on the record as recordedBy. That's also what guarantees you can always read your own recording under the default attendees-only visibility, even when it matched no calendar event and lists no attendees.
Privacy & consent
Enabling it (administrators)
The recorder is opt-in and Windows-only. It ships as a sidecar (tater-meetingrec.exe + runtime DLLs) bundled in the agent MSI; the Whisper model is downloaded on first enable (SHA-verified) rather than shipped in the installer.
Enable it per machine/org in the agent's config.json:
{
"meetingRecorderEnabled": true,
"meetingRecorderModelUrl": "https://sttaterspeedtest.z13.web.core.windows.net/meetingrec/ggml-base.en-q5_1.bin",
"meetingRecorderModelSha256": "4baf70dd0d7c4247ba2b81fafd9c01005ac77c2f9ef064e00dcf195d0e2fdd2f"
}
On next launch the agent downloads the model (~57 MB) to ProgramData\TATER\models, then the tray item and dashboard card appear. Point meetingRecorderModel at a local .bin instead to skip the download.
base.en (above) is the default: it transcribes roughly 3× faster than small.en with near-identical results on clear speech. For maximum accuracy on hard audio (heavy accents, crosstalk) point the URL/SHA at ggml-small.en-q5_1.bin (bfdff4894dcb76bbf647d56263ea2a96645423f1669176f4844a1bf8e478ad30) instead. Changing the model here re-downloads it on the next agent launch.
Troubleshooting
| Symptom | Cause / fix |
|---|---|
| No "Record Meeting" tray item | Recorder not enabled, or the sidecar/model isn't installed yet. Check meetingRecorderEnabled and that the model finished downloading (agent log). |
| Empty transcript / "no speech" | The captured audio was silent - system output muted, or the default playback device isn't the one you're listening on. Confirm your default output device and that it isn't muted. |
| Calendar picker says it couldn't check | Calendars.Read isn't granted to the tenant-credential app (the common mistake is granting it to the sign-in app instead), no tenant credential is stored, or the device couldn't resolve your UPN. See the warning under Calendar matching. |
| Calendar picker lists no events | The lookup worked but no Outlook event overlapped the recording window (±30 min). Save with your own title. |
| Upload failed | The local transcript is always kept. Check the agent's API connectivity; the recording stays in Recent and can be re-saved. |