Local NotebookLM alternative for private document analysis, RAG-assisted research, and multi-format report generation.
NoteSpaceLLM is an offline-first PySide6 desktop app for working with PDFs, Word files, Markdown, mail exports, notes, and research folders. It keeps project data local by default, supports local or remote Ollama, OpenAI, Anthropic and Claude Code workflows, and exports analysis results to Markdown, PDF, DOCX, HTML and TXT. A lightweight Web/PWA Companion is now available for reviewing exported workspaces on Android, iOS and browser devices without uploading documents to a server.
Best-fit searches: NotebookLM alternative, local RAG document analysis, private document chat, PySide6 research tool, offline AI report generator, local-first document workflow.
git clone https://github.com/file-bricks/NoteSpaceLLM.git
cd NoteSpaceLLM
pip install -r requirements.txt
python main.pyRun the test and compile smoke checks with:
python -m unittest discover -s tests -v
python -m compileall -q main.py manage_translations.py translator.py src
cd web_companion
node --test tests/library.test.mjsEin lokaler, datenschutzfreundlicher Ersatz für Google NotebookLM zur Dokumentenanalyse und Berichterstellung.
- Dokumentenverwaltung: Dateien und Verzeichnisse per Drag & Drop hinzufügen
- Automatische Extraktion & Auto-Indexierung: Neue Dokumente werden direkt verarbeitet und für RAG vorbereitet
- Selektive Auswahl: Dokumente für Berichterstellung auswählen/abwählen
- Detailrecherchen: Rechtsklick für dokumentspezifische Analysen (Sub-Queries)
- Workflow-Visualisierung: Grafische Darstellung des Berichtsprozesses
- Chat-Interface: Interaktives Chatten über die Dokumente mit LLM
- Claude Code Integration: Wahlweise strukturierte API-Antworten oder Übergabe an eine interaktive Claude-Code-Session
- Multi-Format-Export: Ausgabe in MD, PDF, DOCX, HTML, TXT
- Prompt-Export: Berichtskontext als Markdown-Prompt für externe LLM-Workflows exportieren
- Remote-Ollama pro Projekt: Eigene Base-URL und API-Key für lokale oder entfernte Ollama-Server
- Umlaut-sichere Oberfläche: Deutsche UI-Texte verwenden echte Umlaute; der Übersetzungs-Scan vermeidet englische False Positives
- Profile: Wiederverwendbare Ausgabeformat-Kombinationen
# Repository klonen oder Ordner kopieren
cd NoteSpaceLLM
# Abhängigkeiten installieren
pip install -r requirements.txt
# Anwendung starten
python main.pyUnter Windows kann die App alternativ per start.bat gestartet werden.
Für einen lokalen Windows-Launcher kann zusätzlich folgender Build ausgeführt werden:
build_exe.batDer Build erzeugt NoteSpaceLLM.exe als schlanken Starter für die lokale
Python-Umgebung und die Projekt-Abhängigkeiten.
python main.py --checkpython -m unittest discover -s tests -v
python -m compileall -q main.py manage_translations.py translator.py src- Ollama installieren
- Modell herunterladen:
ollama pull llama3 - In der App: Menü > LLM > Ollama verwenden
NoteSpaceLLM kann einen entfernten Ollama-Server nutzen, z.B. über ellmos-stack:
- In der App: Menü > LLM > Einstellungen
- Ollama URL:
http://your-server:11435(oder eigener Port) - API-Key: Falls der Server hinter einem Auth-Proxy liegt (empfohlen)
Die Remote-Anbindung eignet sich für:
- Stärkere Modelle auf dedizierter Hardware
- Gemeinsame Nutzung eines LLM-Servers im Team
- Desktop ohne GPU
Tipp: Ollama hat keine eingebaute Authentifizierung. Für Remote-Zugriff empfehlen wir einen Reverse-Proxy (z.B. Nginx) mit API-Key oder Basic Auth.
export OPENAI_API_KEY="<your-openai-api-key>"export ANTHROPIC_API_KEY="<your-anthropic-api-key>"Für den Provider claude-code wird die lokale CLI benötigt:
npm install -g @anthropic-ai/claude-codeIn der App stehen zwei Modi bereit:
- API-Modus: strukturierte Antwort direkt zurück in NoteSpaceLLM
- Chat-Modus: Übergabe des Prompts an eine interaktive Claude-Code-Konsole
- Drag & Drop: Dateien/Ordner in das linke Panel ziehen
- Button: "Dateien hinzufügen" oder "Ordner hinzufügen"
- Checkbox: Dokumente für Analyse ein-/ausschließen
- Buttons: "Alle" / "Keine" für Massenauswahl
Rechtsklick auf ein Dokument:
- Zusammenfassung erstellen: Automatische Zusammenfassung
- Informationen extrahieren: Spezifische Daten finden
- Analysieren: Gezielte Analyse
- Frage stellen: Konkrete Frage zum Dokument
Im Workflow-Panel die zentrale Fragestellung eingeben.
- Analyse: Umfassende Analyse mit Empfehlungen
- Zusammenfassung: Kurze Zusammenfassung
- Forschungsbericht: Akademische Struktur
- Vergleich: Systematischer Dokumentenvergleich
Klick auf "Bericht erstellen" - die Ausgabe erscheint im rechten Panel.
Ausgabeformate wählen und "Exportieren" klicken.
Über "Prompt exportieren" wird der aktuelle Arbeitskontext als Markdown-Datei gespeichert, um ihn in Claude Code oder anderen LLM-Workflows weiterzuverwenden.
NoteSpaceLLM/
├── main.py # Startpunkt
├── requirements.txt # Abhängigkeiten
├── README.md # Diese Datei
├── src/
│ ├── core/ # Kernfunktionalität
│ │ ├── document_manager.py # Dokumentenverwaltung
│ │ ├── text_extractor.py # Textextraktion
│ │ ├── sub_query.py # Detailrecherchen
│ │ └── project.py # Projektverwaltung
│ ├── gui/ # PySide6 Benutzeroberfläche
│ │ ├── main_window.py # Hauptfenster
│ │ ├── document_panel.py # Dokument-Panel
│ │ ├── workflow_panel.py # Workflow-Panel
│ │ ├── chat_panel.py # Chat-Panel
│ │ └── output_panel.py # Ausgabe-Panel
│ ├── llm/ # LLM-Integration (lokal + remote)
│ │ ├── client.py # Basis-Client + Factory
│ │ ├── ollama_client.py # Ollama (lokal & remote, mit Auth)
│ │ ├── openai_client.py # OpenAI
│ │ └── anthropic_client.py # Anthropic
│ └── reports/ # Berichterstellung
│ ├── generator.py # Berichtsgenerierung
│ ├── templates.py # Vorlagen
│ └── exporter.py # Export
├── data/ # Datenverzeichnis
├── workflows/ # Workflow-Definitionen
├── profiles/ # Ausgabeprofile
└── output/ # Exportierte Berichte
| Format | Lesen | Schreiben |
|---|---|---|
| ✅ | ✅ | |
| DOCX | ✅ | ✅ |
| DOC | - | |
| TXT | ✅ | ✅ |
| MD | ✅ | ✅ |
| XLSX | ✅ | - |
| HTML | - | ✅ |
| EML | ✅ | - |
| MSG | ✅ | - |
- Große Dokumente: Bei vielen Dokumenten zuerst nur wichtige auswählen
- Detailrecherchen: Für bessere Ergebnisse gezielte Sub-Queries nutzen
- Ollama: Für Datenschutz und Offline-Nutzung empfohlen
- Workflow anpassen: Schritte können umgeordnet werden
NoteSpaceLLM verarbeitet Projekte, Dokumentindexe und Exporte standardmäßig lokal in den Projektordnern data/, profiles/, workflows/, output/ und chroma_db/. Diese Ordner sind bewusst nicht für Git vorgesehen.
Wenn externe oder entfernte LLM-Provider wie OpenAI, Anthropic, Claude Code oder ein Remote-Ollama-Server gewählt werden, können Prompts und ausgewählte Dokumentauszüge an diese Dienste oder Server übertragen werden. Verwende für vertrauliche Dokumente bevorzugt lokale Modelle und prüfe vor dem Teilen eines Projektordners die enthaltenen Daten.
Die Desktop-App bleibt die autoritative Vollversion für lokale Dokumente, RAG-Index, LLM-Provider und vertrauliche Arbeitsstände. Für Android, iOS und Browser ist ein Web/PWA-Companion als getrennte Linie geplant, der über notespacellm-workspace-v1.json mit der Desktop-App Daten austauscht. Details stehen in PORTIERUNGSPLAN.md und EXPORTFORMAT.md.
Unter web_companion/ liegt jetzt der erste read-only Companion-Strang für
Android, iOS und Browser. Er importiert exportierte
notespacellm-workspace-v1.json-Dateien lokal im Browser, zeigt Bericht,
Dokumentmetadaten und ausgewählte Auszüge an und kann eigene Review-Notizen als
Markdown exportieren.
Für lokale Browser-Tests reicht ein kleiner statischer Server:
$env:PYTHONIOENCODING='utf-8'
python -m http.server 8765 -d web_companionDie Companion-Smokes laufen über:
cd web_companion
node --test tests/library.test.mjsDie Anwendung ist modular aufgebaut und trennt Dokumentverwaltung, Text-Extraktion, RAG-Index, LLM-Provider und Report-Export.
AGPL v3 - Siehe LICENSE
Dieses Projekt verwendet PySide6 (LGPL) und PyMuPDF (AGPL).
A local replacement for Google NotebookLM with LLM integration and multi-format export.
- Local LLM integration
- Automatic extraction and auto-indexing for newly added documents
- Multi-format document import
- AI-powered summaries
- Claude Code provider with API and interactive chat modes
- Prompt export for external LLM workflows
- German UI strings use native umlauts, while the translation scanner avoids English false positives
- Export to multiple formats
git clone https://github.com/file-bricks/NoteSpaceLLM.git
cd NoteSpaceLLM
pip install -r requirements.txt
python "main.py"On Windows, you can also launch the app via start.bat.
A local Windows launcher can also be built with build_exe.bat.
See LICENSE for details.
Project data, indexes, profiles, workflow settings, and exports are local by default and intentionally excluded from Git. External or remote LLM providers may receive prompts and selected document excerpts when enabled.
Dieses Projekt ist eine unentgeltliche Open-Source-Schenkung im Sinne der §§ 516 ff. BGB. Die Haftung des Urhebers ist gemäß § 521 BGB auf Vorsatz und grobe Fahrlässigkeit beschränkt. Ergänzend gelten die Haftungsausschlüsse der GNU Affero General Public License v3.0, insbesondere §§ 15–16.
Nutzung auf eigenes Risiko. Keine Wartungszusage, keine Verfügbarkeitsgarantie, keine Gewähr für Fehlerfreiheit oder Eignung für einen bestimmten Zweck.
This project is an unpaid open-source donation. Liability is limited to intent and gross negligence (§ 521 German Civil Code). Use at your own risk. No warranty, no maintenance guarantee, no fitness-for-purpose assumed.


