Cloud dictation tools are fast — but every word you speak is sent to a remote server, processed there, and returned. For personal notes, client work, or anything sensitive, that's a problem.
Lexis runs entirely on your Mac. Hold one key, speak, release — the transcribed text appears instantly wherever your cursor is. No internet required. No data leaves your device. Powered by Whisper on Apple Silicon.
Closed Beta
Currently invite-only — a personal license key is required.
🔒
100% local — zero telemetry
Lexis never connects to a transcription server. Audio is processed on-device using the open-source Whisper model via Apple's MLX framework. Your microphone data stays on your Mac, always.
Pricing
Trial
Free
14 days · no card required
Full feature access
All languages
Unlimited dictation
After trial
Pro
€5 / month
Unlimited · cancel anytime
Unlimited dictation
All languages
Configurable shortcut
Personal vocabulary
What Lexis does
Dictate into any app — browser, editor, mail, notes, chat
Push-to-talk: hold your shortcut key, speak, release — text appears instantly
Runs 100% locally on Apple Silicon — no cloud, no latency, no privacy concerns
Automatic language detection or manual selection (German, English, and more)
Personal vocabulary for names, brands, and technical terms
Configurable shortcut — right Option by default, change to any key you prefer
Getting started
1
Download & run the installer
Double-click the installer. Everything is set up automatically — Python and all dependencies are installed automatically, no Terminal required.
2
Grant Accessibility permission
Lexis needs one-time Accessibility access to type text into other apps. macOS will prompt you automatically — open System Settings and enable it.
3
Start dictating
Click anywhere, hold ⌥ Right Option, speak naturally, release — text appears at your cursor. That's it.
Change Log
v1.11.2
Fix: Warm-up after sleep/wake
Model is now re-warmed immediately after the Mac wakes from sleep — no more cold-start delay after opening the lid
v1.11.1
Fix: Faster warm-up, cleaner menu structure
Keep-warm interval reduced from 3 to 2 minutes — less cold-start lag after short breaks
Settings submenu groups secondary options (Autostart, Sounds, App Language, License, Support Log)
"Keep Model Warm" hidden from menu — option remains active in the background
v1.11.0
New: App language switchable — German / English
New menu item "App Language" — switch between Deutsch and English, takes effect after restart
All menu items, dialogs, onboarding pages and system alerts fully translated
Hallucination filter now also catches repetitive character sequences (e.g. 단단단단…) and discards them
v1.10.1
Fix: Onboarding text, waveform overlay refined
Onboarding text revised: clean line breaks, "Whisper" replaced with "Lexis"
Onboarding page 3: microphone hint removed, permissions are requested automatically on first launch
Waveform overlay: 16 annular rings for smooth glow without visible banding
Sounds toggle in menu — Tink on record start, Pop on stop
v1.10.0
New: Onboarding, waveform overlay, audio rescue
First launch walks new users through shortcut, menu features and accessibility permission
Accessibility permission is requested automatically on first start — no lost text on first dictation
Animated waveform overlay at the bottom of the screen shows real-time RMS during recording
Recording limit raised from 30s to 5 minutes — long monologues are no longer cut off
On unexpected abort (watchdog, PortAudio crash) the audio captured so far is still transcribed and injected
v1.9.9
Fix: History duplicates, hallucination filter, feedback signal
Menu icon briefly shows "✓ Lx" after each dictation — visible confirmation that text was processed
History menu no longer accumulates ghost entries when the same text is dictated multiple times
Identical text is only added to history once within a 10-second window
Hotkey debounce prevents accidental double-triggers under 300 ms
Hallucination filter extended with common German Whisper phantom phrases
v1.9.8
New: Update notification in menu
Once a day Lexis checks for a new version in the background — even when running continuously
When a new version is available, a notice appears at the top of the menu — no dialog, no popup
Clicking the notice opens the download page directly in the browser
v1.9.5
Fix: No more cold-start latency after a long pause
Whisper model is silently kept warm every 3 minutes of inactivity
First dictation after a long pause responds just as fast as all subsequent ones
Only active when Lexis is idle — no impact on ongoing dictations
v1.9.2
New: Dictation history
The last 10 dictations with timestamps are available in the menu under "History"
Click an entry to copy the full text to the clipboard
History is stored locally and persists across restarts
v1.8.3
Fix: Whisper auto-comma before voice commands removed
"I have a question, colon" now correctly yields "I have a question:" instead of "I have a question,:"
Whisper inserts commas on speech pauses before command words — these are now detected and stripped before processing
Legitimate commas in the text are left untouched
Only active when Voice Commands are enabled
v1.8.2
Fix: Auto-restart and heartbeat against total PortAudio failure
Launcher automatically restarts Python when PortAudio is permanently frozen (max. 5× per minute)
After 3 failed recovery attempts: ⚠ Lx icon, then clean restart
Heartbeat detection: no audio callback for 8s during recording → immediate recovery
Microphone is no longer held open permanently — available again immediately after restart
v1.8.1
Fix: Lexis recovers reliably after PortAudio hang
Stream creation now runs with a timeout — PortAudio zombie state can no longer freeze Lexis permanently
Recovery always has a finally block — _is_recovering=True can no longer get stuck
Old stream object is explicitly closed — microphone is released immediately after a hang
Watchdog detects a stuck recovery and forces reset after 60s
v1.8.0
New: Voice Commands
Spoken commands are automatically converted to punctuation — "comma", "period", "question mark", "new paragraph" and more
Supports German and English ("Komma", "Neuer Absatz", "exclamation mark", …)
Spaces before punctuation are cleaned up automatically
Voice Commands can be toggled on/off in the menu
v1.7.6
Fix: Lexis recovers automatically after sleep/wake
Closing and reopening the laptop no longer breaks Lexis — system wake is detected and the audio stream is restarted after 4s
Watchdog timeout for stuck recordings reduced from 120s to 30s
v1.7.5
Fix: Microphone dialog + watchdog against frozen recording
Launcher now runs as a real NSApplication with run loop — the only reliable way for TCC to show the dialog
Microphone permission is actively requested before Python starts, not passively on CoreAudio access
Dialog appears as "Lexis" even on Macs without a prior Lexis installation
Watchdog now also detects frozen recordings (microphone held open) and aborts after 120s
v1.7.3
Fix: Microphone dialog reliably appears on first launch
Launcher now requests microphone permission directly via AVFoundation — the only reliable method on macOS 14+
Dialog appears as "Lexis" on the very first launch, regardless of Python installation or prior permissions
Kein Python.app-Patching mehr nötig
v1.7.2
Fix: Mikrofon-Dialog erscheint zuverlässig auf Neuinstallationen
Python.app wird wieder mit NSMicrophoneUsageDescription gepatcht — diesmal mit Ad-hoc-Signatur (kein Entwicklerzertifikat nötig, funktioniert auf jedem Mac)
macOS zeigt den Mikrofon-Freigabe-Dialog beim ersten Start korrekt an
v1.7.1
Fix: Menü-Icon und Mikrofon-Dialog funktionieren jetzt zuverlässig
Lexis.app verwendet jetzt eine kompilierte Binärdatei statt eines Bash-Skripts — macOS erkennt Lexis korrekt als GUI-App
Menü-Icon erscheint zuverlässig nach dem Start
Mikrofon-Freigabe-Dialog erscheint korrekt unter "Lexis" (nicht mehr unter "Python" oder "Terminal")
Bedienungshilfen-Berechtigung wird Lexis.app korrekt zugeordnet
v1.7.0
Fix: Microphone dialog reliably appears on first launch
Core fix: Lexis now launches correctly via macOS LaunchServices — microphone permission dialog is guaranteed to appear on first start
Autostart (LaunchAgent) now uses "open Lexis.app" instead of Python directly — macOS correctly identifies Lexis as a GUI app
Existing autostart entries are automatically migrated to the new format on update
Microphone check now aborts cleanly after 10 attempts instead of retrying indefinitely
v1.6.1
Fix: Microphone dialog shows "Lexis"
Installer patches and re-signs Python.app — macOS now asks "Lexis wants to access your microphone"
Lexis appears correctly in System Settings → Privacy → Microphone
Audio stream restarts automatically after permission is granted
v1.6.0
Microphone dialog + support log
Fix: Microphone permission dialog now correctly runs on the main thread
New: "Open Support Log" in the menu — log file accessible directly in Finder
Log is now stored permanently under ~/Library/Logs/Lexis/ (no longer in /tmp)
config.json in the install folder is now hidden
v1.5.9
Fix: Microphone dialog appears reliably
Microphone request now happens after app launch, not before — dialog is guaranteed to appear
v1.5.8
Fix: Microphone dialog now appears reliably
AVFoundation package was missing from the installer — microphone request was silently skipped
macOS system dialog for microphone access now appears on first launch
v1.5.7
Clean install folder
Internal files in /Applications/Lexis are now hidden — only the app and uninstaller are visible
Folder now shows the Lexis icon
v1.5.6
Microphone permission on first launch
Lexis automatically requests microphone access on first launch
If already denied: dialog with a direct link to System Settings
v1.5.5
Download progress on first launch
Menu bar shows "Lx ↓ 45%" while the Whisper model (~850 MB) is downloading
No more silent waiting — immediately visible that Lexis is working
v1.5.4
Fix: License key dialog no longer hangs
Deadlock in key dialog fixed — no more spinning beach ball
New "From Clipboard" button: copy your key, then click — works reliably
v1.5.3
Fix: SSL & key input
SSL connection now uses certifi — fixes "No connection" on python.org Python
Key input field is wider and monospaced — no more overflow
Clipboard polling: key is automatically inserted as soon as it is copied, even after the dialog is already open
"Retry" button on connection error instead of immediately quitting
v1.5.2
Fix: Architecture conflict (arm64 / x86_64)
Installer and launcher now explicitly enforce arm64 — prevents Rosetta conflict on first launch
v1.5.1
Installer: automatic Python setup
Installer automatically installs Python 3.13 from python.org — no Homebrew required
Falls back to Homebrew if python.org is unreachable
v1.5.0
Machine binding & uninstaller
Each key is bound to exactly one Mac — sharing or multiple installs are no longer possible
Binding happens automatically on first launch (hardware UUID)
Admin can reset the binding, e.g. when switching devices
Uninstaller included: Uninstall Lexis.command removes the app, venv and optionally the Whisper model
v1.4.0
Installer, license & updates
Signed & notarized .pkg installer — no Terminal required
License key validation with a 3-day grace period for network issues
Automatic update notification on launch
Usage stats in the admin panel (dictation counter per key)
Uninstaller included (Uninstall Lexis.command)
v1.3.1
Stability & stream recovery
Microphone hang fixed: sd.stop() now runs in its own thread with a timeout
Watchdog detects a permanently open microphone and restarts the stream
Improved error handling on audio device switches
v1.3.0
Vocabulary & shortcuts
Personal vocabulary for names, brands and technical terms
Continuous mode (Beta): dictate without holding a key
Language selectable manually or via auto-detect
v1.2.0
Core features
Push-to-talk dictation into any app — browser, editor, mail, chat
Automatic language detection (German, English and more)
Menu bar integration with live status
Text injection via Accessibility API (no clipboard detour)
Request Beta Access
Sign up — we'll send you a personal license key.
Terms of Service
Last updated: May 2026. Provider: Conrad Wilsdorf, Moonshot Studio, Monetastr. 4, 20146 Hamburg, Germany. VAT ID: DE301605119. Contact: launch@moonshot.de.
1. Scope
These Terms govern access to and use of Lexis, a local voice dictation application for macOS ("Software"), provided by Conrad Wilsdorf / Moonshot Studio ("Provider"). By using the Software, you agree to these terms.
2. Service Description
Lexis is a macOS application that transcribes speech to text locally on the user's device using the open-source Whisper model. No audio data is transmitted to any server. A valid license key is required to use the Software beyond the trial period.
3. Beta Phase
The Software is currently in closed beta. Access is limited to invited users. Features and pricing may change at any time during the beta phase.
4. License Key
Each user receives a personal, non-transferable license key. Sharing or reselling keys is prohibited. The Provider may deactivate keys used in violation of these terms.
5. Subscription and Payment
After the free trial, continued use requires a paid subscription billed monthly. Subscriptions renew automatically unless cancelled before the renewal date. All prices are net; applicable taxes may apply.
6. Cancellation
You may cancel at any time. Cancellation takes effect at the end of the current billing period.
7. Data and Privacy
Lexis processes all audio locally. No speech data is transmitted to the Provider or any third party. The Provider processes personal data (name, email, license key) solely for account management, in accordance with GDPR. Contact: launch@moonshot.de.
8. Governing Law
German law applies. Place of jurisdiction: Hamburg, Germany.
Legal Notice
Information pursuant to §5 TMG
Conrad Wilsdorf Moonshot Studio Monetastr. 4 20146 Hamburg Germany