Meeting recorder for your Mac with a live AI copilot. On-device transcription, answers from your own docs mid-call. Local-first and open source.
See the codeWebsite · Download · User guide · Discussions
A meeting recorder for your Mac with a live AI copilot built in. It records and transcribes every call on your machine, suggests answers from your own documents while you're still talking, and writes the report before you've hung up.
No bot joins your meeting. It works with Google Meet, Zoom, Teams, or anything else your Mac can hear. Transcription, speaker detection and your documents stay on your Mac. The copilot's brain is your choice: Claude with your own key, any OpenAI-compatible server, or a local model through Ollama, which makes the whole thing free and offline.
https://github.com/user-attachments/assets/76dc07c7-6667-497e-b39f-8218e077c88c
Parrot in 73 seconds. Turn the sound on, or follow the captions.
The live call screen, as drawn on openparrot.app. The other side asked about data residency, and the answer came straight from the FAQ you dropped in.
So here's the deal. I'm Uygar, and I'm trying to build my own meeting recorder from scratch. I got tired of paying for services like Otter.ai that send all my conversations to some server I don't control. I thought, "How hard can it be to do this locally on my Mac?" Turns out... it's a journey. 😄
I'm building this with the help of Claude (yes, the AI, we've had a lot of late-night coding sessions together), and honestly, it's been one of the most fun projects I've worked on. It's not perfect yet: there are still bugs I'm chasing, permissions that are being annoying, and features I haven't figured out. But the core works, and it's on every one of my client calls now.
This is a personal project. I'm learning as I go. If there are any crazy coders out there who stumble upon this and want to help improve it, I would really, truly appreciate it. Fixing a bug, improving the speaker detection, or just telling me I'm doing something wrong: all of it helps. Open a PR, open an issue, or just say hi. 🙌
If you find this useful or just think the idea is cool, give it a star. It'll make my day.
What it does · Privacy: what leaves your Mac · Getting started · Keyboard shortcuts · Tech stack · Build from source · Want to help? · Known issues · Similar projects
An always-on assistant that watches the conversation and puts the right thing on screen. No button pressing, the whole call.

Chat with all your calls (⌘K): "What did I promise Acme?", then "and what did we offer them?". Chats are saved, follow-ups work, and every fact in the answer is a chip that opens the meeting at that second. Counts like "How many meetings did I have last week?" are worked out exactly on your Mac. Ask Parrot has its own AI choice: search always runs on your Mac, and with Ollama the answer is written there too. It works in English and Turkish, and it's in beta. When a call starts with people you've met before, the Copilot's brief shows the open items from last time.
Free, no meeting bot, no 30-day limit, and your meetings stay on your Mac until you ask. Connect Claude Desktop in one click (or Claude Code, Codex for ChatGPT plans, or Cursor) and your own plan does the thinking: "What did I promise last week?", "Brief me for my call with Acme", "Draft the follow-up for this morning's call", "Coach me across my last 10 calls". Claude gets real speaker names, long transcripts in pages, promises with their owners, talk time, and four ready-made actions in its + menu (weekly digest, follow-up email, prep for a call, PRD from calls). It's read-only: you choose what it sees (transcripts, reports, notes, Copilot cards, whole call types), on-device-only meetings are never shown, and Parrot tells you how often it was read. Open Claude & AI Apps in the sidebar. How it works.

Tell Parrot what kind of call it is, and the profile decides what the copilot watches for and how the report is written.


