Verify it yourself
Don’t trust “nothing leaves your Mac”. Test it.
Every local-first app says the same sentence. The difference is whether you can check it in ten minutes without reading a line of code. You can: cut Daisy off from the network, record a real meeting, and see that you still get a transcript and a summary. Below: the test, every host Daisy is able to contact and what triggers each one, and where your recordings sit on disk.
The ten-minute test
Step 1 — install a firewall that shows you connections
LuLu is free and open source; Little Snitch is the paid alternative with a nicer log. Either one prompts on every outbound connection and records what it saw.
Step 2 — let Daisy download its models once
Speech models are large and are not bundled in the app. On first run Daisy fetches the ones you chose from
models.mydaisy.io(orhuggingface.coif that fails; before 1.0.8.35 always from there) and caches them under~/Library/Application Support/Daisy/huggingface/and~/Library/Application Support/FluidAudio/Models/. Watch that download happen — then confirm it never repeats.Step 3 — block Daisy entirely, then record
Deny Daisy every outbound connection in your firewall (or just turn Wi-Fi off). Set the summarizer to Apple Intelligence or a local model in Settings → Summary. Record a real meeting, stop it, and wait for the transcript and summary. Both appear. That is the whole claim, demonstrated on your machine rather than asserted on ours.
Step 4 — put the network back and read the log
Allow Daisy again and use it normally for a day. The connection log should contain nothing outside the table below — and nothing at all while a meeting is being recorded or transcribed, unless you deliberately chose a cloud summarizer or destination.
Every host Daisy can reach
This is the complete list from the source, not a summary of the interesting parts. Everything except the first two rows requires you to switch something on first.
mydaisy.io
Update check (hourly by default) and the download when you accept one.
The appcast XML and the DMG. No meeting data, no identifiers we assign.
models.mydaisy.io
From Daisy 1.0.8.35: first run of a speech model — Whisper, Parakeet, Silero VAD and the speaker models.
Model weights: pinned copies on Cloudflare R2, each file checked against the SHA-256 shipped inside the app before it's used. No meeting data.
huggingface.co
Fallback when the mirror fails (pinned versions), and the live dictation preview model. Before 1.0.8.35, every speech model.
Model weights, downloading. Outside those download windows Daisy blocks the library's network layer outright.
api.openai.com · api.anthropic.com · generativelanguage.googleapis.com · api.moonshot.ai
Only if you pick that cloud provider as your summarizer, or a cloud polish pass. Anthropic also if you turn on attendee research, which runs its web search.
The transcript text you asked it to summarize, under that provider's terms. Never audio. Attendee research sends meeting titles and attendee names. Apple Intelligence and local models are the alternatives, and the default.
ai.api.cloud.yandex.net · foundation-models.api.cloud.ru · api.deepseek.com
From Daisy 1.0.8.45: only if you pick YandexGPT, GigaChat (through cloud.ru Foundation Models) or DeepSeek as your summarizer, or a cloud polish pass.
The transcript text you asked it to summarize, under that provider's terms. Never audio. DeepSeek's privacy policy allows it to use requests to train its models; Daisy's Settings say so next to the key.
Cursor's servers (through the Cursor Agent CLI)
Only if you pick Cursor as your summarizer. Daisy runs the CLI installed on your Mac with your key.
The transcript text you asked it to summarize, under Cursor's terms. Never audio.
api.notion.com · hooks.slack.com · api.attio.com · any MCP server or webhook URL you add (Linear and others)
Only after you connect that destination and route a session to it.
The summary or transcript you routed, to your own workspace.
accounts.google.com · oauth2.googleapis.com · www.googleapis.com
Only if you connect Google Calendar for meeting auto-start.
OAuth tokens and calendar event titles/times. No recordings.
iCloud (Apple, your own account)
Only if you turn on sync with Daisy for iPhone.
Session text, summaries, speaker voice fingerprints and screenshots, in your private iCloud. Never audio.
Your local network (Bonjour _daisy-audio._tcp)
When Daisy for iPhone hands a recording's audio to your Mac.
Audio, encrypted with TLS, directly between your two devices on the same network. It does not go through the internet or iCloud.
Apple (speech assets)
On macOS 26, if you choose Apple's speech engine for dictation: macOS downloads the language files.
Model files from Apple, handled by macOS. No audio.
*.ingest.de.sentry.io (Sentry, EU region)
Only when you press Send Report in the crash-report question Daisy asks on the launch after a crash. Off entirely, from the next launch, with Settings → Privacy → Crash reports → Never send.
The report you were shown: where in the code Daisy failed, the app and macOS versions, the Mac model. No meeting data, names, paths into your folders (home is replaced with ~), device names or logs.
api.mydaisy.io/api/usage
Once a day, only if you said yes to “Help make Daisy better” (Settings → Privacy → Help improve Daisy).
Counts of features used and errors for the previous day, the app and macOS versions, the interface language, the update channel and whether sync is on. No meeting data, names, paths or identifier.
127.0.0.1:11434 · 127.0.0.1:1234
If you use Ollama or LM Studio as the summarizer.
Loopback only — the traffic never reaches a network interface.
ollama.com
Only when you press Download on a model in Settings → AI → Summary provider → Ollama. The Ollama app on your Mac fetches the model file; Daisy only asks it to.
The model file you chose — the size is on the button. No meeting data.
Links to GitHub, Discord, Ko-fi and the docs open in your browser from menus — the app itself makes no request to them. Daisy has no account system and no analytics SDK — apart from the update check, none of the rows above runs without you, and the feature counts only after you said yes.
What lands on your disk
Recordings are plain files in a folder you choose (Settings → Library → Storage) — a Dropbox folder, an Obsidian vault, anywhere. Open them in Finder while Daisy runs.
<your folder>/Daisy/Sessions/<timestamp>/
One directory per meeting: transcript.md (Markdown with YAML frontmatter — readable in any editor), summary.json, the raw audio archive as microphone.caf / system_audio.caf, and screenshots if you captured any. Nothing is in a database only Daisy can open.
~/Library/Application Support/Daisy/
Cached speech models, voice fingerprints for speaker names, and the transcription queue. Deleting this folder costs you the model download, nothing else.
Keychain
API keys for the cloud providers you connected, if any. Never in a plain-text config file.
The one thing that can leave: iPhone sync
Daisy for iPhone can sync with your Mac. That means text leaves the machine, so we would rather say it plainly than let you find out. The switch is off until you turn it on — including after an update, and including if you never install the phone app.
What travels, once you switch it on
transcript.md, summary.json, speaker names, markers and photos — through the private database of your own iCloud account, which we cannot read. With Advanced Data Protection on, Apple cannot read it either.
What never travels through iCloud
The audio. It moves only device-to-device over your local network, only when something asks for it — re-transcribing on the Mac, or playing it back. If the two are not on the same network, Daisy says so instead of quietly uploading a gigabyte.
Check it the same way
With sync off, the network traces on this page stay empty — no iCloud traffic from Daisy at all. Turn it on and you will see connections to Apple, and to nobody else. Turning it back off stops the syncing; what already went up is removed with “Delete my data from iCloud” in Settings.
While you are testing, test the failure too
“Local” is worth little if a crash takes the meeting with it. Start a recording, then force-quit Daisy from Activity Monitor mid-meeting. Reopen it: the audio recorded up to the kill is on disk, and Daisy transcribes it on the next launch instead of discarding the folder. Our own measured run of that scenario, along with the diarization numbers, lives on the benchmarks page, scripts included.
If the test disagrees with this page
Tell us, and we will fix the app or the page.
A connection you can’t explain from the table above is a bug worth reporting, whichever way it turns out. The source is public — the network policy, the entitlements and the local server are all readable.