linnet/docs/reference/privacy.md

2.4 KiB

Privacy

Linnet is designed for sensitive conversations. Medical appointments, HR discussions, legal calls, and family situations where the stakes of surveillance are real. Privacy is an architectural constraint, not a policy.

Audio

Audio never leaves your machine. Transcription runs locally via Whisper. Tone annotation runs locally via a wav2vec2-based SER (speech emotion recognition) model. No audio is transmitted anywhere at any point.

This is true on the Free tier and the Paid tier.

Session data

Session transcripts, tone timelines, speaker maps, and corrections are stored in a local SQLite database on your machine. The database location is configurable via LINNET_DATA_DIR in .env.

Linnet does not sync, back up, or transmit session data to CircuitForge servers or any third party.

Telemetry

Linnet does not collect telemetry by default. No usage analytics, no crash reports, no feature tracking. The docs site uses Plausible Analytics (privacy-preserving, no cookies, no cross-site tracking) but the application itself does not.

Correction data

Corrections you make to transcripts are stored in a local dataset and used to fine-tune your local Whisper checkpoint. Correction data is never uploaded to CircuitForge. Retraining happens entirely on your hardware.

Translation

Translation is the only feature that contacts an external server. When you translate a session, transcript text (not audio) is sent to DeepL. DeepL's privacy policy governs how they handle that data.

If your conversations are sensitive enough that even text transmission is a concern, do not use translation.

What CircuitForge receives

Data type Received by CF
Audio Never
Transcript text Never
Tone annotations Never
Session metadata Never
Correction data Never
License key validation Yes (key hash only, no session content)
Docs site visits Yes (Plausible, aggregated, no PII)

Self-hosting and air-gapped use

Linnet is designed to run on your hardware without any outbound connections. For fully air-gapped operation:

  • Pre-download the Whisper and wav2vec2 model weights during setup
  • Set DEEPL_API_KEY= to blank (disables translation)
  • Do not configure a license server endpoint

See the air-gapped deployment guide in the repo for full offline setup instructions.