Backend setup

June 21, 2026 ยท View on GitHub

Steno Logo

Steno

Your private stenographer

Build Release Discord License macOS Windows (alpha) Sponsors

Steno is the AI powered intelligence layer for all your confidential workflows, your private data never leaves anywhere. Record, transcribe, summarize, and query your meetings using local AI models. Perfect for government, defence, legal and C-suite professionals with confidential data needs.

Trusted by users at AWS, Deliveroo, Tesco, Hashicorp, Rutgers & European Union.

Steno

Twitter Follow

Sponsored by Gitlab Founder's Open Core Ventures.

Disclaimer: This is an independent open-source project for meeting-notes productivity and is not affiliated with, endorsed by, or associated with any similarly named company.

Sponsors

Recall.ai - API for desktop recording

If you're looking for a hosted desktop recording API, consider checking out Recall.ai, an API that records Zoom, Google Meet, Microsoft Teams, in-person meetings, and more.

๐Ÿ“ข What's New

  • 2026-06-22 ๐Ÿ›ก๏ธ Works behind corporate proxies โ€” org backup, AI, and note sync now route through your system proxy (incl. PAC) and trust the OS certificate store, so Steno works on managed enterprise networks that force egress through a proxy or inspect TLS.
  • 2026-06-22 ๐Ÿ’พ Backup status you can see โ€” when an org note fails to back up it now shows a quiet "Not backed up" indicator you can click to retry, and the failure is written to the diagnostic log, instead of failing silently.
  • 2026-06-21 ๐Ÿ”Ž Instant search (โŒ˜K) โ€” a global command palette to jump to any note from anywhere.
  • 2026-06-21 ๐ŸŽ™๏ธ Import audio files โ€” drag & drop or pick an existing recording to transcribe and summarize it.

Features

  • Privacy-first โ€” 100% on-device; your recordings, transcripts, and summaries never leave your Mac.
  • Live transcription with speaker labels โ€” Real-time on-screen text as you speak via Parakeet TDT v3 on Apple Silicon (MLX). Granola-style chat-bubble view with [You] vs [Others] attribution live during the recording and on the final transcript.
  • Auto start/stop meetings โ€” Steno notices when a meeting starts and offers to take notes, then offers to summarise when it ends. Granola-style frictionless capture.
  • System audio capture โ€” Record both sides of virtual meetings, headphones on, no extra setup or virtual cable. Native Core Audio Tap on macOS 14.4+.
  • In-app note-taking โ€” Jot notes while you record; they're folded straight into the AI summary alongside the transcript.
  • Ask your meetings โ€” Natural-language Q&A across a single note or your entire library via the Chat tab. Pulls from summary, key topics, and the full transcript.
  • Multi-language (25 live, 99 total) โ€” Parakeet covers 25 European languages with live transcription; Whisper handles 99 languages including Chinese, Japanese, Arabic, and Hindi post-stop.
  • Markdown ownership โ€” Summaries and transcripts save as clean Markdown you can edit, search, or sync to whatever knowledge base you live in.
  • Bring your own cloud model โ€” Optional OpenAI, Anthropic, AWS Bedrock (Claude โ€” including application inference profile ARNs for governed AWS environments), or custom API endpoint for users who prefer a hosted LLM.
  • Organisation AI โ€” On managed deployments, sign in to your org's Steno adapter and AI routes through it automatically โ€” no local API key, no per-user setup.

macOS Shortcuts (Optional)

Expand setup and calendar automation guide

Steno supports Apple Shortcuts via deep links using the stenoai:// URL scheme.

  • Start recording: stenoai://record/start?name=Daily%20Standup
  • Stop recording: stenoai://record/stop

How to set it up

  1. Open the Shortcuts app on macOS.
  2. Create a new shortcut (for example: "Start Steno Recording").
  3. Add the Open URLs action.
  4. Use one of the URLs above.
  5. (Optional) Add a keyboard shortcut from the shortcut settings.

Calendar event naming (optional)

If you want calendar-based names, resolve the event title in your Shortcut workflow and pass it as the name query value in the start URL.

Example:

stenoai://record/start?name=Weekly%20Product%20Sync

