Skip to content

secfigo/stenoai

Β 
Β 

Repository files navigation

StenoAI Logo

StenoAI

Your very own Stenographer for every meeting

AI-powered meeting transcription and summarization that runs entirely on your device using small language models locally hosted. Privacy first approach & zero service costs.

StenoAI Interface

Features

  • Local transcription using OpenAI Whisper
  • AI summarization with Ollama models
  • Multiple AI models - Choose from 4 models optimized for different use cases
  • Privacy-first - no cloud dependencies
  • macOS desktop app with intuitive interface

Models & Performance

Transcription Models (Whisper):

  • small: Default model - good accuracy and speed on Apple Silicon (default)
  • base: Faster but lower accuracy for basic meetings
  • medium: High accuracy for important meetings (slower)

Summarization Models (Ollama):

  • llama3.2:3b (2GB): Fastest option for quick meetings (default)
  • gemma3:4b (2.5GB): Lightweight and efficient
  • qwen3:8b (4.7GB): Excellent at structured output and action items
  • deepseek-r1:8b (4.7GB): Strong reasoning and analysis capabilities

Switching Models:

  • Click the 🧠 AI Settings icon in the app
  • Select your preferred model
  • Models download automatically when selected
  • ⚠️ Note: Downloads will pause any active summarization

Future Roadmap

Enhanced Features

  • Custom summarization templates
  • Speaker Diarisation

Installation

Download the latest release for your Mac:

Installing on macOS

Since StenoAI is not code-signed with an Apple Developer certificate, you'll need to bypass macOS security warnings:

  1. Download DMG β†’ You may see "StenoAI is damaged and can't be opened"
  2. Right-click the DMG β†’ Select "Open" β†’ Click "Open" in the dialog
  3. Drag StenoAI to Applications folder
  4. If the app won't launch, run this command in Terminal:
    xattr -cr /Applications/StenoAI.app
  5. Right-click StenoAI in Applications β†’ Select "Open" β†’ Click "Open"

The app will then work normally on subsequent launches.

You can run it locally as well (see below) if you dont want to install a dmg.

Local Development/Use Locally

Prerequisites

  • Python 3.8+
  • Node.js 18+
  • Homebrew

Setup

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

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

# Install Ollama
brew install ollama
ollama serve &
ollama pull llama3.2:3b

# Install ffmpeg (required for audio processing)
brew install ffmpeg

# Frontend
cd app
npm install
npm start

Build

cd app
npm run build

Release Process

Simple Release Commands

cd app

# Patch release (bug fixes): 0.0.5 β†’ 0.0.6
npm version patch
git add package.json package-lock.json
git commit -m "Version bump to $(node -p "require('./package.json').version")"
git push
git tag v$(node -p "require('./package.json').version")
git push origin v$(node -p "require('./package.json').version")

# Minor release (new features): 0.0.6 β†’ 0.1.0
npm version minor
git add package.json package-lock.json
git commit -m "Version bump to $(node -p "require('./package.json').version")"
git push
git tag v$(node -p "require('./package.json').version")
git push origin v$(node -p "require('./package.json').version")

# Major release (breaking changes): 0.0.6 β†’ 1.0.0
npm version major
git add package.json package-lock.json
git commit -m "Version bump to $(node -p "require('./package.json').version")"
git push
git tag v$(node -p "require('./package.json').version")
git push origin v$(node -p "require('./package.json').version")

What happens:

  1. npm version updates package.json and package-lock.json locally
  2. Manual commit ensures version changes are saved to git
  3. git push sends the version commit to GitHub
  4. git tag creates the version tag locally
  5. git push origin tag triggers GitHub Actions workflow
  6. Workflow automatically builds DMGs for Intel & Apple Silicon
  7. Creates GitHub release with downloadable assets

Project Structure

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

Troubleshooting

Debug Logs

StenoAI includes a built-in debug panel for troubleshooting issues:

In-App Debug Panel:

  1. Launch StenoAI
  2. Click the πŸ”¨ hammer icon (next to settings)
  3. The debug panel shows real-time logs of all operations

Terminal Logging (Advanced): For detailed system-level logs, run the app from Terminal:

# Launch StenoAI with full logging
/Applications/StenoAI.app/Contents/MacOS/StenoAI

This displays comprehensive logs including:

  • Python subprocess output
  • Whisper transcription details
  • Ollama API communication
  • HTTP requests and responses
  • Error stack traces
  • Performance timing

System Console Logs: For system-level debugging:

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

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

Common Issues:

  • Recording stops early: Check microphone permissions and available disk space
  • "Processing failed": Usually Ollama service or model issues - check terminal logs
  • Empty transcripts: Whisper couldn't detect speech - verify audio input levels
  • Slow processing: Normal for longer recordings - Ollama processing is CPU-intensive especially on older intel Macs

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

MIT

About

Privacy focused AI meeting transcription and summarization using locally hosted Small Language Models

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • HTML 46.4%
  • Python 29.8%
  • JavaScript 22.6%
  • Other 1.2%