Offline-first Diktat und Transkription für macOS (Schwerpunkt) und iOS/iPadOS (Tastatur-Extension-Workflow). Technische Ziele und Modulgrenzen unten; vollständige Funktions-/Implementierungsmatrix: docs/features-and-implementation.md.
Cortexa ist quelloffen und unter der Apache License 2.0 lizenziert. Copyright- und Markenhinweise stehen in NOTICE; Drittanbieterkomponenten und Modelle behalten ihre jeweiligen Lizenzen. Details: docs/licensing.md.
| Ressource | Zweck |
|---|---|
docs/README.md |
Alle Docs im Überblick |
docs/features-and-implementation.md |
Funktionen ↔ Module ↔ AppShell |
docs/system-design.md |
Architektur, Datenflüsse, State Machine |
docs/api-design.md |
Swift-Protokolle, Konfiguration, Pipeline |
docs/permissions-macos.md |
Mikrofon, Bedienungshilfen |
docs/build-xcframework.md |
whisper.cpp / Runtime-Bundle |
docs/distribution.md |
Offene macOS-DMG-Releases, optionale Signierung, Sparkle, iOS |
docs/macos-release-checklist.md |
Release-Abnahme |
apps/macos/README.md |
Menüleiste, Settings, Betrieb |
apps/ios/README.md |
Host-App, Keyboard, App Group |
changelog.md |
Release Notes (auch in der macOS-About-Ansicht) |
- 100 % lokale Spracherkennung per whisper.cpp — kein Cloud-ASR, keine Telemetrie für die Kernfunktion
- Apple-Silicon-orientierte Laufzeit-Presets (
CapabilityCore) - Deterministisches Einfügen auf macOS: Accessibility zuerst, optional Paste-Fallback
- Gemeinsame Swift-Pakete für macOS und iOS (
Package.swift) - Optionale KI-Nachbearbeitung: Apple On-Device und/oder OpenAI-kompatible APIs (Netz nur bei aktivem API-Betrieb)
Package.swift— Swift Package (Libraries)Sources/ASRCore— Whisper, Modell-Registry, Runtime-InstallerSources/AudioCore— AVAudioEngine, Preprocessing-HooksSources/SessionCore— Session-State-Machine, Streaming-StabilisatorSources/SnippetCore— Snippets, PersistenzSources/TextTargetMac— AX-Ziel, Einfügen (macOS)Sources/CapabilityCore— Geräteprofil, adaptive PresetsSources/AIProcessingCore— KI-Nachbearbeitung, Provider, Apple Foundation Modelsapps/macos— Cortexa (MenuBarExtra; technical targetWisprLocalMac)apps/ios— Host-App + Keyboard Extensiondocs/— Architektur, Build, Distribution, Permissionsscripts/— whisper.cpp, XcodeGen, Release-Helfer
swift build
swift testNutzer installieren nur die App. Runtime (whisper-cli) und Modelle liegen im App-Bundle; beim ersten Gebrauch werden sie ins Application Support installiert — kein Homebrew/CMake auf dem Zielrechner nötig.
./scripts/bootstrap_whisper_submodule.sh
./scripts/build_whisper_xcframework.sh
./scripts/download_models.sh
./scripts/prepare_runtime_bundle.shAnschließend apps/macos/AppShell/Resources/Runtime ins Xcode-Target einbinden. Details: docs/build-xcframework.md.
- Am schnellsten direkt per Script starten:
./scripts/smoke_test_macos_app.sh
- Runtime wie oben vorbereiten, dann:
./scripts/generate_macos_xcodeproj.sh
- Projekt öffnen:
apps/macos/WisprLocalMac/WisprLocalMac.xcodeproj - Target WisprLocalMac starten
- Berechtigungen: Mikrofon, Bedienungshilfen (für direktes Einfügen)
- Diktat: Menüleisten-Button oder globaler Hotkey (Standard ⌥ Space)
- Agent-App:
LSUIElement— standardmäßig keine Dock-Ikone (optional in den Settings aktivierbar)
Ohne Script geht es direkt in Xcode so:
- Runtime wie oben vorbereiten.
./scripts/generate_macos_xcodeproj.shausführen, damit das Xcode-Projekt aktuell ist.apps/macos/WisprLocalMac/WisprLocalMac.xcodeprojin Xcode öffnen.- Scheme
WisprLocalMacauswählen und aufRundrücken.
Features implemented in macOS app shell:
-
Finalize Insert at locked original cursor target
-
Streaming Insert with immutable target binding
-
Snippet replacement + snippet import/export (JSON)
-
Transkript-History mit Copy/Delete/Clear + Export (TXT), lokal persistent
-
Language switch (
de,en,auto) and profile presets (auto,fast,balanced,accurate) -
Optional formatting/AI post-processing with configurable context awareness (
off,finalOnly,liveOnly,liveAndFinal) -
Personal dictionary with category-based terms, review queue, and JSON import/export
-
Dictionary-driven ASR prompt hints and dictionary-preservation hints for AI revisions
-
Optional best-effort music pause/resume while dictating (Apple Music, Spotify)
-
Lokales Audit-Log mit Rotation (
~/Library/Application Support/WisprLocal/audit.log) -
Diagnostics-Export (
wispr-diagnostics.txt) und Audit-Log-Export aus der macOS-UI -
Sparkle-kompatibler Auto-Updater mit permanent sichtbarem manuellen Check im Menü und in den Settings
-
Lifecycle-Refresh nach App-Aktivierung und System-Wake für Berechtigungen, Runtime und Hotkey-Registrierung
-
Eingeschränkter Transkriptionsmodus ohne Bedienungshilfen; direktes Einfügen bleibt dann deaktiviert, Verlauf und Zwischenablage bleiben nutzbar
-
Interner Speicher für Snippets, Verlauf und Audit-Dateien wird lokal gehärtet; Zwischenablage-Fallback bleibt absichtlich optional und ist als weniger privater Zustellpfad gekennzeichnet
-
Finalize- und Streaming-Modus mit festem Textziel pro Session; Snippets + Verlauf (Export TXT)
-
Sprache, Qualität, explizite Übersetzung (getrennt von Auto-Sprache)
-
AI-Nachbearbeitung (Apple / Remote), dynamische Provider & Modelle, Keys in Keychain
-
Audio-Preprocessing, Sound-Feedback, Sparkle-Updates mit permanent sichtbarem manuellen Check im Menü und in den Settings
-
Dock, Login-Item, Diagnose-Export, Audit-Log, optional Debug-Log
-
Eingeschränkter Modus ohne Bedienungshilfen (Transkription/Verlauf weiter nutzbar)
Für die aktuelle Open-Source-Distribution ist kein Apple-Developer-Konto erforderlich. Auf einem Apple-Silicon-Mac erstellt das folgende Skript einen arm64-Release-DMG ohne Developer-ID-Zertifikat oder Notarisierung. macOS zeigt beim ersten Öffnen möglicherweise eine Sicherheitswarnung; Installationshinweise liegen neben dem DMG.
./scripts/build_macos_open_source_release.shDas Skript bereinigt alte lokale macOS-Build-Artefakte, baut Runtime und App neu und erzeugt einen DMG, eine SHA-256-Datei sowie kurze Installationshinweise unter artifacts/mac/. Für GitHub Releases startet der Workflow macOS Release auf main den Build und legt einen Draft mit den geprüften Dateien an. Nach lokalem Installationstest wird derselbe Workflow zum Veröffentlichen des Drafts verwendet. Details: docs/distribution.md und docs/macos-release-checklist.md.
Ein Developer-ID-signierter und notarisiert ausgelieferter Release bleibt als optionaler Distributionsweg dokumentiert; er ist für die aktuellen Open-Source-Releases nicht erforderlich.
Legacy-Export / Appcast:
DEVELOPMENT_TEAM=YOURTEAMID CODE_SIGN_IDENTITY="Developer ID Application" ./scripts/archive_macos_release.sh
DEVELOPMENT_TEAM=YOURTEAMID ./scripts/export_macos_release.sh
CODE_SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" ./scripts/create_macos_dmg.sh
SPARKLE_PRIVATE_KEY_FILE=/path/to/sparkle_private_key SPARKLE_BIN_DIR=/path/to/generate_appcast \
./scripts/generate_sparkle_appcast.shBundle prüfen:
./scripts/verify_macos_release_bundle.sh artifacts/mac/release/Cortexa.app./scripts/smoke_test_macos_app.shPrüft u. a. Debug-Build, Bundle, whisper-cli, Modelle, kurzer Lauf; optional UI-Aktivierung. Varianten: --keep-running, --skip-build, --no-ui, --skip-launch.
Schneller Dev-Loop ohne Rebuild (TCC-Einträge bleiben stabil):
./scripts/smoke_test_macos_app.sh --skip-build --keep-runningbash ./scripts/generate_ios_xcodeproj.shProjekt: apps/ios/WisprLocaliOS/WisprLocaliOS.xcodeproj — Targets WisprLocaliOS und WisprLocalKeyboard, App Group group.com.wisprlocal.shared. Details: apps/ios/README.md.
English summary: Cortexa is an open-source, local-first dictation stack for Apple platforms, licensed under the Apache License 2.0. Third-party components and models retain their own licenses; see docs/licensing.md, docs/third-party-notices.md, docs/README.md, and docs/features-and-implementation.md for details.