Calendar event start automation (via Rules bridge)

macOS Shortcuts cannot natively trigger exactly at Calendar event start.
To run this automatically on event timing, a third-party automation app is required.

This addon uses:

  • Apple Shortcuts: builds the stenoai://record/start?... action.
  • Rules โ€“ Calendar Automation: watches Calendar events and triggers the shortcut.

Architecture overview

  1. Rules App monitors upcoming Calendar events.
  2. Rules checks the event note/body for a marker keyword (for example stenoai).
  3. If matched, Rules runs a Shortcut.
  4. The Shortcut gets the next event title and opens:
    • stenoai://record/start?name={calendar_event_title}
  5. Steno receives the URL and starts recording with that name.

Step-by-step setup

  1. Install Rules โ€“ Calendar Automation on macOS.
  2. Create a Shortcut in Apple Shortcuts (example name: Steno Start From Calendar Event).
  3. In that Shortcut, add actions in this order:
    • Find Calendar Events (limit to 1, sorted by start date ascending, upcoming only)
    • Extract the event title from the found event
    • URL Encode the title
    • Open URLs with:
      • stenoai://record/start?name=<encoded title>
  4. Open Rules and create a calendar-trigger rule:
    • Source: your target calendar(s)
    • Trigger window: event start (or preferred offset)
    • Condition: event note contains stenoai
    • Action: run Shortcut Steno Start From Calendar
  5. In your Calendar event notes, add the word stenoai for meetings that should auto-start recording.
  6. Test with a near-future event:
    • create event with stenoai in notes,
    • wait for trigger,
    • confirm Steno starts and uses the event title as session name.

Notes

  • Without Rules (or another automation bridge), this cannot be fully event-driven from Calendar start time.
  • Keep using regular manual shortcuts (Open URLs) for non-automated scenarios.

Have questions or suggestions? Join our Discord to chat with the community.

Models & Performance

Transcription Models:

  • Parakeet TDT v3 (572 MB): Highest quality, supports live transcription, 25 European languages (English, Spanish, French, German, Italian, Portuguese, Dutch, Russian, Polish, Czech, and 15 others). Apple Silicon only via MLX. (default on fresh installs)
  • Whisper Large V3 Turbo (1.6 GB): Best-accuracy Whisper engine for the languages Parakeet can't speak (Chinese, Japanese, Korean, Arabic, Hindi, and 94 others). Post-stop only.

Summarization Models (Ollama):

  • gemma4:e2b-it-qat (4.3GB): Lightest Gemma 4, quantization-aware, with a real 128K context (default)
  • qwen3.5:9b (6.6GB): Excellent at structured output and action items
  • gemma4:12b (7.6GB): Gemma 4 with a 256K context โ€” best for long meetings
  • gpt-oss:20b (14GB): OpenAI open-weight model with reasoning capabilities

Future Roadmap

Enhanced Features

  • Live transcription during recording
  • NVIDIA Parakeet as a transcription engine option
  • Editing notes after processing
  • Windows version

Installation

Download the latest release (Apple Silicon Mac, macOS 12 Monterey or later):

Intel Mac users: v0.4.0 is Apple Silicon only. Stay on v0.3.8 โ€” the last release supporting Intel Macs. Auto-update on existing Intel installs will not push v0.4.0 to those machines.

Installing on macOS

  1. Download and open the DMG file

  2. Drag the app to Applications

  3. When you first launch the app, macOS may show a security warning

  4. To fix this warning:

    • Go to System Settings > Privacy & Security and click "Open Anyway"

    Alternatively:

    • Right-click Steno in Applications and select "Open"
    • Or run in Terminal: xattr -cr /Applications/Steno.app
  5. The app will work normally on subsequent launches

You can run it locally as well (see below) if you don't want to install a DMG.

Windows (alpha)

Windows 10/11 (x64) is supported in alpha, with the full pipeline verified working: record โ†’ live Parakeet transcription โ†’ batch transcript โ†’ Ollama summary, including system-audio loopback capture with [You]/[Others] diarisation.

