How it works Features Pricing Blog Tools
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, transparent NSWindow for 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