12:34): click it for the exact quote, Play from Here or Show in Transcript. Chips are checked against the transcript on your Mac, and a promise nobody actually made is marked unverified instead of stated as fact.
| Copilot and reports | What it is | What leaves your Mac |
|---|---|---|
Claude (claude-haiku-4-5) | Sharpest cards. Your own key. About $0.07 per call hour. | Transcript text, to Anthropic. Never audio. |
| Ollama (local) | llama3.2:3b, gemma3:4b, or any model you like. Parrot can install Ollama and pull the model for you. Free. | Nothing. Works with the Wi-Fi off. |
| Custom server | Anything OpenAI-compatible: OpenAI, Gemini, Groq, OpenRouter, LM Studio. | Transcript text, to the server you picked. |
Live cards and post-call reports can use different brains (say, Ollama live and Claude for the report).
| Transcription | Why pick it | ~Cost per call hour (both sides) |
|---|---|---|
| On-device Whisper (default) | Private, offline, free. Five models from Tiny (40 MB) to Large V3 Turbo (1.6 GB). | Free |
Groq whisper-large-v3-turbo | Big-model accuracy, same latency as local. | ~$0.08 |
| Deepgram Nova-3 | True streaming, words appear ~300 ms after they're spoken. | ~$0.70 ($0.58 with one language pinned) |
Cloud engines fall back to on-device automatically if anything fails mid-call. An optional polish pass re-transcribes the saved audio with Groq's large model after you hit Stop and rewrites the report from the cleaner text.
Whisper auto-detects the language of the call, or you can pin one of 14 (English, Turkish, Spanish, German, French, Italian, Portuguese, Dutch, Russian, Arabic, Hindi, Chinese, Japanese, Korean). The copilot and the report answer in the language of the call. Documents work in most major languages, including Turkish, Dutch, Polish, Russian, Arabic, Hindi, Chinese, Japanese and Korean, and an English question can find the answer in a Turkish or Spanish document. For anything but English, pick Large V3 Turbo or Groq. If a call doesn't sound like the language you picked, Parrot notices in the first few seconds and offers a one-click switch. With Deepgram, pick Turkish, Arabic, Chinese or Korean by name: its auto-detect covers ten languages and skips those. A custom vocabulary list teaches Whisper your product and people names.
This is a microphone-and-system-audio app, so you shouldn't have to take my word for anything. Here's everything that can leave the machine, and when:
| Feature | Sends | To | When |
|---|---|---|---|
| Recording, on-device transcription, speaker detection, voiceprints, document index | Nothing | No one | Always local |
| Model downloads | A download request | Hugging Face (Whisper, voice-detection and speaker-detection models); Apple (language model for Arabic, Indic and some Cyrillic documents) | Once, first use |
| Update check | The app's version | GitHub Pages (Sparkle feed) | Once a day; can switch off auto-install |
| Copilot on Claude or a custom server | Transcript text, matched document passages, profile instructions | Anthropic, or the server you picked | Only if you turn Copilot on |
| TypeSafe doc answers | The question, a couple of lines of context, candidate document snippets | TypeSafe AI | Only with a TypeSafe key, Claude mode |
| Groq or Deepgram transcription, polish pass | Call audio | Groq or Deepgram | Only if you pick that engine |
| Calendar | Nothing (read locally through macOS's calendar store) | No one | Only if you connect it |
| Calendar invite for the Copilot | Event title, guest names, notes (dial-in details removed) | Anthropic, or the server you picked | Only if you turn on "Brief the copilot from the invite" |
| Call detection | Nothing (asks macOS which apps use the mic) | No one | Unless you turn it off |
| Ask Parrot | The few best-matching excerpts and the chat's recent messages (never on-device-only meetings) | The AI you pick for Ask Parrot (your reports AI by default) | Only with a cloud AI; nothing with Ollama |
| Follow-up email | The meeting's transcript | Your reports AI | Only when you draft one |
| Webhook | Summary, next steps, notes (transcript if allowed) | The address you paste | Only if you set one; never for on-device-only meetings |
| Claude and other AI apps (MCP) | What the app reads when you ask it, only the parts you share | That app's company (Anthropic for Claude, under your account) | Only if you turn it on; never on-device-only meetings, audio or keys |
| Copilot on Ollama | Nothing | Your own Mac | Always local |
Found something that contradicts any of this? That's a security issue, see SECURITY.md.
📖 Parrot Help walks through every feature. The same pages ship inside the app under Help > Parrot Help.
Download the notarized .dmg from the Releases page (or the button on openparrot.app) and drag Parrot into Applications. Needs macOS 14 (Sonoma) or later on Apple Silicon.
Allow two permissions. The welcome tour shows live status for each and deep-links to the right Settings pane:
Choose how the Copilot works. The tour shows what it does, then asks:
Speech to text. Parrot picks the Whisper model that fits your Mac's memory and starts the download right away. It carries on after you close the tour:
| Model | Size | Good for |
|---|---|---|
| Tiny | 40 MB | Fastest |
| Base | 140 MB | Picked on Macs under 12 GB |
| Small | 460 MB | Better accuracy |
| Large V3 Turbo Compressed | 626 MB | Near-best, low memory |
| Large V3 Turbo | 1.6 GB | Best accuracy, and best for non-English calls. Picked on 12 GB and up |
Use your meetings in Claude (optional). The tour's last step connects Claude Desktop in one click; Cursor, Codex and Claude Code connect from Claude & AI Apps in the sidebar. It's the one part of Parrot that isn't private like the rest: what the app reads goes to its company under your account. The tour leaves it out if you picked Private.
Hit record on your next call.
Feed it your knowledge (optional) in Settings > Knowledge, and pick or build a profile in Settings > Profiles.
Want the tour again? Help > Show Welcome Tour.
| Shortcut | Does |
|---|---|
| ⌘R | Start recording |
| ⌘. | Stop recording |
| ⌘O | Import an audio file |
| ⌘E | Export transcript (TXT) |
| ⌘F | Search meetings |
| ⌘K | Ask Parrot |
| ⌃⌥M | Mark a moment (from any app, while recording) |
| ⌘, | Settings |
| What | How |
|---|---|
| UI | SwiftUI, native macOS, Inter |
| Speech-to-text (default) | WhisperKit, on-device on the Neural Engine |
| Speech-to-text (optional, your key) | Groq whisper-large-v3-turbo (HTTP chunks) · Deepgram Nova-3 (websocket streaming) |
| Voice detection | Silero VAD (MIT) via FluidAudio, on-device: only clips with a voice in them reach Whisper, so an idle room stays blank |
| Speaker detection | FluidAudio (Apache-2.0), on-device pyannote-derived models (CC-BY-4.0) |
| Copilot and reports | Claude API (Haiku 4.5, structured outputs) · Ollama · any OpenAI-compatible server |
| Instant document answers (optional) | TypeSafe AI jev-latest |
| Knowledge base | Apple NaturalLanguage contextual embeddings + BM25, all on-device |
| System audio | Core Audio process taps (macOS 15+) · ScreenCaptureKit (macOS 14) |
| Microphone | AVAudioEngine + vendored SpeexDSP echo canceller |
| Storage | SwiftData; API keys in the Keychain |
| Updates | Sparkle, EdDSA-signed appcast |
| Project | XcodeGen: project.yml is the source of truth |
Prerequisites: macOS 14.0+, Apple Silicon recommended, and an Xcode / Swift toolchain.
git clone https://github.com/turantekin/Parrot.git
cd Parrot
make run
make run compiles with swift build, assembles dist/Parrot.app, signs it with whatever identity you already have (ad-hoc if none), and launches it. make help lists the rest (make test, make install, make clean...).
make, not Xcode's UI. Xcode's explicit-modules build intermittently races on WhisperKit's dependencies. make xcode regenerates the project from project.yml if you want the IDE; keep the actual builds on make.make signing-help shows two free ways to make them stick.If any of these excite you, jump in!
Seriously, if you're into Swift/macOS development, audio processing, or on-device ML, I'd love your help. I'm one person building this in my spare time with Claude as my coding buddy, and there's a lot I don't know yet.
kTCCServiceAudioCapture, I want to hear from you.The easiest way to report anything: click the little ladybug in the bottom right corner of the app (or Help > Report a Bug...). Start with CONTRIBUTING.md, and please be kind (Code of Conduct). Stuck? See SUPPORT.md.
make signing-help shows two fixes. Downloaded release builds keep the grant across updates.Parrot isn't alone in the "no cloud, no bots, just transcribe my meeting" corner. If you're evaluating approaches, read all of these:
Parrot's angle: fully native SwiftUI + WhisperKit, and a live in-call copilot grounded in your own documents, rather than only post-call notes.
GPL-3.0. Use it, learn from it, improve it. If you ship a modified version, it has to stay open source under the same license.
Releases up to and including v0.11.3 were published under MIT and remain MIT.
Built with SwiftUI, WhisperKit, and way too many late-night Claude Code sessions. 🌙
If you've also tried to build something stupid-ambitious as a personal project: I see you. Keep going. 🦜
168 followers · starred Jul 2026
9 followers · starred Jul 2026
Swift
97.9%
Shell
1.2%
Meeting recorder for your Mac with a live AI copilot. On-device transcription, answers from your own docs mid-call. Local-first and open source.
See the codeWebsite · Download · User guide · Discussions
A meeting recorder for your Mac with a live AI copilot built in. It records and transcribes every call on your machine, suggests answers from your own documents while you're still talking, and writes the report before you've hung up.
No bot joins your meeting. It works with Google Meet, Zoom, Teams, or anything else your Mac can hear. Transcription, speaker detection and your documents stay on your Mac. The copilot's brain is your choice: Claude with your own key, any OpenAI-compatible server, or a local model through Ollama, which makes the whole thing free and offline.
https://github.com/user-attachments/assets/76dc07c7-6667-497e-b39f-8218e077c88c
Parrot in 73 seconds. Turn the sound on, or follow the captions.
The live call screen, as drawn on openparrot.app. The other side asked about data residency, and the answer came straight from the FAQ you dropped in.
So here's the deal. I'm Uygar, and I'm trying to build my own meeting recorder from scratch. I got tired of paying for services like Otter.ai that send all my conversations to some server I don't control. I thought, "How hard can it be to do this locally on my Mac?" Turns out... it's a journey. 😄
I'm building this with the help of Claude (yes, the AI, we've had a lot of late-night coding sessions together), and honestly, it's been one of the most fun projects I've worked on. It's not perfect yet: there are still bugs I'm chasing, permissions that are being annoying, and features I haven't figured out. But the core works, and it's on every one of my client calls now.
This is a personal project. I'm learning as I go. If there are any crazy coders out there who stumble upon this and want to help improve it, I would really, truly appreciate it. Fixing a bug, improving the speaker detection, or just telling me I'm doing something wrong: all of it helps. Open a PR, open an issue, or just say hi. 🙌
If you find this useful or just think the idea is cool, give it a star. It'll make my day.
What it does · Privacy: what leaves your Mac · Getting started · Keyboard shortcuts · Tech stack · Build from source · Want to help? · Known issues · Similar projects
An always-on assistant that watches the conversation and puts the right thing on screen. No button pressing, the whole call.