Install: download stenoAI-windows-x64.exe from the latest release and run it โ€” it installs per-user (no admin needed) and creates Start-menu/desktop shortcuts. On first launch, Windows SmartScreen warns because the alpha is unsigned โ€” click More info โ†’ Run anyway. The first-run setup wizard then downloads the transcription model (~670 MB) and the default summarisation model, Gemma 4 E2B (~4.3 GB).

Before the first tagged Windows release lands, grab the installer from the Windows build workflow: sign in to GitHub, open the latest green run, download the stenoai-windows artifact, and run the .exe inside.

Known alpha limitations:

  • Unsigned โ€” SmartScreen warns on first launch; we'll code-sign before 1.0.
  • CPU-only summarisation โ€” the bundled Ollama runs on CPU (the NVIDIA GPU libraries are excluded to keep the download small); a separate GPU build is a follow-up. Transcription is CPU on every platform regardless.
  • Auto-update is wired (NSIS + latest.yml) but updates are unsigned until code signing is in place.
  • Transcription runs through onnx-asr (ONNX Runtime) instead of MLX, with the same Parakeet model and behaviour as macOS. Whisper is also available as an engine option.

Issues + feedback welcome on the GitHub issues tracker.

Local Development/Use Locally

Prerequisites

  • Python 3.9+
  • Node.js 18+

Setup

git clone https://github.com/ruzin/stenoai.git
cd stenoai

# Backend setup
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Download bundled binaries (Ollama, ffmpeg)
./scripts/download-ollama.sh

# Build the Python backend
pip install pyinstaller
pyinstaller stenoai.spec --noconfirm

# Frontend
cd app
npm install
npm start

Note: Ollama and ffmpeg are bundled - no system installation needed. The setup wizard in the app will download the required AI models automatically.

Build

cd app
npm run build

Project Structure

stenoai/
โ”œโ”€โ”€ app/                  # Electron desktop app
โ”œโ”€โ”€ src/                  # Python backend
โ”œโ”€โ”€ website/              # Marketing site
โ”œโ”€โ”€ recordings/           # Audio files
โ”œโ”€โ”€ transcripts/          # Text output
โ””โ”€โ”€ output/              # Summaries

Troubleshooting

Debug Logs

Setup wizard debug console: during first-time setup, expand the debug console panel to see real-time logs of model downloads and service startup.

Terminal logging (recommended for runtime issues): launch the app from a terminal to stream all logs (Python subprocess output, Whisper transcription, Ollama API traffic, error stack traces):

/Applications/Steno.app/Contents/MacOS/Steno

System Console:

# View recent Steno-related logs
log show --last 10m --predicate 'process CONTAINS "Steno" OR eventMessage CONTAINS "ollama"' --info

# Monitor live logs
log stream --predicate 'eventMessage CONTAINS "ollama" OR process CONTAINS "Steno"' --level info

Common Issues

  • Update didn't install: Auto-updates are applied on next quit. Quit via the Steno โ†’ Quit menu (not just closing the window), then reopen.
  • No system audio / no [Others] speaker labels: macOS needs Screen Recording permission. Go to System Settings โ†’ Privacy & Security โ†’ Screen & System Audio Recording, enable Steno, and relaunch the app.
  • stenoai:// deep link doesn't start recording: Make sure Steno has launched at least once after install so the URL scheme is registered. If it still fails, check the terminal log for Protocol handler registration output.
  • Recording stops early: Check microphone permissions, Screen Recording permission (if using system audio), and available disk space.
  • "Processing failed": Usually an Ollama service or model issue โ€” check the terminal logs.
  • Empty transcripts: Whisper couldn't detect speech โ€” verify audio input levels.
  • Slow processing: Normal for longer recordings; Ollama is CPU-intensive. If summaries are unusually slow, switch to a lighter model in Settings โ†’ AI (Gemma 4 E2B is the lightest/fastest).

Logs Location

  • User Data: ~/Library/Application Support/stenoai/
  • Recordings: ~/Library/Application Support/stenoai/recordings/
  • Transcripts: ~/Library/Application Support/stenoai/transcripts/
  • Summaries: ~/Library/Application Support/stenoai/output/

License

This project is licensed under the MIT License.