Privacy, local data and exports in Soufflé

Speech recognition runs locally and your archive lives in a folder you control. This guide lists network connections, explains exports and deletion, and shows how MCP clients or the command line can use your transcripts.

Updated

Start here

  1. Leave Ollama on localhost if you want summary and dictation-polish requests to remain on this Mac. A remote server you choose receives the text sent for those tasks.
  2. Use Settings → System → Data to reveal or export your archive. Back up the data folder before moving or deleting it.
  3. Choose a meeting export for a single transcript, or use the archive export for everything. Connect an MCP client only when you want it to have access to your local transcripts.

What touches the network

The privacy claim is worth checking rather than believing, so here is every outbound connection the app makes.

huggingface.coDownloads your selected speech model on first use. No audio or transcript is sent with that request. Once the model is installed, transcription works offline.
api.github.comOnce a day, and whenever you press Check for updates, asks whether a newer release exists, and fetches the release notes for What's New. It sends nothing but the request: no identifier, no account, no usage data. Turn the daily check off in Settings → System → About.
github.comOnly if you press Download update: fetches the signed update, which is verified before Install and restart is offered.
localhost:11434Your Ollama instance for summaries and dictation polish. The server receives the text to process. With localhost it stays on this Mac; with a remote address selected in Settings → AI, it goes to that server. Ollama models are downloaded by that instance.

Audio stays on your Mac. Transcripts, notes and summaries are stored in a local SQLite database: Settings → System → Data exports them. Text processing is also local with the default settings. If you configure a remote Ollama instance, that server receives the text used for summaries or dictation polish.

Where your data lives

Everything sits in one folder, ~/Library/Application Support/com.souffle.desktop/. Settings → System → Data has a button that reveals it in Finder.

souffle.dbSQLite: meetings, transcripts, notes, summaries, dictation history, the custom dictionary and your settings.
models/Downloaded speech models, filed by engine and backend. Deleting one frees the disk; it is downloaded again if you select that model later.
recordings/Meeting audio as Ogg/Opus, one folder per meeting. Empty unless you turned recording on.
logs/Rotating application logs. This is what to attach when you report a problem.

Backing that folder up backs up everything. Deleting it returns the app to a first launch.

Export

Any meeting exports as Markdown, JSON, or SRT/VTT subtitles, with its recorded audio alongside if you kept any. The whole archive exports as a plain folder of Markdown and JSON. No proprietary container, nothing to migrate out of later.

MCP server

The bundled souffle-mcp sidecar lets Claude Desktop, Claude Code or any MCP client search and read your transcripts. It is read-only, fully local, and works even when the app is closed.

For Claude Code:

claude mcp add souffle "/Applications/Soufflé.app/Contents/MacOS/souffle-mcp"

For Claude Desktop, in claude_desktop_config.json:

{
  "mcpServers": {
    "souffle": {
      "command": "/Applications/Soufflé.app/Contents/MacOS/souffle-mcp"
    }
  }
}

Five tools are exposed: list_meetings, get_meeting, search_meetings, get_latest_meeting and list_dictations. Settings → System → Data carries the same snippets with the path already filled in, plus a button that tests the connection.

Soufflé's MCP server is local and read-only. A client you connect can then use the transcripts with its own AI provider; that client's privacy settings apply to that use.

Headless CLI

The souffle binary transcribes a file without launching the app. It ships inside the app bundle and is not added to your PATH, so invoke it by full path or symlink it once.

# Run directly
"/Applications/Soufflé.app/Contents/MacOS/souffle" --list-engines

# Or expose it as a `souffle` command
ln -s "/Applications/Soufflé.app/Contents/MacOS/souffle" /usr/local/bin/souffle

# Transcribe a file, JSON on stdout
souffle --transcribe-file audio.wav --json
--transcribe-file <WAV>Transcribe a WAV file and exit.
--jsonEmit one machine-readable JSON object instead of text.
--repeat NRun the same file N times. The model loads once, so this doubles as a benchmark harness for comparing models on your machine.
--list-enginesList the available engines.
--list-modelsList every engine, model and backend combination with its install status.
--engine, --model, --backendOverride what is saved in Settings for this run.

It reads the same database and the same downloaded models as the app, so anything already installed is reused.