Chat with all your calls (⌘K): "What did I promise Acme?", then "and what did we offer them?". Chats are saved, follow-ups work, and every fact in the answer is a chip that opens the meeting at that second. Counts like "How many meetings did I have last week?" are worked out exactly on your Mac. Ask Parrot has its own AI choice: search always runs on your Mac, and with Ollama the answer is written there too. It works in English and Turkish, and it's in beta. When a call starts with people you've met before, the Copilot's brief shows the open items from last time.
Free, no meeting bot, no 30-day limit, and your meetings stay on your Mac until you ask. Connect Claude Desktop in one click (or Claude Code, Codex for ChatGPT plans, or Cursor) and your own plan does the thinking: "What did I promise last week?", "Brief me for my call with Acme", "Draft the follow-up for this morning's call", "Coach me across my last 10 calls". Claude gets real speaker names, long transcripts in pages, promises with their owners, talk time, and four ready-made actions in its + menu (weekly digest, follow-up email, prep for a call, PRD from calls). It's read-only: you choose what it sees (transcripts, reports, notes, Copilot cards, whole call types), on-device-only meetings are never shown, and Parrot tells you how often it was read. Open Claude & AI Apps in the sidebar. How it works.

Tell Parrot what kind of call it is, and the profile decides what the copilot watches for and how the report is written.


