For developers with too many meetingsA native Mac app

Private meeting notes. Instant Jira.

PrivateGoat records, transcribes and summarises your meetings on your Mac: no cloud by default, and no bot joins the call. A local copy of your Jira makes search instant, even offline, and the action items become tickets you approve.

Download for Mac
brew install --cask tomw1808/privategoat/privategoat

How it works

From the call to the ticket. On your Mac.

Who it’s for

For meetings that can’t go to the cloud.

  • PrivateGoat’s Chats page: a Claude Code conversation with a table of steps and owners and a Copy button over the table. Demo data.

    Developers

    Search through 200,000 chat messages or Jira tickets in 60 ms.

    Claude Code and Codex conversations and Jira tickets in one place.

    Chats
  • PrivateGoat’s Home page: the people you met this week and the week’s meetings, day by day. Demo data.

    Product owners

    Your whole week on one page.

    Every meeting and everyone you met.

    Send to Jira
  • Illustration: a doctor, an adviser and a lawyer, each linked to a Mac that records, transcribes and summarizes on the device, with the way to the cloud blocked.

    Healthcare, finance, law

    0 bytes of audio leave your Mac.

    Transcribed on your Mac. Summaries stay local.

    What stays on your Mac

Built for teams that take GDPR, patient confidentiality or client privilege seriously. PrivateGoat makes no compliance claims: whether it fits your rules is your decision, and the docs list exactly what stays and what leaves. For works councils: die Übersicht auf Deutsch.

01Record

Record any call.

Zoom, Teams, Meet or a call in the browser. No bot joins the call. Optionally, it also keeps screenshots of the call window.

Read the docs Recording
Teams is using the microphone
Record this meeting? ⌃⌥R works too.
RecordNot now
Transcript
Elapsed
Clock
[10:06] Others: Can you take the tile cache, then? Friday would be good.
[10:07] You: Yes, I'll do the tile cache by Friday.
[10:09] Others: Someone should check the photo credits with legal.
32:14 / Recording
You
Others
Processed privately on this Mac

02People

Recognize people.

PrivateGoat can recognize people in the call window and keep their voices encrypted in the vault.

Read the docs People and speaker names
Dana Moreau15:04
Can the huts sync their beds every hour?
Theo Marchetti15:05named by voice
From the office: hourly is fine for us.
People
Everyone the call window named, across every meeting.
Dana Moreau9 meetings · last Tue 6 Oct
Mara Keller14 meetings · last Tue 6 Oct
Jonas Brunner12 meetings · last Mon 5 Oct
Rafi Okoye4 meetings · last Thu 1 Oct
Theo Marchetti3 meetings · last Wed 30 Sep
Lena Brandt2 meetings · last Fri 25 Sep
Dana Moreau
9 meetings · 182 lines spoken
Voice remembered (6)
Rename…Merge Into…Forget Voice…Forget Picture…
MEETINGS 9
Partner sync: Alpine HutsTue 6 Oct, 15:00 · 40 min
Trail data licensingThu 1 Oct, 11:00 · 25 min
Hut booking API reviewMon 28 Sep, 14:00 · 45 min

03Tickets

Meetings to Jira tickets.

Your meetings, summarized locally. Action items drafted for Jira automatically, sent when you approve them.

Read the docs Summaries and actions
Send to Jira· ACMEStory + sub-tasks ▾
Epic
Trail map launchUnassigned ⌄
├Story
Offline mapsUnassigned ⌄
├Sub-task
Cache map tilesUnassigned ⌄
├Sub-task
Snow report on the mapUnassigned ⌄
└Sub-task
Cap tile packs at 400 MBUnassigned ⌄
Description of the selected row
> "Yes, I’ll do the tile cache by Friday."
⇥Tab to move⌘↩Create
✓ Created ACME-160 – ACME-164

04Find

Lightning-fast search.

Press ⌃⌥K from any app and search for anything, like Spotlight: meetings, Jira tickets, to-dos and Claude Code and Codex chats.

Read the docs Quick Find
tile cache
All⌘1Meetings⌘2To-dos⌘3Jira⌘4Chats⌘5
Meetings3
Trail map launch — weekly
…Can you take the tile cache? Friday would be good.
6 Oct, 10:00
Offline maps: tile sizes
…cache tiles per zoom, so a zoomed-out view stays small.
1 Oct, 14:30
Snow report sync
…the tile cache has to drop old snow overlays at the cap.
29 Sep, 09:15
To-dos2
Cache map tiles for offline use
Promoted from a meeting
Cap the tile pack at 400 MB
Promoted from a meeting
Jira3
ACME-8 › ACME-62 ›
ACME-142 · Cache map tiles
Sub-task · Cache map tiles for offline use
To do
ACME-8 › ACME-62 ›
ACME-161 · Cache tiles per zoom
Sub-task · Cache tiles per zoom
To do
ACME-8 › ACME-62 ›
ACME-162 · Evict old tiles at the cap
Sub-task · Evict old tiles at the cap
To do
Chats2
ACME-142: tile cache
Add an LRU tile cache capped at 400 MB…
~/acme-web · You
3 hr. ago
Offline tiles spike
…measured the tile cache on the Oberland pack: 380 MB.
~/acme-web · Claude · 4 matches
2 days ago
PREVIEW
ACME-142To do
Cache map tiles
Assignee
Jonas Brunner
Project
Acme Alpine

