GuidesPrivacy & controlWhat stays on your device
Intermediate6 min read

What stays on your device

An honest map of every point where InkSpoke does and does not touch the network — and how to verify it yourself.

InkSpoke is offline-first, but "offline-first" is a design stance, not a promise that the app never opens a socket. This guide draws the line precisely, because a vague privacy claim is worse than none.

The dictation pipeline

This is the part most people mean when they ask whether InkSpoke is local. If you select an on-device speech model and an on-device refinement model, then your audio and the resulting text never leave your machine. Transcription runs through Whisper locally; refinement runs through a local model. Nothing is uploaded, and the feature works with your network cable unplugged.

If you select a cloud speech model or a cloud refinement model — including the built-in InkSpoke option — then the relevant audio or text is sent to that provider for that request. That is the entire trade: accuracy and speed in exchange for the data leaving the device.

The cloud/local decision is made from the model that actually gets resolved at request time, not from what is written in your settings file. This matters on a fresh install, where an unset model can still resolve to a cloud default.

What contacts the network regardless

Two things happen at every launch that are not covered by your model choice, and there is currently no setting to turn either off:

On launchWhat is sentCan you disable it?
Device registrationA device fingerprint derived from a stable hardware ID, plus the platform nameNo — it runs before sign-in, and only skips once a device key is already cached
Update checkA version query to the update feedNo in-app toggle
!
If you need a genuinely air-gapped setup, this is the honest answer: block InkSpoke at the firewall. There is no in-app switch that guarantees silence on the wire, and we would rather tell you that than let you discover it with a packet sniffer.

Telemetry and crash reporting

There is none. InkSpoke ships no analytics, product-telemetry, or automatic crash-reporting library at all — there is no usage endpoint on the platform for one to call. Application logs are written to local files and stay there until you choose to send a diagnostic report.

What is written to disk

Your settings, and a local SQLite database holding dictation history, workspaces, vocabulary, and voice commands:

PlatformLocation
Windows%APPDATA%\InkSpoke\
macOS~/Library/Application Support/InkSpoke/
Linux~/.config/InkSpoke/
Models and recordings can be relocated to another drive from Settings → Storage; the settings file, database, and logs always stay in the folder above. If in doubt, check the Storage page — it shows the paths currently in use.

API keys are the exception — they are never written to the settings file in readable form. How they are protected differs by platform, and the differences are worth knowing:

PlatformHow keys are protected
macOSThe system Keychain
WindowsAn encrypted file, using the OS data-protection API tied to your user account
LinuxThe Secret Service keyring, via secret-tool
!
On Linux, if no Secret Service keyring is available, InkSpoke falls back to a file that is merely encoded, not encrypted — readable by anything that can read the file, though it is written with restrictive permissions. If you store provider keys on Linux, make sure a keyring such as GNOME Keyring or KWallet is actually running.
!
Dictation history stores both the raw transcript and the refined text in plain text, and a compressed copy of the audio is saved alongside it. See History, audio, and retention — this one surprises people.

Verifying it yourself

Don't take our word for it. Point a network monitor at the app and dictate:

  1. 01
    Pick on-device models
    Choose a local Whisper model for speech and a local model for refinement, so nothing in the pipeline is expected to leave.
  2. 02
    Start a monitor
    Little Snitch or LuLu on macOS, the Windows Resource Monitor network tab, or ss -tp / Wireshark on Linux.
  3. 03
    Dictate a few sentences
    You should see no outbound traffic during transcription or refinement.
  4. 04
    Restart the app and watch again
    Now you will see the device registration and update check described above. That is expected, and it is the honest limit of the offline claim.
Next in this track

Keep going.