Skip to main content
Steno processes your recordings using two AI models that run locally on your hardware. After the initial model download, the app makes no network requests related to your recordings by default. Your audio, transcripts, and summaries stay on your Mac unless you optionally configure a cloud summarization model (see below).

The processing pipeline

When you stop a recording, Steno runs this sequence entirely on your device:
Audio file (local)
  → whisper.cpp (on-device transcription)
  → transcript.txt (saved locally)
  → Ollama (on-device LLM)
  → summary.md (saved locally)
In the default local configuration, no step in this pipeline contacts an external server. The models are downloaded once during setup and then run offline indefinitely. If a cloud summarization model is configured, the transcript step is sent to that provider’s API instead of local Ollama.

What runs on your Mac

Transcription — whisper.cpp Steno uses whisper.cpp, a C++ port of OpenAI’s Whisper model optimized for Apple Silicon. The model weights are stored in ~/Library/Application Support/stenoai/ and executed entirely in-process. There is no Whisper API call. Summarization — Ollama Steno bundles Ollama, which manages and runs small language models locally. When Steno starts, it launches a local Ollama server that by default listens only on 127.0.0.1 (loopback). All summarization and query requests go to http://localhost:11434 — they do not leave your machine unless OLLAMA_HOST is overridden in your environment.

What network requests does Steno make?

RequestWhenWhy
Model downloadFirst launch / setup onlyDownloads Whisper and Ollama model weights
Update checkOn app launchChecks github.com/ruzin/stenoai for new releases
Nothing elseNeverNo telemetry, no usage tracking, no audio upload
To verify this yourself, you can monitor network traffic with Little Snitch or macOS’s built-in nettop while Steno is processing a recording.

Where your data is stored

All data lives in ~/Library/Application Support/stenoai/:
stenoai/
├── recordings/      # .wav audio files
├── transcripts/     # .txt verbatim transcripts
├── output/          # .md summaries and notes
└── models/          # Whisper model weights
Ollama model weights are stored separately in ~/.ollama/models/ (Ollama’s default location).

Using a cloud model (optional)

Steno optionally supports OpenAI, Anthropic, or a custom API endpoint as an alternative to the local Ollama model. If you configure a cloud model in Settings → Models, your transcripts (not audio) are sent to that provider’s API for summarization. This is opt-in, off by default, and clearly indicated in the UI. If you work with confidential data, use the local model.
No. The Steno app does not include any analytics, crash reporting, or telemetry. In the default local configuration, the only outbound requests from the app are the update check on launch and model downloads during setup. If you enable a cloud summarization model, transcripts are sent to that provider’s API. (The Steno documentation site itself uses PostHog for anonymous visitor counts — this is independent of the app and does not run when you use Steno.)
Yes, after the initial setup. Download the app and models on a connected machine, then move the installation to your air-gapped environment. All processing runs offline.
Steno is designed for professionals handling confidential audio. Because all processing is local and no data leaves your device, it is suitable for use cases where sending audio to a cloud service would be inappropriate — clinical consultations, legal calls, financial briefings. Review your organization’s specific policies before using any recording tool for regulated data.
Steno bundles a copy of Ollama and starts it as a local process on 127.0.0.1:11434 when the app launches. It is not accessible from the network. When you quit Steno, Ollama is stopped.