← All posts

Local-first vs cloud meeting notes: what actually leaves your Mac

There's a version of the local-first argument that goes: it's a nice idea, but the cloud is just better, so stop worrying about it. I build a local-first meeting-notes app, Humla, so I'm not a neutral party here. But I think that framing skips the one question most people I talk to actually care about: what happens to your meeting recordings — what actually leaves your Mac when you take notes?

So let me trace it, step by step, for both approaches, using only what the vendors publish about their own systems. No FUD. Just the data path.

The data path of a typical cloud notetaker

1. Audio is captured. Some tools capture from your Mac directly; others send a bot into the call. Otter and Fireflies both add a notetaker bot that joins the meeting as a participant, records it, and uploads it. Everyone on the call sees it there.

2. The recording is uploaded. Whether a bot records or a desktop app does, the audio goes up to the vendor. Granola runs in the cloud — there's no on-device mode — so the audio leaves your machine. Fathom processes and stores every meeting in its US cloud.

3. Audio is sent to third-party transcription providers. To turn speech into text, the vendor typically hands your audio to a specialist speech-to-text provider. Granola's own description of its architecture has it sending audio to third-party transcription providers.

4. The transcript is sent to third-party LLM providers. To write the summary, the transcript (and often your typed notes) then go to a large-language-model provider. Granola routes this through third-party LLM providers too.

5. Everything is stored, often in the US — sometimes used for training. The finished transcript and notes are retained on the vendor's servers. Granola stores notes in its US cloud (on AWS); Fathom stores meetings in its US cloud. Two of the popular tools also improve their own systems with your data by default: Granola can use anonymised data to improve its product, with a full opt-out that's standard only on the Enterprise plan, and Fathom uses de-identified customer data to improve its models unless you opt out.

None of this is sinister. It's just what a cloud service is. But it means that by the time you read your summary, a client conversation has passed through at least three companies and landed in a US data centre. That's the thing worth knowing before you decide it doesn't matter. I go through this per-tool on the Humla vs Granola and Humla vs Fathom pages.

What "the whole pipeline on-device" means

Local-first flips the default. Instead of "upload unless you opt out," it's "stays put unless you send it somewhere on purpose."

In Humla's fully-local mode, the whole pipeline runs on your Mac. Transcription uses Whisper on Apple Silicon, on your GPU. Speaker labels ("who said what") come from a diarization model that also runs on-device. The notes live in a plain SQLite database on your disk. And if you want the AI summary written locally too, you can point it at a local LLM. Audio, transcript, and summary never leave the machine — there's no account, and there's nothing to intercept because nothing is in flight. More on that on the local & on-device page.

What still touches the network, and when

I want to be precise, because "local" gets used loosely. Two things do use the network:

  • A one-time model download. The first time you transcribe locally, Humla fetches the Whisper model. After that, transcription is offline — it works on a plane.
  • Bring-your-own-key mode, if you choose it. Prefer a cloud engine for speed? Plug in your own OpenAI, Deepgram, or Groq key and only that audio goes to the provider you picked, on your own account. There's no Humla server in the middle — no backend, no telemetry, nothing phoning home. That's the honest boundary I describe on the private by default page.

When cloud is genuinely the better choice

I'd be selling you something if I said local wins every time. It doesn't.

If you need your notes on your phone and your laptop and the web without running your own sync server, a managed cloud handles that for you. If you want video recording of calls, deep first-party integrations (CRM, Slack, Notion), a polished mobile app, or a zero-setup way to onboard a whole team, the funded cloud products lead there today, and I say so on the comparison pages. Local-first asks a little more of you in exchange for keeping the data on your Mac. For some people that trade isn't worth it, and that's fine.

The point: "private" should be checkable

The argument I actually want to make isn't "cloud is evil." It's that "private" should be something you can verify, not a sentence on a pricing page you have to take on faith.

That's the whole reason Humla is open source under MIT: you (or someone you trust) can read the code and confirm that on-device mode really keeps your audio on-device. And if you'd rather just see it than read Rust, the local page runs the transcription model live in your browser and never uploads a thing. Check it before you trust it. That's the entire idea.