SayEcho

Privacy

What leaves, and what doesn't

Dictation means handing a program your microphone. Here is exactly what SayEcho does with it — and where the honest limits of that claim are.

Outbound

Five moments SayEcho could speak.

You add a cloud provider

Your audio goes to the one provider you chose, with your key. Self-host an OpenAI-compatible endpoint and it never leaves your network.

You enable a model download

SayEcho fetches the Whisper model or wake-word models once, from GitHub, then stops.

The update check is on

SayEcho asks GitHub Releases whether a newer version exists. Switch it off and it stops asking.

You dictate locally

Nothing. Audio goes to a model on your own CPU and the transcript goes to your cursor.

Telemetry is on

Nothing leaves. Counts go into SQLite on this machine, where you can read and delete them.

Settings → Privacy shows whether your current setup can reach the network at all, plus the host, reason, and time of every request SayEcho has made.

At rest

What SayEcho keeps.

Transcripts

History lives in a local SQLite database. Search it, export it to JSON, or clear it. Turning History off stops SayEcho writing to it at all.

API keys

Stored in the OS keychain — Credential Manager on Windows, Keychain on macOS, Secret Service on Linux — and never returned to the interface that saved them.

Telemetry

Opt-in. Event counts and coarse metadata like word count. Never audio, transcript text, file paths, or window titles.

Models

Whisper and wake-word models are downloaded once into SayEcho's app data directory and used offline from then on.

Limits

Three things this can’t prove.

The request log only sees SayEcho. It records requests SayEcho itself made. No process can observe its own operating system’s traffic, so this is evidence, not a packet capture.

Plugins are outside it. A native plugin runs as real code in the process and can make requests that never pass through the code the log instruments. That is why installing one shows you what it asks for and waits. The plugin contract is public.

An armed mic is an open mic. With the wake word on, your OS indicator stays lit — because it should. Audio is processed and discarded locally, but the microphone is genuinely open, and no wording changes that.

The most complete answer to all three is the one open source gives you: read the code, or build it yourself and run what you compiled.

Say your next email instead

Free and open source, with no account to make. Install it, press the shortcut, and start talking.

Or install from a terminal: macOS and Linux

curl -fsSL https://raw.githubusercontent.com/vedantnimbarte/Echo/main/scripts/install.sh | sh

Windows PowerShell

irm https://raw.githubusercontent.com/vedantnimbarte/Echo/main/scripts/install.ps1 | iex

SayEcho isn’t code-signed yet, so Windows and macOS warn you the first time you open it. Here’s what you’ll see.