Where your conversations actually go

Nowhere. This page explains the mechanism that makes that true, lists every network call the application makes, and then tells you how to check rather than asking you to believe it.

The whole architecture

your computermicrophonesystem audiotranscriptionlocal AIyour databaseyour exportsno cloudmodel downloadfirst run only
Both channels are captured, transcribed, summarised and stored inside the boundary. One arrow crosses it: the first-run model download, a file fetch that does not repeat. It goes to huggingface.co, github.com or raw.githubusercontent.com — the table below names every host, and says so precisely enough that you can hold it against a network monitor. This diagram is the one drawn thing on the site: every picture of the application is a capture of it running — nothing here is a mock-up.

Disconnected, it behaves identically

The models live on your disk. Transcription reads from them, the summary model reads the transcript, and the database is a file. Removing the network removes nothing from that chain.

A finished meeting's generated summary, with the meeting list beside it. Both were produced on the machine that recorded it.
A finished meeting's generated summary, with the meeting list beside it. Both were produced on the machine that recorded it.

Every network call, listed

An entry belongs on this list only if the application's own code makes that call. Disclosing a call that does not exist is the same kind of defect as omitting one that does, so the list is kept exactly as long as the code — no shorter, no longer.

Every network call Zerds makes. There are no others.
CallWhenWhere to
Model downloadThe first time you use a model, then cached and run offline. Nothing of yours is sent — it is a file download, and every file is checked against a build-time checksum before it is used
  • huggingface.co
  • hf-mirror.com (fallback, if huggingface.co is blocked)
  • github.com (k2-fsa/sherpa-onnx, microsoft/onnxruntime releases)
  • raw.githubusercontent.com (uhstray-io/zerds-public — ours)
  • registry.ollama.ai (only for Ollama models)
Model catalogueWhen you open the model list in Settings, to see which models exist and how big they are. Asks for a file listing — nothing of yours is part of the request
  • huggingface.co
ONNX Runtime downloadFirst run, if the runtime is not already present. Checked against a build-time checksum before it is used
  • github.com (microsoft/onnxruntime releases)
Bug report / feedback formOnly when you click Report a bug or Send feedback. Opens a form in your browser — Zerds sends nothing to it, and attaches no recording, transcript or log
  • docs.google.com (opened in your browser, not by Zerds)
Your remote AI endpointOnly if you configure one. Transcript text goes to the server you chose
  • whichever endpoint you configure — nothing by default
DiscordOnly during a Discord recording you start
  • discord.com
Store ownership confirmationOn launch, on a Microsoft Store build. Windows confirms the licence you already own — no Zerds account, and no transcript, recording or filename is part of it
  • Windows licensing services — no Zerds server

Check it yourself

None of this asks you to trust a claim. Each one takes a couple of minutes and gives you an answer you observed rather than one I asserted.

  1. Block zerds.exe in Windows Defender Firewall, then record a meeting and transcribe it. Everything still works.
  2. Open Resource Monitor, watch the Network tab, and start a transcription. Nothing appears against the process.
  3. Pull the cable, or switch on airplane mode, and record anyway. Once the model is downloaded there is nothing left that needs a connection.

What's actually on your disk

  • The audio files, if you chose to keep them.
  • A SQLite database holding transcripts, the search index and speaker names.
  • The models you have downloaded.
  • Anything you have exported, as ordinary Markdown, SRT or JSON files.

It is a folder. You can move it, back it up, encrypt the database with a password you set, or delete the lot. None of that needs permission from anyone.

The transcription settings: every model that can be installed, its size on disk, and whether it runs live or after the call.
The transcription settings: every model that can be installed, its size on disk, and whether it runs live or after the call.

How it runs on your machine

A transcription model downloads once, then runs offline from then on. CPU-only machines work: turn live transcription off and Zerds captures during the call and transcribes when you stop, which avoids a mid-call CPU spike. Where a GPU is available it is used.

Model sizes run from roughly 40 MB for the small English-only models to about 2.9 GB for the largest Whisper model, with the default near 830 MB. A local summarisation model is a separate download of its own.

Check your machine

How does it hear the other side without a bot?

On Windows, Zerds opens a WASAPI loopback stream: the audio the operating system is about to send to your speakers is also handed to the recorder, as a separate source from your microphone. Nothing is injected into the call and no participant is contacted, which is why it needs no integration and works with software that did not exist when Zerds was written.

Per-app scoping is the same mechanism narrowed to one process, so notifications and background music stay out of the transcript. The application has to have played audio at least once before Windows will list it.

Discord is the exception and it works the other way round: your own bot joins the voice channel and receives each participant's audio as its own stream, decrypted end to end. That is why Discord gives real names, while everywhere else gives you one mixed channel that speaker matching has to divide up.

What Zerds does not protect against

  • It is not disk encryption. If someone has your unlocked machine, they have your recordings — the optional database password protects the transcripts, not the audio files.
  • It is not a secure-erase tool. Deleting a recording removes the file the ordinary way; recovering deleted data from a disk is a different problem.
  • It cannot stop anyone else in the meeting from recording it too, and it does not know whether they are.
  • It does not obtain consent from other participants, or announce the recording to them, on your behalf. The one exception is Discord, where your bot posts a message in the channel when it joins.

Security posture

No borrowed badges. There is no SOC 2, no ISO 27001 and no third-party security audit behind this product, and we will not imply otherwise. What there is instead is on this page: every network call the application can make, named with where it goes, and steps you can run yourself to check each one.

The dependency tree is scanned against the RustSec advisory database. Database queries are parameterised. Model downloads are checked against expected digests with size caps, and archive extraction is hardened against path traversal. The optional review dashboard binds to localhost only, is read-only, escapes all HTML, and sets a Content-Security-Policy.

Found something? Report it to [email protected]. There is no bounty programme; saying so plainly is more useful than leaving you to guess.

Security documentation

Buy — $34.99 once

We do not offer a voluntary money-back guarantee. Refund rights required by law still apply. Stripe is the merchant of record and may issue refunds at its discretion to resolve disputes within 60 days of purchase. Read Stripe's refund policy.