0
stars
549
commits
TypeScript
primary language
Aug 30, 2026
updated
Lokale Therapiesitzungs-Transkription, Anonymisierung und Zusammenfassung für macOS.
Therascript ist eine Electron-basierte Desktop-App, die Therapiegespräche aufnimmt, automatisch transkribiert, Sprecher erkennt, personenbezogene Daten anonymisiert und optional eine Zusammenfassung erstellt. Die gesamte Verarbeitung erfolgt lokal auf dem Gerät — keine Daten verlassen den Rechner.
connect-src 'none' in Production, Electron Fuses gehärtet, FileVault-PrüfungDMG öffnen und Therascript in den Programme-Ordner ziehen
Gatekeeper-Sperre aufheben (App ist nicht notarisiert):
chmod -R u+w /Applications/Therascript.app && xattr -cr /Applications/Therascript.app
Das vorangestellte chmod ist für Versionen bis 0.8.7 nötig (einzelne mitgelieferte
Dateien waren schreibgeschützt, xattr meldete sonst Permission denied) und ist
für neuere Versionen wirkungslos, aber harmlos.
Hinweis: Rechtsklick → Öffnen genügt nicht — es erlaubt nur den App-Start, entfernt aber die Quarantäne der mitgelieferten ML-Werkzeuge nicht (die Zusammenfassungs-Funktion bliebe stumm deaktiviert).
Therascript starten
Beim ersten Start lädt Therascript die ML-Modelle herunter (~4.1 GB; Zusammenfassungs-Modell ist optional und kann später nachgeladen werden)
Empfehlung: FileVault-Verschlüsselung aktivieren — Therascript warnt, falls deaktiviert.
xcode-select --install)huggingface-cli login (für Pyannote- und Gemma-Modelle)# Dependencies installieren
npm install
# whisper.cpp CLI + ASR-Modell installieren
scripts/setup-whisper.sh --model
# Python-Sidecar (pyannote.audio) einrichten + Modell laden
scripts/setup-pyannote.sh --model
# flair NER in bestehende venv installieren + Modell laden
scripts/setup-ner.sh --model
# Swift Vision OCR CLI-Helper bauen
scripts/setup-vision-ocr.sh
# llama.cpp + Gemma 3 4B GGUF (optional, für Zusammenfassungen)
scripts/setup-llama.sh --model
Hinweis: Pyannote erfordert akzeptierte Nutzungsbedingungen für
pyannote/speaker-diarization-3.1undpyannote/speaker-diarization-community-1auf HuggingFace. Das Gemma-GGUF (bartowski-Mirror vongoogle/gemma-3-4b-it) ist ebenfalls gated.
npm run dev # Electron-App mit Vite HMR starten
npm run build # TypeCheck + electron-vite Build
npm run test # Alle Tests ausführen (Vitest)
npm run test:watch # Tests im Watch-Modus
npm run lint # ESLint mit Cache
npm run format # Prettier-Formatierung
npm run typecheck # TypeScript-Prüfung (Node + Web)
npm run package # Produktions-Build → macOS DMG (arm64)
npm run sidecar:build # Standalone Python-Sidecar via uv bauen
npm run sidecar:deploy # Sidecar bauen, packen und nach R2 uploaden
scripts/release.sh # Versions-Bump → DMG → GitHub-Release (interaktiv)
| Prozess | Pfad | Beschreibung |
|---|---|---|
| Main | src/main/ | App-Lifecycle, IPC-Handler, CSP, Sicherheit, Tray |
| Preload | src/preload/ | Context Bridge mit Zod-validiertem IPC |
| Renderer | src/renderer/ | React 19 + Tailwind CSS v4 UI |
Streng sequenziell — immer nur ein Modell geladen:
Schritt 4 wird übersprungen, falls kein Summarization-Modell aktiv ist — die Sitzung erreicht trotzdem den Review-Status,
summarybleibt leer.
electron-store aktivsrc/main/services/ModelCatalog.ts); Nutzer aktivieren / deaktivieren / löschen sie über Einstellungen → Modellemanifest.json auf Cloudflare R2; Updates werden in einen Staging-Ordner heruntergeladen und beim Neustart atomar getauscht~/.therascript/models/<typ>/ (persistieren über App-Updates)~/.therascript/pdf/speaker-diarization-3.1, optional speaker-diarization-community-1)ner-german-large, F1 ~92 %)src/
main/ # Electron Main-Prozess (IPC, ML-Orchestrierung, Tray, Update-Service)
preload/ # Context Bridge + Zod-validiertes IPC
renderer/ # React UI (Shell, Settings, Review-Editor)
shared/ # Types + Zod-Schemas
python_sidecar/ # Python-Sidecar (pyannote + flair, dev venv + standalone build)
swift_cli/ # Swift Vision OCR Helper
scripts/ # Setup-, Build- und Release-Skripte
resources/ # Binaries (whisper-cli, llama-cli, vision-ocr) + Libraries
tests/ # Vitest-Setup
docs/ # Produkt- und Plan-Dokumentation
Lebende Produktdokumentation in docs/product/:
architecture/ — Architektur-Übersicht, IPC-API, ML-Pipeline, Storage, Securityfeatures/ — Aufnahme, Transkription, Anonymisierung, Sperrliste, PDF-Import, Review-Editor, Zusammenfassung, Modell-Management, Einstellungenoperations/ — Development-Setup, Modell-Pipeline, Release-Prozessdecisions/ — Architektur-Entscheidungen (ADRs)Historische Planungsdokumente: docs/archive/.
MIT
549 commits
TypeScript
82.2%
Shell
7.5%
JavaScript
4.0%
Python
3.0%
HTML
1.6%
CSS
1.2%
0
stars
549
commits
TypeScript
primary language
Aug 30, 2026
updated
Lokale Therapiesitzungs-Transkription, Anonymisierung und Zusammenfassung für macOS.
Therascript ist eine Electron-basierte Desktop-App, die Therapiegespräche aufnimmt, automatisch transkribiert, Sprecher erkennt, personenbezogene Daten anonymisiert und optional eine Zusammenfassung erstellt. Die gesamte Verarbeitung erfolgt lokal auf dem Gerät — keine Daten verlassen den Rechner.
connect-src 'none' in Production, Electron Fuses gehärtet, FileVault-PrüfungDMG öffnen und Therascript in den Programme-Ordner ziehen
Gatekeeper-Sperre aufheben (App ist nicht notarisiert):
chmod -R u+w /Applications/Therascript.app && xattr -cr /Applications/Therascript.app
Das vorangestellte chmod ist für Versionen bis 0.8.7 nötig (einzelne mitgelieferte
Dateien waren schreibgeschützt, xattr meldete sonst Permission denied) und ist
für neuere Versionen wirkungslos, aber harmlos.
Hinweis: Rechtsklick → Öffnen genügt nicht — es erlaubt nur den App-Start, entfernt aber die Quarantäne der mitgelieferten ML-Werkzeuge nicht (die Zusammenfassungs-Funktion bliebe stumm deaktiviert).
Therascript starten
Beim ersten Start lädt Therascript die ML-Modelle herunter (~4.1 GB; Zusammenfassungs-Modell ist optional und kann später nachgeladen werden)
Empfehlung: FileVault-Verschlüsselung aktivieren — Therascript warnt, falls deaktiviert.
xcode-select --install)huggingface-cli login (für Pyannote- und Gemma-Modelle)# Dependencies installieren
npm install
# whisper.cpp CLI + ASR-Modell installieren
scripts/setup-whisper.sh --model
# Python-Sidecar (pyannote.audio) einrichten + Modell laden
scripts/setup-pyannote.sh --model
# flair NER in bestehende venv installieren + Modell laden
scripts/setup-ner.sh --model
# Swift Vision OCR CLI-Helper bauen
scripts/setup-vision-ocr.sh
# llama.cpp + Gemma 3 4B GGUF (optional, für Zusammenfassungen)
scripts/setup-llama.sh --model
Hinweis: Pyannote erfordert akzeptierte Nutzungsbedingungen für
pyannote/speaker-diarization-3.1undpyannote/speaker-diarization-community-1auf HuggingFace. Das Gemma-GGUF (bartowski-Mirror vongoogle/gemma-3-4b-it) ist ebenfalls gated.
npm run dev # Electron-App mit Vite HMR starten
npm run build # TypeCheck + electron-vite Build
npm run test # Alle Tests ausführen (Vitest)
npm run test:watch # Tests im Watch-Modus
npm run lint # ESLint mit Cache
npm run format # Prettier-Formatierung
npm run typecheck # TypeScript-Prüfung (Node + Web)
npm run package # Produktions-Build → macOS DMG (arm64)
npm run sidecar:build # Standalone Python-Sidecar via uv bauen
npm run sidecar:deploy # Sidecar bauen, packen und nach R2 uploaden
scripts/release.sh # Versions-Bump → DMG → GitHub-Release (interaktiv)
| Prozess | Pfad | Beschreibung |
|---|---|---|
| Main | src/main/ | App-Lifecycle, IPC-Handler, CSP, Sicherheit, Tray |
| Preload | src/preload/ | Context Bridge mit Zod-validiertem IPC |
| Renderer | src/renderer/ | React 19 + Tailwind CSS v4 UI |
Streng sequenziell — immer nur ein Modell geladen:
Schritt 4 wird übersprungen, falls kein Summarization-Modell aktiv ist — die Sitzung erreicht trotzdem den Review-Status,
summarybleibt leer.
electron-store aktivsrc/main/services/ModelCatalog.ts); Nutzer aktivieren / deaktivieren / löschen sie über Einstellungen → Modellemanifest.json auf Cloudflare R2; Updates werden in einen Staging-Ordner heruntergeladen und beim Neustart atomar getauscht~/.therascript/models/<typ>/ (persistieren über App-Updates)~/.therascript/pdf/speaker-diarization-3.1, optional speaker-diarization-community-1)ner-german-large, F1 ~92 %)src/
main/ # Electron Main-Prozess (IPC, ML-Orchestrierung, Tray, Update-Service)
preload/ # Context Bridge + Zod-validiertes IPC
renderer/ # React UI (Shell, Settings, Review-Editor)
shared/ # Types + Zod-Schemas
python_sidecar/ # Python-Sidecar (pyannote + flair, dev venv + standalone build)
swift_cli/ # Swift Vision OCR Helper
scripts/ # Setup-, Build- und Release-Skripte
resources/ # Binaries (whisper-cli, llama-cli, vision-ocr) + Libraries
tests/ # Vitest-Setup
docs/ # Produkt- und Plan-Dokumentation
Lebende Produktdokumentation in docs/product/:
architecture/ — Architektur-Übersicht, IPC-API, ML-Pipeline, Storage, Securityfeatures/ — Aufnahme, Transkription, Anonymisierung, Sperrliste, PDF-Import, Review-Editor, Zusammenfassung, Modell-Management, Einstellungenoperations/ — Development-Setup, Modell-Pipeline, Release-Prozessdecisions/ — Architektur-Entscheidungen (ADRs)Historische Planungsdokumente: docs/archive/.
MIT
549 commits
TypeScript
82.2%
Shell
7.5%
JavaScript
4.0%
Python
3.0%
HTML
1.6%
CSS
1.2%