StenoAI is the secure privacy-first AI notepad & notetaker for confidential conversations in government & defence sectors. On Windows & MacOS.
1,310
stars
500
commits
Python
primary language
Sep 8, 2026
updated
Your private stenographer
StenoAI is the privacy-first AI notepad for all your confidential conversations. No cloud, no usage limits and your private data never leaves your premises. Record, summarize, and query your meetings using local AI models. Perfect for government, defence and C-suite professionals with confidential data needs.
Trusted by teams at AWS, Deliveroo, Tesco, Hashicorp, Rutgers & European Union.
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.
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.
[You] vs [Others] attribution live during the recording.Speaker 2 / Speaker 3 rather than one merged [Others]. Name a speaker once and Steno can suggest them in later meetings β that part is off by default, and the voice profiles never leave your Mac.ββ§R (Ctrl+Shift+R on Windows). Toggle it off in Settings if it clashes with another app. On macOS, power users can additionally bind any key of their own via the stenoai://record/start / record/stop deep links (Shortcuts app).If you already use Claude Code / Cowork with a connected Granola MCP, the
granola-to-steno skill syncs your Granola
meeting notes (titles, dates, participants, summaries, and transcripts) into
Steno's file-based store. It is idempotent and re-runnable, so you can backfill
your history once and keep it in sync on a schedule. This is an agent skill you
drop into your skills folder and invoke conversationally ("sync Granola to
Steno"), not an in-app feature. See
skills/granola-to-steno/README.md for
setup and limitations.
/steno)The steno skill makes an AI agent aware of your local
Steno notes. Run /steno (or just mention your meetings) and it pulls in the
relevant notes and acts on them β answer a question across meetings, recap your
week, extract action items, or use the meetings as source material to draft a
spec, PRD, or follow-up. It can also guide you through setting up a cloud model
(/steno setup) β OpenAI, Anthropic, AWS Bedrock, or a custom endpoint.
It's read-only over your notes (never modifies them), needs only Python 3.8+ (no
dependencies), and is a drop-in agent skill β copy skills/steno/ into your
skills folder. See skills/steno/README.md.
Steno supports Apple Shortcuts via deep links using the stenoai:// URL scheme.
stenoai://record/start?name=Daily%20Standupstenoai://record/stopIf 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
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:
stenoai://record/start?... action.stenoai).stenoai://record/start?name={calendar_event_title}Steno Start From Calendar Event).Find Calendar Events (limit to 1, sorted by start date ascending, upcoming only)URL Encode the titleOpen URLs with:
stenoai://record/start?name=<encoded title>stenoaiSteno Start From Calendarstenoai for meetings that should auto-start recording.stenoai in notes,Open URLs) for non-automated scenarios.Have questions or suggestions? Join our Discord to chat with the community.
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)gemma4:e4b-it-qat (6.1GB): Quantization-aware E4B β higher quality than E2B at a modest footprintqwen3.5:9b (6.6GB): Excellent at structured output and action itemsgemma4:12b-it-qat (7.2GB): Gemma 4 (quantization-aware) with a 256K context β best for long meetingsgpt-oss:20b (14GB): OpenAI open-weight model with reasoning capabilitiesDownload the latest release (Apple Silicon Mac, macOS 14.4 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.
Download and open the DMG file
Drag the app to Applications
When you first launch the app, macOS may show a security warning
To fix this warning:
Alternatively:
xattr -cr /Applications/Steno.appThe 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 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-windowsartifact, and run the.exeinside.
Known alpha limitations:
latest.yml) but updates are unsigned until code signing is in place.onnx-asr (ONNX Runtime) instead of MLX, with the same Parakeet model and behaviour as macOS. Whisper is also available as an engine option.Verified on Ubuntu 26.04 LTS (GNOME/Wayland, PipeWire), including system-audio loopback capture with [You]/[Others] diarisation.
Install (.deb, recommended): download stenoAI-linux-amd64.deb from the latest release and install it with sudo apt install ./stenoAI-linux-amd64.deb β apt pulls in the required system libraries automatically.
AppImage: download stenoAI-linux-x86_64.AppImage, chmod +x it, and run it. An AppImage carries no package metadata, so you must install PortAudio yourself or the setup check fails with OSError: PortAudio library not found:
sudo apt install libportaudio2
Known alpha limitations:
onnx-asr transcription, same as Windows. To use GPU-accelerated summaries, run a separately installed Ollama with a supported GPU and driver, select Settings β AI β Private Server, enter http://127.0.0.1:11434, and choose a model installed on that server.[You]/[Others] labelling works, but the acoustic multi-speaker split is macOS-only..deb installs update by downloading a new package; AppImage self-update is a follow-up.Issues + feedback welcome on the GitHub issues tracker.
git clone https://github.com/stenolabs/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.
cd app
npm run build
stenoai/
βββ app/ # Electron desktop app
βββ src/ # Python backend
βββ website/ # Marketing site
βββ recordings/ # Audio files
βββ transcripts/ # Text output
βββ output/ # Summaries
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
[Others] speaker labels: On macOS, allow Steno to record system audio in System Settings β Privacy & Security β Screen & System Audio Recording. Screen Recording access is not required.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.~/Library/Application Support/stenoai/~/Library/Application Support/stenoai/recordings/~/Library/Application Support/stenoai/transcripts/~/Library/Application Support/stenoai/output/This project is licensed under the MIT License.
Python
39.2%
TypeScript
34.3%
JavaScript
21.6%
Astro
2.2%
CSS
1.1%
StenoAI is the secure privacy-first AI notepad & notetaker for confidential conversations in government & defence sectors. On Windows & MacOS.
1,310
stars
500
commits
Python
primary language
Sep 8, 2026
updated
Your private stenographer
StenoAI is the privacy-first AI notepad for all your confidential conversations. No cloud, no usage limits and your private data never leaves your premises. Record, summarize, and query your meetings using local AI models. Perfect for government, defence and C-suite professionals with confidential data needs.
Trusted by teams at AWS, Deliveroo, Tesco, Hashicorp, Rutgers & European Union.
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.
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.
[You] vs [Others] attribution live during the recording.Speaker 2 / Speaker 3 rather than one merged [Others]. Name a speaker once and Steno can suggest them in later meetings β that part is off by default, and the voice profiles never leave your Mac.ββ§R (Ctrl+Shift+R on Windows). Toggle it off in Settings if it clashes with another app. On macOS, power users can additionally bind any key of their own via the stenoai://record/start / record/stop deep links (Shortcuts app).If you already use Claude Code / Cowork with a connected Granola MCP, the
granola-to-steno skill syncs your Granola
meeting notes (titles, dates, participants, summaries, and transcripts) into
Steno's file-based store. It is idempotent and re-runnable, so you can backfill
your history once and keep it in sync on a schedule. This is an agent skill you
drop into your skills folder and invoke conversationally ("sync Granola to
Steno"), not an in-app feature. See
skills/granola-to-steno/README.md for
setup and limitations.
/steno)The steno skill makes an AI agent aware of your local
Steno notes. Run /steno (or just mention your meetings) and it pulls in the
relevant notes and acts on them β answer a question across meetings, recap your
week, extract action items, or use the meetings as source material to draft a
spec, PRD, or follow-up. It can also guide you through setting up a cloud model
(/steno setup) β OpenAI, Anthropic, AWS Bedrock, or a custom endpoint.
It's read-only over your notes (never modifies them), needs only Python 3.8+ (no
dependencies), and is a drop-in agent skill β copy skills/steno/ into your
skills folder. See skills/steno/README.md.
Steno supports Apple Shortcuts via deep links using the stenoai:// URL scheme.
stenoai://record/start?name=Daily%20Standupstenoai://record/stopIf 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
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:
stenoai://record/start?... action.stenoai).stenoai://record/start?name={calendar_event_title}Steno Start From Calendar Event).Find Calendar Events (limit to 1, sorted by start date ascending, upcoming only)URL Encode the titleOpen URLs with:
stenoai://record/start?name=<encoded title>stenoaiSteno Start From Calendarstenoai for meetings that should auto-start recording.stenoai in notes,Open URLs) for non-automated scenarios.Have questions or suggestions? Join our Discord to chat with the community.
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)gemma4:e4b-it-qat (6.1GB): Quantization-aware E4B β higher quality than E2B at a modest footprintqwen3.5:9b (6.6GB): Excellent at structured output and action itemsgemma4:12b-it-qat (7.2GB): Gemma 4 (quantization-aware) with a 256K context β best for long meetingsgpt-oss:20b (14GB): OpenAI open-weight model with reasoning capabilitiesDownload the latest release (Apple Silicon Mac, macOS 14.4 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.
Download and open the DMG file
Drag the app to Applications
When you first launch the app, macOS may show a security warning
To fix this warning:
Alternatively:
xattr -cr /Applications/Steno.appThe 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 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-windowsartifact, and run the.exeinside.
Known alpha limitations:
latest.yml) but updates are unsigned until code signing is in place.onnx-asr (ONNX Runtime) instead of MLX, with the same Parakeet model and behaviour as macOS. Whisper is also available as an engine option.Verified on Ubuntu 26.04 LTS (GNOME/Wayland, PipeWire), including system-audio loopback capture with [You]/[Others] diarisation.
Install (.deb, recommended): download stenoAI-linux-amd64.deb from the latest release and install it with sudo apt install ./stenoAI-linux-amd64.deb β apt pulls in the required system libraries automatically.
AppImage: download stenoAI-linux-x86_64.AppImage, chmod +x it, and run it. An AppImage carries no package metadata, so you must install PortAudio yourself or the setup check fails with OSError: PortAudio library not found:
sudo apt install libportaudio2
Known alpha limitations:
onnx-asr transcription, same as Windows. To use GPU-accelerated summaries, run a separately installed Ollama with a supported GPU and driver, select Settings β AI β Private Server, enter http://127.0.0.1:11434, and choose a model installed on that server.[You]/[Others] labelling works, but the acoustic multi-speaker split is macOS-only..deb installs update by downloading a new package; AppImage self-update is a follow-up.Issues + feedback welcome on the GitHub issues tracker.
git clone https://github.com/stenolabs/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.
cd app
npm run build
stenoai/
βββ app/ # Electron desktop app
βββ src/ # Python backend
βββ website/ # Marketing site
βββ recordings/ # Audio files
βββ transcripts/ # Text output
βββ output/ # Summaries
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
[Others] speaker labels: On macOS, allow Steno to record system audio in System Settings β Privacy & Security β Screen & System Audio Recording. Screen Recording access is not required.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.~/Library/Application Support/stenoai/~/Library/Application Support/stenoai/recordings/~/Library/Application Support/stenoai/transcripts/~/Library/Application Support/stenoai/output/This project is licensed under the MIT License.
Python
39.2%
TypeScript
34.3%
JavaScript
21.6%
Astro
2.2%
CSS
1.1%