Wie Sie Gigabytes an Nachrichtenverläufen aus der Cloud auf Ihren Rechner ziehen und eine lokale Suchmaschine mit DuckDB und SQLite aufbauen
Denken Sie daran, wie oft Sie versucht haben, eine alte E-Mail mit einem Anhang zu finden, eine Bug-Diskussion in Slack von vor zwei Jahren oder eine wichtige Idee aus einem Discord-DM. Normalerweise endet alles damit, dass Sie zehn verschiedene Browser-Tabs öffnen, durch umständliche Suchfunktionen von Firmen-Messengern wühlen und frustriert sind, weil das kostenlose Slack-Archiv Ihren Nachrichtenverlauf wieder abgeschnitten hat.
Ich habe vor Kurzem msgvault entdeckt. Es ist eine Go-Kommandozeilen-Anwendung, die alle Ihre Konversationen von einem Dutzend Quellen auf Ihre lokale Festplatte zieht, sie in SQLite und Parquet verpackt und obendrauf eine praktische Weboberfläche, eine Terminal-TUI und einen MCP-Server für neuronale Netze bereitstellt.
Warum Nachrichtenverläufe auf die eigene Festplatte ziehen
Die Idee, Daten aus Drittanbieter-Diensten herauszuziehen, ist nicht neu. Allerdings werden Backups häufig zu riesigen Ordnern mit JSON-Dumps oder .eml, die auf der Festplatte verstauben. Ohne eine dedizierte Datenbank ist die Suche darin ein eigenes Unterfangen.
msgvault ersetzt den traditionellen Ansatz des Archiv-Downloads. Das Tool lädt E-Mails, Chats, Kalender und Meeting-Transkripte herunter und baut dann eine vollwertige Such- und Analyseschicht darauf auf. Die Daten bleiben bei Ihnen. Keine kostenpflichtigen Abonnements für das Aufbewahren alter Threads oder Drittanbieter-Cloud-Prozessoren.
Hier ist, was das Tool in eine einheitliche Datenbank zusammenführen kann:
- Gmail-Postfächer (via OAuth oder Service Account) und jeden Standard-IMAP-Server.
- Google Calendar (Ereignisse, Teilnehmer und Organisatoren werden zusammen mit E-Mails indexiert).
- Microsoft Teams und Slack-Unternehmenschats, einschließlich Reaktionen, Dateien und verschachtelten Threads.
- Discord-Server über einen eingebauten Bot-Agenten.
- Messenger von Beeper Desktop (bietet Zugriff auf iMessage, WhatsApp, Telegram, Signal und SMS).
- Meeting-Aufnahmen und Transkripte von Granola und Circleback.
- Lokale MBOX-Dumps, Apple Mail-Archive (
.emlx), PST-Dateien und SMS-Backups von Android.
So funktioniert die Archivierung unter der Haube
Die Projektarchitektur wurde für große Datenmengen konzipiert. Wenn Sie über zehn Jahre hinweg eine halbe Million E-Mails mit Bildern und Dokumenten angesammelt haben, beginnt eine gewöhnliche Festplatte bereits bei der Anzahl der Dateien in einem einzigen Verzeichnis zu lahmen.
Die Autoren haben dies mit einer Kombination aus SQLite, DuckDB und Inhaltsabgleich per Hash gelöst.
Die Kern-Volltextsuche läuft über FTS5 in SQLite. Komplexe Analysen und Filterung über ein massives Nachrichtenarchiv laufen auf DuckDB über dem spaltenorientierten Parquet-Format. Das ermöglicht es, dass schwere Aggregationsabfragen in der TUI in Millisekunden ausgeführt werden.
Anhänge werden nicht verstreut gespeichert. msgvault dedupliziert sie per SHA-256 und packt sie in isolierte Binärpakete. Dieser Ansatz spart Inodes auf Linux und verlangsamt das Dateisystem nicht auf Windows oder NAS. Bei Bedarf können diese Pakete jederzeit mit Wartungsbefehlen wieder entpackt werden.
Weboberfläche, Terminal und Vektorsuche
Nachdem die Daten importiert wurden, können Sie auf drei Arten damit arbeiten.
Erste Option: die eingebaute Weboberfläche. Der Daemon startet einen HTTP-Server mit einer Anwendung, die keine externen Runtimes wie Node.js benötigt. Die Oberfläche ist für schnelle Tastaturnavigation optimiert. Sie eignet sich gut zum Gruppieren von E-Mails nach Domain, Verfolgen von Kontakten und Anzeigen von Dateien.
Zweiter Weg: TUI direkt in der Konsole. Sie gibt detaillierte Analysen über Ihren gesamten Nachrichtenverlauf aus. Sie können Konversationen aus einem bestimmten Jahr von einem bestimmten Empfänger mit nur ein paar Tastenanschlägen filtern.
Die dritte Option ist für diejenigen, die Nachrichten nicht nur nach exakten Wörtern, sondern nach Bedeutung durchsuchen möchten. msgvault kann sich mit einem lokalen Embedding-Server wie Ollama, LM Studio oder llama.cpp verbinden.
Nach der Generierung von Vektoren kommt die hybride Suche zum Einsatz. Sie kombiniert klassische BM25-Volltextsuche und Vektorsuche via Reciprocal Rank Fusion. Sie geben eine Anfrage ein wie „wo haben wir über die Änderung der Datenbankarchitektur gesprochen
Ähnliche Projekte