$ cat ~/work/vani.case

Vani.
macOS app · Shipped
// On-device macOS dictation — hold Fn, speak naturally, get polished text in any app instantly. Fully private: SpeechAnalyzer and Foundation Models run entirely on your Mac.
// Impact at a glance
- - Hold-Fn dictation that injects polished text into any active app — no copy-paste, no app-switching
- - SpeechAnalyzer + Foundation Models run entirely on-device — no API keys, no subscriptions, no network calls
- - Context-aware tone adjustment for email, Slack, code, and more — iCloud sync across all Macs
// summary
Vani is a native Swift macOS menu bar app. Hold Fn from any app, speak naturally, and polished text appears instantly in whatever window is focused — powered entirely on-device by Apple's SpeechAnalyzer for transcription and Foundation Models for cleanup. No servers, no API keys, no subscriptions.
// problem
Dictation tools either require cloud round-trips or are locked to one input field. There is no frictionless way to speak naturally and get edited text wherever your cursor is, without sending audio to a server.
// what I built
A tiny waveform pill appears when Fn is held, SpeechAnalyzer transcribes on-device with Whisper-class accuracy, Foundation Models cleans up grammar and filler words with context-aware tone, and the result is injected via ⌘V into the focused app — all on your Mac, zero latency from a network hop.
// core experience
- - Hold Fn from any app — Terminal, Chrome, Slack, Xcode — a floating pill shows the waveform while you speak
- - Foundation Models auto-detects context (email, Slack, code comment) and adjusts polish style accordingly
- - iCloud sync for hotkey, vocabulary, and context preferences across all your Macs
// architecture
- - Swift 6 + SwiftUI menu bar app targeting macOS 26 (Tahoe), Apple Silicon only
- - SpeechAnalyzer framework for fully on-device speech-to-text at Whisper-class accuracy
- - Foundation Models framework for on-device AI cleanup — no API keys, no external model calls
// ai involvement
Both the STT and cleanup stages run entirely on the device using Apple's new macOS 26 frameworks. The product work is making that pipeline feel instant and context-aware without ever touching a server.
// challenges
- - Targeting macOS 26 frameworks (SpeechAnalyzer, Foundation Models) that are brand new and sparsely documented
- - Text injection into arbitrary apps via ⌘V without stealing focus or disrupting clipboard state
- - Custom vocabulary biasing for names and jargon that SpeechAnalyzer mishears by default
// outcome
v0.1.2 released — core dictation loop works end-to-end. Notarization and custom vocabulary are the remaining milestones before public launch.
// why this matters
It shows I can ship native Swift products using bleeding-edge Apple frameworks before the community has established patterns, and build privacy-first tools that disappear into the desktop.
// reflection
The hardest constraint is staying off-network. Every design decision — from STT to cleanup to injection — has to work in a completely on-device pipeline with no fallback to a cloud API.
// capabilities
// links