Network Disclosure
Every network request Samurai Scribe can make, and what it carries.
Meant to be checked, not believed
Your recordings, transcripts, summaries, and notes are never transmitted anywhere, under any circumstance. There is no account, no sync, no cloud processing, and no analytics. Transcription, speaker detection, and summarization all run on your machine. This list is meant to be exhaustive and verifiable — point Little Snitch or Wireshark at the app and you should see exactly this and nothing else.
Always
| When | Destination | What is sent | Can it be turned off? |
|---|---|---|---|
| Once per day | updates.samuraiscribe.com (falls back to api.github.com) | App version and OS name. No identifier, no account. | No |
| Installing an update | github.com / objects.githubusercontent.com | Nothing beyond the file request | Yes — don't install the update |
| First run / adding a model | huggingface.co | Which model file is being downloaded | Yes — don't download models |
| Activating or deactivating a licence | api.lemonsqueezy.com | Licence key and a hashed machine id | Yes — don't activate |
| About once a day — Pro licences only | api.lemonsqueezy.com | Licence key and a hashed machine id | No, but only happens once you activate a licence |
The daily update check cannot be disabled. It is how we reach you with security and correctness fixes, and an app that processes recordings you can't afford to lose is one where a silently un-updatable install is its own risk.
The licence check is how a Pro licence stays valid. It runs only if you have activated a licence — on the free tier there is nothing to check, so it never happens at all. Precisely: on app launch, but only if the last check was more than 12 hours ago, plus every 24–48 hours if you leave the app running. Launching the app repeatedly in a day does not repeat the check.
It carries no information about your meetings. It also isn't only a check on you: the app keeps working offline for 30 days between successful checks, and each successful check resets that window, so it's what stops a paid licence lapsing while you're travelling or offline.
The update check exists so we can tell how many installs are working. GitHub reports how many people downloaded the app; this reports how many still run it. The gap between those two numbers is our onboarding failure rate, and it is the only thing we measure. Requests are counted in aggregate — no per-install identifier is sent, and nothing is stored per request.
Only if you turn them on
| Feature | Destination | How often | What is sent |
|---|---|---|---|
| Google Calendar | accounts.google.com, oauth2.googleapis.com, www.googleapis.com | Every 5 minutes while connected | OAuth tokens; read-only calendar access |
| ICS calendar feed | The feed URL you provide | Every 15 minutes while connected | Nothing beyond the request |
| Release notes (Settings → Updates → Release Notes) | updates.samuraiscribe.com (falls back to api.github.com) | Only when you open it | Nothing beyond the request — not even the app version |
The "What's New" window shown after an update makes no request at all: those notes were already downloaded alongside the update itself. Only opening the full release history from Settings fetches anything.
Calendar data is fetched to your machine and cached in the local database. It is never sent to us. Refresh tokens and ICS URLs live in your OS keyring.
Local only (never leaves your machine)
| What | Where |
|---|---|
| The app talking to its own backend | 127.0.0.1:8000 |
| Summarization | 127.0.0.1:11434 (Ollama, on your machine) |
| Recordings, transcripts, notes, database | Your app data directory |
| Logs | ~/Library/Logs/SamuraiScribe on macOS,
%LOCALAPPDATA%\SamuraiScribe\logs on Windows
|
What runs without you asking
Two things, both listed above: the daily update check, and — only if you have activated a Pro licence — the daily licence check. Neither can be switched off. Between them they send your app version, your OS, and (if licensed) your licence key and a hashed machine id.
Everything else is either a one-time action you trigger yourself (downloading a model, activating a licence) or a feature you opted into (calendar sync). If you never connect a calendar and never activate a licence, the update check is the only request the app ever makes on its own.
Verifying this
The claim above is worth checking rather than trusting:
- Open Little Snitch (macOS) or Wireshark, filtering on the app.
- Record and process a full meeting.
- Confirm nothing leaves the machine.
If you find a request that isn't on this page, that's a bug — please report it.