12:34): click it for the exact quote, Play from Here or Show in Transcript. Chips are checked against the transcript on your Mac, and a promise nobody actually made is marked unverified instead of stated as fact.
| Copilot and reports | What it is | What leaves your Mac |
|---|---|---|
Claude (claude-haiku-4-5) | Sharpest cards. Your own key. About $0.07 per call hour. | Transcript text, to Anthropic. Never audio. |
| Ollama (local) | llama3.2:3b, gemma3:4b, or any model you like. Parrot can install Ollama and pull the model for you. Free. | Nothing. Works with the Wi-Fi off. |
| Custom server | Anything OpenAI-compatible: OpenAI, Gemini, Groq, OpenRouter, LM Studio. | Transcript text, to the server you picked. |
Live cards and post-call reports can use different brains (say, Ollama live and Claude for the report).
| Transcription | Why pick it | ~Cost per call hour (both sides) |
|---|---|---|
| On-device Whisper (default) | Private, offline, free. Five models from Tiny (40 MB) to Large V3 Turbo (1.6 GB). | Free |
Groq whisper-large-v3-turbo | Big-model accuracy, same latency as local. | ~$0.08 |
| Deepgram Nova-3 | True streaming, words appear ~300 ms after they're spoken. | ~$0.70 ($0.58 with one language pinned) |
Cloud engines fall back to on-device automatically if anything fails mid-call. An optional polish pass re-transcribes the saved audio with Groq's large model after you hit Stop and rewrites the report from the cleaner text.
Whisper auto-detects the language of the call, or you can pin one of 14 (English, Turkish, Spanish, German, French, Italian, Portuguese, Dutch, Russian, Arabic, Hindi, Chinese, Japanese, Korean). The copilot and the report answer in the language of the call. Documents work in most major languages, including Turkish, Dutch, Polish, Russian, Arabic, Hindi, Chinese, Japanese and Korean, and an English question can find the answer in a Turkish or Spanish document. For anything but English, pick Large V3 Turbo or Groq. If a call doesn't sound like the language you picked, Parrot notices in the first few seconds and offers a one-click switch. With Deepgram, pick Turkish, Arabic, Chinese or Korean by name: its auto-detect covers ten languages and skips those. A custom vocabulary list teaches Whisper your product and people names.
This is a microphone-and-system-audio app, so you shouldn't have to take my word for anything. Here's everything that can leave the machine, and when:
| Feature | Sends | To | When |
|---|---|---|---|
| Recording, on-device transcription, speaker detection, voiceprints, document index | Nothing | No one | Always local |
| Model downloads | A download request | Hugging Face (Whisper, voice-detection and speaker-detection models); Apple (language model for Arabic, Indic and some Cyrillic documents) | Once, first use |
| Update check | The app's version | GitHub Pages (Sparkle feed) | Once a day; can switch off auto-install |
| Copilot on Claude or a custom server | Transcript text, matched document passages, profile instructions | Anthropic, or the server you picked | Only if you turn Copilot on |
| TypeSafe doc answers | The question, a couple of lines of context, candidate document snippets | TypeSafe AI | Only with a TypeSafe key, Claude mode |
| Groq or Deepgram transcription, polish pass | Call audio | Groq or Deepgram | Only if you pick that engine |
| Calendar | Nothing (read locally through macOS's calendar store) | No one | Only if you connect it |
| Calendar invite for the Copilot | Event title, guest names, notes (dial-in details removed) | Anthropic, or the server you picked | Only if you turn on "Brief the copilot from the invite" |
| Call detection | Nothing (asks macOS which apps use the mic) | No one | Unless you turn it off |
| Ask Parrot | The few best-matching excerpts and the chat's recent messages (never on-device-only meetings) | The AI you pick for Ask Parrot (your reports AI by default) | Only with a cloud AI; nothing with Ollama |
| Follow-up email | The meeting's transcript | Your reports AI | Only when you draft one |
| Webhook | Summary, next steps, notes (transcript if allowed) | The address you paste | Only if you set one; never for on-device-only meetings |
| Claude and other AI apps (MCP) | What the app reads when you ask it, only the parts you share | That app's company (Anthropic for Claude, under your account) | Only if you turn it on; never on-device-only meetings, audio or keys |
| Copilot on Ollama | Nothing | Your own Mac | Always local |
Found something that contradicts any of this? That's a security issue, see SECURITY.md.
📖 Parrot Help walks through every feature. The same pages ship inside the app under Help > Parrot Help.
Download the notarized .dmg from the Releases page (or the button on openparrot.app) and drag Parrot into Applications. Needs macOS 14 (Sonoma) or later on Apple Silicon.
Allow two permissions. The welcome tour shows live status for each and deep-links to the right Settings pane:
Choose how the Copilot works. The tour shows what it does, then asks:
Speech to text. Parrot picks the Whisper model that fits your Mac's memory and starts the download right away. It carries on after you close the tour:
| Model | Size | Good for |
|---|---|---|
| Tiny | 40 MB | Fastest |
| Base | 140 MB | Picked on Macs under 12 GB |
| Small | 460 MB | Better accuracy |
| Large V3 Turbo Compressed | 626 MB | Near-best, low memory |
| Large V3 Turbo | 1.6 GB | Best accuracy, and best for non-English calls. Picked on 12 GB and up |
Use your meetings in Claude (optional). The tour's last step connects Claude Desktop in one click; Cursor, Codex and Claude Code connect from Claude & AI Apps in the sidebar. It's the one part of Parrot that isn't private like the rest: what the app reads goes to its company under your account. The tour leaves it out if you picked Private.
Hit record on your next call.
Feed it your knowledge (optional) in Settings > Knowledge, and pick or build a profile in Settings > Profiles.
Want the tour again? Help > Show Welcome Tour.
| Shortcut | Does |
|---|---|
| ⌘R | Start recording |
| ⌘. | Stop recording |
| ⌘O | Import an audio file |
| ⌘E | Export transcript (TXT) |
| ⌘F | Search meetings |
| ⌘K | Ask Parrot |
| ⌃⌥M | Mark a moment (from any app, while recording) |
| ⌘, | Settings |
| What | How |
|---|---|
| UI | SwiftUI, native macOS, Inter |
| Speech-to-text (default) | WhisperKit, on-device on the Neural Engine |
| Speech-to-text (optional, your key) | Groq whisper-large-v3-turbo (HTTP chunks) · Deepgram Nova-3 (websocket streaming) |
| Voice detection | Silero VAD (MIT) via FluidAudio, on-device: only clips with a voice in them reach Whisper, so an idle room stays blank |
| Speaker detection | FluidAudio (Apache-2.0), on-device pyannote-derived models (CC-BY-4.0) |
| Copilot and reports | Claude API (Haiku 4.5, structured outputs) · Ollama · any OpenAI-compatible server |
| Instant document answers (optional) | TypeSafe AI jev-latest |
| Knowledge base | Apple NaturalLanguage contextual embeddings + BM25, all on-device |
| System audio | Core Audio process taps (macOS 15+) · ScreenCaptureKit (macOS 14) |
| Microphone | AVAudioEngine + vendored SpeexDSP echo canceller |
| Storage | SwiftData; API keys in the Keychain |
| Updates | Sparkle, EdDSA-signed appcast |
| Project | XcodeGen: project.yml is the source of truth |
Prerequisites: macOS 14.0+, Apple Silicon recommended, and an Xcode / Swift toolchain.
git clone https://github.com/turantekin/Parrot.git
cd Parrot
make run
make run compiles with swift build, assembles dist/Parrot.app, signs it with whatever identity you already have (ad-hoc if none), and launches it. make help lists the rest (make test, make install, make clean...).
make, not Xcode's UI. Xcode's explicit-modules build intermittently races on WhisperKit's dependencies. make xcode regenerates the project from project.yml if you want the IDE; keep the actual builds on make.make signing-help shows two free ways to make them stick.If any of these excite you, jump in!
Seriously, if you're into Swift/macOS development, audio processing, or on-device ML, I'd love your help. I'm one person building this in my spare time with Claude as my coding buddy, and there's a lot I don't know yet.
kTCCServiceAudioCapture, I want to hear from you.The easiest way to report anything: click the little ladybug in the bottom right corner of the app (or Help > Report a Bug...). Start with CONTRIBUTING.md, and please be kind (Code of Conduct). Stuck? See SUPPORT.md.
make signing-help shows two fixes. Downloaded release builds keep the grant across updates.Parrot isn't alone in the "no cloud, no bots, just transcribe my meeting" corner. If you're evaluating approaches, read all of these:
Parrot's angle: fully native SwiftUI + WhisperKit, and a live in-call copilot grounded in your own documents, rather than only post-call notes.
GPL-3.0. Use it, learn from it, improve it. If you ship a modified version, it has to stay open source under the same license.
Releases up to and including v0.11.3 were published under MIT and remain MIT.
Built with SwiftUI, WhisperKit, and way too many late-night Claude Code sessions. 🌙
If you've also tried to build something stupid-ambitious as a personal project: I see you. Keep going. 🦜
168 followers · starred Jul 2026
9 followers · starred Jul 2026
Swift
97.9%
Shell
1.2%