Ein Sprachassistent für macOS wird interessanter, wenn er nicht vorgibt, eine universelle Shell zu sein. Jev Voice geht einen engeren Weg: Du sprichst einen Befehl, lokaler Code transkribiert ihn und extrahiert seine Argumente, Jev wählt aus typisierten Aktionen, und macOS führt die endgültige Operation aus. So entsteht ein Menüleisten-Tool zum Öffnen von Apps, Tippen, Suchen, Scrollen und Steuern von Systemfunktionen, ohne die Ausführung freien generierten Texten zu überlassen.
Das Projekt ist chris-wozniczek/jev-voice-control, in Swift geschrieben und unter der MIT-Lizenz veröffentlicht. Die aktuell geprüfte Version ist Jev Voice 0.9.1. Das Package zielt auf macOS 14 oder neuer; SpeechAnalyzer-Streaming benötigt macOS 26 sowie Swift 6.2+ und Xcode 26.
Eine Menüleisten-App mit klarer Grenze
Halte ⌥Space gedrückt, sprich und lasse die Tastenkombination los, um den Befehl zu senden. Das README nennt Beispiele wie „Chrome öffnen und zu google.com gehen“, „Spotify beenden“, „hello world tippen“, „Lautstärke auf 30 setzen“, „nach Swift concurrency suchen“, „Chrome maximieren“ und „Chrome wiederherstellen“. App-Aliase wie chrome, code, cmux und settings machen gesprochene Namen toleranter.
Die App kann kurze Ausführungsantworten mit der ausgewählten macOS-Stimme vorlesen. In den Einstellungen lässt sich „Ask before running commands“ aktivieren, sodass vor der Ausführung eine Bestätigung erfolgt. Wenn Push-to-Talk nicht passt, gibt es auch einen Toggle-Modus zum Starten und Stoppen des Zuhörens.
Jev Voice unterstützt außerdem zusammengesetzte Befehle. „Devin öffnen und eine neue Sitzung starten“ kann zu einem lokalen App-Start plus einem Jev-geführten Klick werden. Die geöffnete App bleibt als UI-Ziel erhalten, und Aktionen, die schwer rückgängig zu machen klingen, können vor dem Fortfahren eine Bestätigung verlangen.
Von Sprache zu einer typisierten Aktion
Die erste Schicht ist lokal. Ein Befehlsparser erkennt deterministische Aktionen, ein Klauseltrenner teilt mehrere Verben, und SlotExtractor extrahiert URLs, Suchanfragen, Text, Prozente und weitere Argumente. Jev soll diese Werte nicht erfinden, sondern die Aktion und ihre typisierten Slots auswählen.
Jede Klausel wird zusammen mit dem vollständigen Transkript, der aktiven App, installierten App-Namen und Aliasen an den System-One-Endpunkt von TypeSafe Jev gesendet. Die Antwort besteht aus typisierten Entscheidungen: Aktion, Ziel-App, Systemaktion, URL-Erwähnung, Bezug auf die aktive App, Textkomposition und Kennzeichnung einer destruktiven Aktion.
Diese Trennung ist wichtig. Jev kann openApp oder uiTask zurückgeben, aber keinen Shell-Befehl, den der Executor blind ausführt. Unsichere oder mehrdeutige Befehle können eine Bestätigung verlangen; die lokale Ausführung besitzt die tatsächlichen Aufrufe von NSWorkspace, CGEvent, AppleScript, pmset und Accessibility.
Zwei Wege: schnelle Aktionen und Computer Use
Bekannte App-, URL-, Medien-, Lautstärke- und Tastaturaktionen können bei passenden Voraussetzungen einen Fast Path nehmen. Einfache Befehle bleiben dadurch lokal und vorhersehbar, statt jeden Satz durch einen größeren Planer zu schicken. Das App-Register unterstützt auch Aliase und benutzerdefinierte Aliase in den Einstellungen.
Wenn ein sichtbares UI-Element nötig ist, liest der Computer-Use-Weg den Accessibility-Tree der Ziel-App, lässt Jev das nächste Element auswählen, führt die Aktion aus und beobachtet erneut zur Verifikation. Sparse Trees können nach einem Fokus- oder Scroll-Impuls erneut durchlaufen werden; lokale Apple-Vision-OCR liest sichtbare Labels, wenn der Tree kaum Informationen liefert.
Für Chromium- und Electron-Fenster gibt es einen eigenen Fallback. Mit aktiviertem Chrome-Remote-Debugging kann Jev Voice über das Chrome DevTools Protocol sichtbare Web-Controls lesen und Text eingeben. DeepSeek ist für offene Aufgaben oder Bildschirme ohne zugängliche Controls optional; Denkstufe sowie Schritt- und Zeitbudget sind konfigurierbar.
Die Schleife bleibt nachvollziehbar: beobachten, auswählen, handeln, verifizieren. Vor jedem Tastaturpfad aktiviert die Texteingabe die Ziel-App und liest danach das fokussierte Feld zurück. Wenn der erwartete Text nicht sichtbar ist, fällt sie auf einen Unicode-Tastaturpfad im Prozess zurück.
Sicherheit gehört zum Produkt
Die gebündelte Resources/policy.json blockiert Formulierungen zu Shell, Zahlungen, Zugangsdaten und irreversiblen Dateioperationen. Standardmäßig werden delete, remove, empty trash, publish und pay bestätigt; im Browser kommen send, submit, post, tweet und reply hinzu. Eine eigene Policy kann die Regeln ersetzen, und Settings › Safety zeigt die geladene Policy.
Unbekannte skriptbare Befehle können zu Learned Tools werden, aber nur hinter mehreren Schranken. Ein erzeugtes AppleScript oder JXA muss kompilieren, den Policy-Scanner bestehen und eine Jev-Prüfung durchlaufen, bevor es bestätigt und ausgeführt wird. Erfolgreiche Tools liegen unter ~/Library/Application Support/Jev Voice/tools/ und können einzeln aktiviert oder gelöscht werden.
Für eine Sprach-App ist das eine sinnvolle Grenze: Natürliche Sprache wählt aus begrenzten Operationen, während Code Voraussetzungen, Berechtigungen und den Zustand nach der Aktion prüft. Desktop-Automation wird dadurch nicht risikofrei, aber die Stellen für Bestätigung und Verifikation werden klarer.
Installation
Eine App-Store-Seite für Jev Voice wurde nicht gefunden; für Endnutzer ist daher die offizielle GitHub-Releases-Seite der bevorzugte Weg. Das aktuelle Asset ist Jev-Voice-0.9.1.zip. Repository und Cask beschreiben die App als ad-hoc signiert, nicht als Developer-ID-signiert. macOS kann beim ersten Start warnen und das Quarantäne-Attribut muss eventuell entfernt werden.
# Die aktuelle Release-Seite öffnen:
open https://github.com/chris-wozniczek/jev-voice-control/releases/latest
# Das ZIP v0.9.1 direkt laden:
open https://github.com/chris-wozniczek/jev-voice-control/releases/download/v0.9.1/Jev-Voice-0.9.1.zipNach dem Entpacken legst du Jev Voice.app in /Applications, startest sie über die Menüleiste und trägst den TypeSafe API-Key in den Einstellungen des Zahnradmenüs ein. Wenn macOS wegen der ad-hoc-Signatur weiterhin meldet, dass die App nicht geöffnet wurde, dokumentiert der offizielle Cask als möglichen Schritt xattr -dr com.apple.quarantine "/Applications/Jev Voice.app".
Homebrew ist ein weiterer offizieller Weg: der Cask des Repositorys verwendet dieselbe ZIP v0.9.1, entfernt die Quarantäne in einem Postflight-Schritt und installiert Jev Voice.app. Homebrew 7+ kann vor der Nutzung eines Drittanbieter-Taps brew trust chris-wozniczek/jev-voice verlangen.
Die App fordert Berechtigungen nach Funktion an: Microphone für Sprachbefehle, Speech Recognition für die Transkription, Accessibility zum Lesen von Controls und Tippen, Screen Recording für lokale OCR und Screenshots sowie Automation für System-Events-AppleScript. Die Erkennung kann ohne alle Berechtigungen starten, die tatsächliche Desktop-Steuerung hängt aber vom verwendeten Weg ab.
Was an Jev gesendet wird
Die Spracherkennung läuft auf dem Gerät, wenn die gewählte Engine das unterstützt. An api.typesafe.ai gehen für das Jev-Routing das Transkript und der kleine App-Kontext, der für die Aktionswahl nötig ist: aktive App, installierte App-Kandidaten und konfigurierte Aliase. Der API-Key bleibt in lokalen UserDefaults; die Nutzung des Providers kann trotzdem ein Konto oder Kosten voraussetzen.
Jev ist in diesem Design entscheidungsorientiert. Bei Diktat oder Websuche extrahiert lokaler Code den Text beziehungsweise die Anfrage aus dem Transkript. Für formulierte Antworten kann ein optionales generatives Modell den Text erstellen; standardmäßig wird er vor dem Tippen angezeigt. Das ist getrennt von Jevs typisiertem Aktionsrouting.
Die Sprach-Engines entwickeln sich weiter
Unter macOS 26 kann Apple SpeechAnalyzer Streaming im Release-Build als Standard-Engine enthalten sein. Whisper und die klassische Apple-Spracherkennung bleiben unter Settings › Hearing auswählbar. Verfügbare SpeechAnalyzer-Assets und Whisper werden beim Start vorgeladen, damit der erste Push-to-Talk-Befehl nicht auf das Laden eines Modells warten muss.
Whispers Sprachcode kann für automatische Erkennung leer bleiben. Ein Audio-Energy-Gate erkennt das Ende der Sprache; Smart end of speech kann Jev fragen, ob eine kurze Pause den Befehl beendet, respektiert aber weiterhin das konfigurierte Schweige-Timeout als harte Obergrenze. Die Engine-Fähigkeiten eines Builds zeigt --engine-info.
Nur für Änderungen am Code aus dem Quellcode bauen
Für die meisten Nutzer ist die Release-ZIP oben der richtige Einstieg. Entwickler können das ausführbare Target bauen, die Tests der reinen Logik ausführen oder eine Distributions-ZIP erzeugen. Das Package nutzt Swift Package Manager und trennt JevVoiceCore für Entscheidungs- und Parsing-Logik vom ausführbaren Target JevVoice für die Menüleisten-App.
git clone https://github.com/chris-wozniczek/jev-voice-control.git
cd jev-voice-control
make app # build/Jev Voice.app bauen
make test # Unit-Tests ausführen
make dist # build/Jev-Voice-<version>.zip erzeugen und SHA-256 ausgebenDer Key kann in den Einstellungen eingetragen oder mit defaults write com.chriswozniczek.jevvoice typesafeAPIKey <key> gesetzt werden. Für den Start aus einer Shell nennt das Repository außerdem TYPESAFE_API_KEY=.... Halte den Key geheim; ein Source-Build ersetzt weder das TypeSafe-Konto noch die macOS-Berechtigungen der App.
Optionale App-Shortcuts liegen unter ~/Library/Application Support/Jev Voice/app-actions.json. Sie beschleunigen Formulierungen wie das Öffnen einer neuen Sitzung oder eines Tabs, aber die allgemeine Beobachten→Jev→Handeln→Verifizieren-Schleife funktioniert auch ohne diese Datei.
Diese Grenzen solltest du kennen
Jev Voice ist kein frei formulierender Sprachprogrammierer. Jev erzeugt weder URLs, Suchanfragen, Diktattext noch Shell-Befehle; diese Werte kommen aus deterministischen Transkript-Heuristiken. Systemaktionen basieren auf AppleScript und pmset, daher können Helligkeits-Keycodes je nach Hardware variieren. Apps werden in den üblichen macOS-Verzeichnissen und unter laufenden normalen Apps gesucht, ergänzt um Aliase.
Die praktischen Grenzen entsprechen denen anderer Desktop-Automation: eine App kann einen spärlichen Accessibility-Tree liefern, eine Berechtigung kann fehlen, ein Bildschirm kann OCR benötigen, und eine destruktive Aktion kann eine Bestätigung verlangen. Das Projekt bietet Fallbacks und Verifikation, garantiert aber nicht, dass jede Drittanbieter-Oberfläche automatisierbar ist.
Lizenz
Jev Voice steht unter der MIT-Lizenz. Du darfst den Quellcode prüfen, ändern und in kommerziellen Projekten wiederverwenden, sofern Copyright- und Lizenzhinweise erhalten bleiben. WhisperKit, TypeSafe-Dienste, Apple-Frameworks und die von der App gesteuerten Programme haben eigene Lizenzen oder Bedingungen.
Solltest du es nutzen?
Wenn du einen Mac freihändig steuern möchtest und typisierte Entscheidungen, lokale Analyse, explizite Berechtigungen und eine Verifikationsschleife einem Modell vorziehst, das beliebige Befehle ausgeben kann, ist Jev Voice ein ungewöhnlich klares Open-Source-Experiment. Starte mit der Release-ZIP v0.9.1, rechne mit der ad-hoc-Signatur und behandle Accessibility-Automation als überwachte Funktion statt als magischen Ersatz für Tastatur und Maus.
Projektübersicht
- Lizenz
- MIT
- Plattform
- macOS 14+ / SpeechAnalyzer-Streaming benötigt macOS 26 und Swift 6.2+
- Sprache
- Swift, SwiftUI, AppKit, WhisperKit, Swift Package Manager
- Geprüfte Version
- v0.9.1 (GitHub Release, geprüft am 22.09.2026)
Installation
# Die aktuelle GitHub-Release öffnen:
open https://github.com/chris-wozniczek/jev-voice-control/releases/latest
# Das ZIP v0.9.1 direkt laden:
open https://github.com/chris-wozniczek/jev-voice-control/releases/download/v0.9.1/Jev-Voice-0.9.1.zipLizenzübersicht
Das Repository steht unter der MIT-Lizenz. Bei der Weitergabe müssen Copyright- und Lizenzhinweise erhalten bleiben; TypeSafe, WhisperKit, Apple-Frameworks und Drittanbieter-Dienste haben eigene Bedingungen.



