Transparency
Tech Stack
Everything used to build and run LexaWrite. No black boxes.
Mac App
- Swift 5.10 - primary language for all app code
- SwiftUI - UI layer, MVVM with
@Observable - AVFoundation / AVAudioEngine - audio capture, 16 kHz mono Float32 PCM pipeline
- whisper.cpp - Georgi Gerganov's C++ port of on-device speech recognition, wrapped in a local Swift package (WhisperLocal). Version 1.7.5. Metal GPU acceleration on Apple Silicon.
- SQLite3 - transcript and dictionary storage, accessed via raw C API (no ORM)
- AppKit (macOS only) - Fn key monitoring via
NSEvent, transparentNSWindowfor the floating widget, pasteboard management for clipboard-preserving paste - StoreKit 2 - in-app purchases for the Pro subscription, managed through Apple
Backend
- Cloudflare Workers - serverless API for subscription validation and licence management. TypeScript.
- Cloudflare D1 - SQLite at the edge, used for subscription state
- Wrangler - local dev and deployment CLI for the Workers API
Website
- Astro 5 - static site generator with Cloudflare SSR adapter. Content Collections for blog posts.
- Tailwind CSS v4 - utility-first styling
- React - used only for the auth header button component (
client:only) - Cloudflare Pages - hosting and deployment, globally distributed CDN
- @astrojs/sitemap - XML sitemap generation with priority and changefreq hints
- @astrojs/rss - RSS feed for blog posts
Development Tools
- Xcode - macOS/iOS app development
- Swift Package Manager - WhisperLocal local package and whisper.cpp xcframework binary
- Node.js + npm - website and API build tooling
- Claude Code - AI-assisted development for the website, API, and documentation
Design
- Inter - variable font, UI text
- JetBrains Mono - variable font, monospaced labels and metadata
- Brand colors:
#7B3BFF(purple) ·#000000(dark) ·#ffffff(text)
AI Models
LexaWrite ships without a bundled model - users download the size that fits their hardware:
- Tiny - 75 MB, fastest, works on any Mac
- Base - 142 MB, good balance for Intel Macs
- Small - 466 MB, noticeably better accuracy
- Medium - 1.5 GB, strong accuracy on Apple Silicon
- Large - 3 GB, highest accuracy, best on M2+ with unified memory
All models are sourced from Hugging Face in ggml format compatible with whisper.cpp.
What's not used
- No cloud speech API (Google, Azure, AWS Transcribe, OpenAI Whisper API)
- No analytics SDK with personal data collection
- No third-party crash reporting that transmits audio or transcript data
- No web framework on the backend - pure Cloudflare Workers with the native fetch API