Cache map tiles on the device so a trail opens without a network.

Cache per zoom level
Cap the pack at 400 MB
Evict the oldest tiles first
⌘C copies ACME-142 · ↩ open · esc close

05Agents

First-class for agents.

PrivateGoat is a local MCP server for Claude Code, Codex or any MCP client, so you choose how it fits into your own agentic workflows.

Read the docs The local MCP server
~/acme-web — claude
> claude
⏺ jira_search { query: "offline maps" }
⎿ ACME-62 Offline maps · ACME-142 Cache map tiles
⏺ meeting_get { meeting: "trail-map" }
⎿ Summary, 3 action items, 12 transcript lines
⏺ sessions_for_issue { key: "ACME-142" }
⎿ Claude Code · 11:05 · 12 messages
⏺ todo_create { title: "Cap tile packs at 400 MB" }
⎿ Draft to-do — waiting for you in PrivateGoat

06Stand-up

Your stand-up, story by story.

The stand-up timeline shows yesterday and today. Switch it to Tickets, group by Story, and your agent chats and commits sit under the ticket they were on, each subtask under its story, with its status from your Jira copy.

And the meetings? They get a group of their own at the end. Work that named no ticket is kept too, as No ticket.

Read the docs Timeline: tickets by story
PrivateGoat — My Timeline (private)
Tue 3. Nov – Wed 4. Nov
7 entries
Stand-upDayWeekTodayLogTickets
Group byTicketStoryEpic
ACME-62Offline mapsIn Progress
ACME-142Cache map tilesIn Progress2 agent chats · 4 commits · 1 h 55 min
Tue 08:50ACME-142 cache tiles per zoom level1 agent chat · 3 commits
Wed 08:15ACME-142 evict the oldest tiles at the size cap1 agent chat · 1 commit
ACME-143Snow report on the mapIn Progress1 agent chat · 45 min
Tue 15:40Show trail closures from the snow report1 agent chat
ACME-97Route export as GPXIn Progress
ACME-171GPX tracks with elevationDone1 agent chat · 2 commits · 1 h 10 min
Tue 13:30ACME-171 write elevation into GPX tracks1 agent chat · 2 commits
No ticketWork that named no ticket the Jira copy knows1 agent chat · 1 commit · 25 min
Tue 16:40Bump the map SDK and fix the build warnings1 agent chat · 1 commit
Meetings2 meetings · 1 h 15 min
Tue 11:00Trail map launch — weekly
Tue 14:45Map styles review with Maya Chen

07Control

Know exactly what leaves your Mac.

Your meetings, summaries and Jira copy are files on your Mac. Transcription always runs on the Mac; summaries stay local unless you switch on cloud models.

Any analytics, or a server of theirs? None.

Read the docs What leaves your Mac
Where your data lives
Settings › About
Where your data lives
What stays, and what leaves.
ON THIS MAC· files and SQLite, encrypted if you choose
Meetings
Two WAV tracks. Never uploaded.
~/Library/Application Support/Sonavia/Meetings
Stays
To-dos
workspace.sqlite3
Stays
Your Jira copy
jira.sqlite3
Stays
Speech models, dictations, keys
…/Sonavia/Models · …/Sonavia/Dictations · Keychain
Stays
LEAVES THIS MAC· and when
Hugging Face
Speech and voice models.
huggingface.co
Leaves
Atlassian
Only if you connect Jira.
mcp.atlassian.com
Leaves
Ollama
Model list and pull, only if you install Ollama or pull a model; cloud models only with “Allow Ollama cloud models” on.
ollama.com
Leaves
Updates
On by default; switchable.
privategoat.app/appcast.xml · github.com
Leaves
No account. No PrivateGoat server. No analytics, no tracking.

08Vault

Encrypted at rest.

The vault can keep recordings, speaker pictures, transcripts, notes and summaries encrypted at rest.

Read the docs The encrypted vault
PrivateGoat is trying to unlock your meeting vault.
Touch ID or enter your password to allow this.
Settings
Settings › Privacy
Encrypted vault
Keep meetings in an encrypted vault
Locked
WHAT GOES INTO THE VAULT
Turns on every kind below and encrypts the files already on this Mac.
Audio recordings
Call screenshots
Speaker pictures
Voice profiles and voice groups
Transcripts
Notes
Summaries
Meeting titles
Dictations
Encrypting files… 34 of 210
LOCKING
UnlockWith Touch ID or your password ⌄
Lock after inactivity15 minutes ⌄
Lock when the screen locks
RECOVERY SECRET
The 24 words were shown once when the vault was made. They cannot be shown again.

Take it to your next meeting.

Prefer Homebrew? One line in the terminal:

brew install --cask tomw1808/privategoat/privategoat

Questions, ideas, bug reports: Join the Telegram group

Coming from Otter, Granola or MacWhisper? See how it compares.