macOS · Windows · Linux · Open source

Meeting notes
without the bot.

Steno records the call from your computer's own audio, transcribes and summarises it on-device, and writes plain Markdown you own. Nobody sees a notetaker join. Bring your own model. Fork the whole thing.

Steal our code (MIT says you may)
Zoom started using your microphone14:00
Produktstrategie: „90/10“ & Roadmap für Q43 attendees from your calendar
Not this oneRecord
After the callprocessing
  1. Capturesystem audio + mic, two lanes
  2. TranscribeParakeet TDT v3 · on-device
  3. Diarise3 speakers · 2 known voices
  4. Summariseyour model · text only
  5. WriteMarkdown · VTT · JSON
How it works

Record without joining. Process without uploading.

When another app opens your microphone, a small prompt asks whether to record. The other side of the call comes from the system audio, your side from the mic, kept as two lanes so Steno always knows who is “me” and who is “them”. No bot joins. Nobody is told.

  • Zoom, Teams, Meet, FaceTime, Slack, phone calls, in person
  • On-device transcription with Parakeet or Whisper
  • Remembers voices: name a speaker once
  • German, English and the Denglish in between

Bring your own model

Steno doesn't resell tokens. Transcription and speaker recognition run on your machine; the summary, the task list and the Denglish cleanup go to whatever model you point it at. A base URL and a key, nothing else.

⌂
Ollama
localhost:11434
⌂
LM Studio
localhost:1234
⇄
ChatGPT
your own plan
⇄
OpenAI API
api.openai.com
⇄
OpenRouter
openrouter.ai
⇄
Anything else
compatible URL
  • No account. No subscription. No quota caps.
  • Fully offline with a local model.
  • Only transcript text ever leaves the machine, and only to the endpoint you chose.
Privacy

There is no Steno server.

Every row on the right is a design constraint, not a policy page. Any code path that sends bytes over the network is a destination you configured, or the text-only model client. Audio has no way out.

  • Works offline with a local model
  • Audio retention is a setting, with a per-meeting override
  • Plain files you can grep, sync and back up yourself
WhatWhere it goes
Meeting audio
A folder you choose. Deleted per your retention setting.
Transcript text
The model endpoint you configured, and only there.
Voice embeddings
A local SQLite database. Never uploaded.
Summary and tasks
Markdown, VTT and JSON on your disk. Steno never syncs.
Phone recordings
Your phone to your computer over the local network. TLS, pinned keys.
stays on your machinegoes where you said
Open source

If you don't like something, fork it.

~/code
$gh repo fork NicolaiSchmid/steno --clone
✓ Cloned steno into ./steno
$cd steno && cat AGENTS.md
# Steno · bot-free meeting recorder. Scope and every settled decision live in .plans/
$swift test
✓ StenoCore · StenoAudio · StenoSpeech · StenoLLM · all green
$
  • Change the templates. Summaries follow Markdown templates you can edit or add.
  • Add a destination. Write meetings to whatever your notes live in.
  • Ship your own build. Sign it yourself or install it from source.
MIT licensedSwift core · Rust port in progress

Your meetings deserve better than a bot.

Steno is free, open source and runs on your machine. Install it, point it at a model, and the next call writes its own notes.

  • macOSApple Silicon · signed and notarized
  • Windowsx64 · arm64
  • LinuxAppImage · x64