π€ Professional Offline Voice Typing Platform
A complete offline voice typing solution for desktop and mobile.
No cloud. No subscriptions. 100% private.
Quick Start β’ Features β’ Installation β’ Documentation β’ Contributing
| App | Platform | Tech Stack | Status |
|---|---|---|---|
| SONU Desktop | Windows, macOS, Linux | Tauri + Rust + whisper.cpp | β v2.1.0 |
| Voice AI | Android | Rust + whisper.cpp | β v1.2.1 |
| SONU Desktop (Legacy) | Windows | Electron + Python | ποΈ v1.0.0 |
stateDiagram-v2
[*] --> Idle: App Launched
Idle --> ModelLoading: Load Model
ModelLoading --> Ready: Model Loaded
Ready --> Recording: Hotkey Pressed
Recording --> Processing: Hotkey Released
Processing --> VAD: Audio Captured
VAD --> Transcribing: Speech Detected
VAD --> Ready: No Speech
Transcribing --> Typing: Text Ready
Typing --> Ready: Complete
| Feature | Description |
|---|---|
| π 100% Offline | All processing stays on your device |
| π Fast | Optimized whisper.cpp for real-time transcription |
| π― Accurate | OpenAI Whisper models (tiny to large-v3) |
| π Smart VAD | Filters silence automatically |
| β¨οΈ Auto-Type | Pastes text into any application |
| π Multi-Platform | Desktop + Mobile support |
# Navigate to Tauri app
cd apps/tauri-v2
# Install dependencies
npm install
# Run in development
npm run tauri dev
# Build for production
npm run tauri build# Navigate to mobile app
cd apps/mobile
# Build APK
./build.shWe recently completed a comprehensive transformation of the SONU codebase:
- π Comprehensive Input Validation - Prevents injection attacks, path traversal
- π¦ SafeLock System - Replaces all 77 dangerous
.unwrap()calls - π‘οΈ API Key Validation - Secure storage with OS keychain integration
- β 40+ Unit Tests Added for validation and safety
- π¦ main.js Refactored - 5,883 lines β 200 lines (96% reduction)
- ποΈ Modular Services - Window, typing, recording services separated
- π Model Configs Extracted - Single source of truth in
shared/config/models.json - ποΈ Removed Duplicates - Deleted handy-base (1,500+ duplicate lines)
- π§ͺ 40+ New Tests - Unit, integration, and E2E tests
- π Playwright E2E - Full workflow testing
- π Coverage Increased - From 7% to 40%+
- β All Tests Passing
- π Clean Structure - Organized by concern (main/, services/, utils/)
- π§Ή Consolidated Assets - Unified icon and resource locations
- π¦ Docker Support - Development and production containers
- π§ Helper Scripts - setup.sh, test-all.sh, build.sh
- π 10+ New Docs - Complete guides and API references
- π CI/CD Pipeline - GitHub Actions with multi-platform builds
- π³ Docker Compose - Full development environment
- π Brand Guidelines - Professional design system
| Metric | Before | After | Improvement |
|---|---|---|---|
| Code Quality | B- | A | Critical fixes |
| Test Coverage | 7% | 40%+ | +33% |
| main.js Size | 5,883 lines | ~200 lines | -96% |
| Security Issues | 8 critical | 0 | Fixed all |
| Documentation | Basic | Complete | 10+ new docs |
| CI/CD | None | Full | Multi-platform |
See full details: IMPLEMENTATION_STATUS.md
| Shortcut | Action |
|---|---|
| Alt (hold) | Start/stop dictation (default, configurable) |
| Ctrl+Shift+D | Toggle Debug Mode (shows advanced options) |
| Ctrl+/ | Show keyboard shortcuts help |
| Escape | Cancel current recording |
Press Ctrl+Shift+D to enable Debug Mode. This reveals:
- Advanced timeout options (5 seconds, 30 seconds)
- Log level controls
- System paths and diagnostics
- Additional configuration options
SONU/
βββ apps/
β βββ tauri-v2/ # π₯οΈ Desktop app (Tauri + Rust) - v2.1.0
β β βββ src/ # React frontend
β β βββ src-tauri/ # Rust backend
β β βββ e2e/ # E2E tests
β βββ mobile/ # π± Android app (Voice AI) - v1.2.1
β β βββ src/ # Rust core
β βββ desktop/ # ποΈ Legacy Electron app (refactored)
β βββ src/
β βββ main/ # Entry points
β βββ services/ # Business logic
β βββ utils/ # Utilities
βββ shared/ # π Shared configurations
β βββ config/ # Model configs, defaults
βββ .github/ # π€ CI/CD workflows
βββ docker/ # π³ Docker configurations
βββ docs/ # π Documentation
βββ scripts/ # π οΈ Helper scripts
βββ README.md # This file
| Version | Date | Highlights |
|---|---|---|
| 2.0.0 | 2026-01-11 | Complete rewrite to Tauri + Rust |
| Version | Date | Highlights |
|---|---|---|
| 1.2.1 | 2025-12-XX | Latest Android release |
| Version | Date | Highlights |
|---|---|---|
| 1.0.0 | 2025-XX-XX | Original Electron + Python |
- Rust 1.70+ (
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) - Node.js 18+ (for Tauri frontend)
- Android NDK (for mobile builds)
We follow Semantic Versioning:
- MAJOR (X.0.0) - Breaking changes, architecture rewrites
- MINOR (0.X.0) - New features, backward compatible
- PATCH (0.0.X) - Bug fixes, performance improvements
MIT License - See LICENSE for details.
- whisper.cpp - Fast Whisper inference
- Tauri - Cross-platform desktop framework
- Handy - Architecture inspiration
- Wispr Flow - UI/UX inspiration
Made with β€οΈ by the SONU team