Comment extraire des gigaoctets d'historiques de messages du cloud et construire un moteur de recherche local avec DuckDB et SQLite
Réfléchissez au nombre de fois où vous avez essayé de retrouver un ancien email avec une pièce jointe, une discussion de bug sur Slack remontant à deux ans, ou une idée importante d'un DM Discord. Habituellement, tout se termine par l'ouverture d'une dizaine d'onglets de navigateur, la fouille dans des recherches de messageries d'entreprise maladroites, et la frustration de voir que l'archive gratuite de Slack a encore coupé votre historique de messages.
J'ai récemment découvert msgvault. C'est une application en ligne de commande Go qui extrait toutes vos conversations d'une douzaine de sources sur votre disque local, les conditionne en SQLite et Parquet, et propose en prime une interface web pratique, un TUI en terminal et un serveur MCP pour les réseaux de neurones.
Pourquoi extraire les historiques de messages sur votre propre disque
L'idée d'extraire des données de services tiers n'est pas nouvelle. Cependant, le plus souvent, les sauvegardes se transforment en dossiers volumineux contenant des exports JSON ou des .eml qui prennent la poussière sur votre disque dur. Les rechercher sans base de données dédiée relève d'une épreuve distincte.
msgvault remplace l'approche traditionnelle de téléchargement d'archives. L'utilitaire télécharge les emails, les chats, les calendriers et les transcriptions de réunions, puis déploie une couche d'analyse et de recherche complète par-dessus. Les données restent avec vous. Pas d'abonnements payants pour conserver d'anciens fils de discussion ni de processeurs cloud tiers.
Voici ce que l'utilitaire peut rassembler dans une base de données unifiée :
- Boîtes mail Gmail (via OAuth ou Service Account) et tout serveur IMAP standard.
- Google Calendar (les événements, participants et organisateur sont indexés aux côtés des emails).
- Microsoft Teams et chats d'entreprise Slack, y compris les réactions, fichiers et fils de discussion imbriqués.
- Serveurs Discord via un agent bot intégré.
- Messageries de Beeper Desktop (donne accès à iMessage, WhatsApp, Telegram, Signal et SMS).
- Enregistrements et transcriptions de réunions de Granola et Circleback.
- Exports MBOX locaux, archives Apple Mail (
.emlx), fichiers PST et sauvegardes SMS Android.
Comment fonctionne l'archivage en coulisses
L'architecture du projet a été conçue pour gérer des volumes de données importants. Si vous avez accumulé un demi-million d'emails avec images et documents sur dix ans, un disque dur classique commencera à ramer juste à cause du nombre de fichiers dans un seul répertoire.
Les auteurs ont résolu ce problème avec une combinaison de SQLite, DuckDB et correspondance de contenu par hashes.
La recherche textuelle principale passe par FTS5 dans SQLite. Les analyses complexes et le filtrage sur une archive de messages massive s'exécutent sur DuckDB par-dessus le format columnaire Parquet. Cela permet aux requêtes d'agrégation lourdes dans le TUI de s'exécuter en millisecondes.
Les pièces jointes ne sont pas stockées dispersées. msgvault les déduplique par SHA-256 et les regroupent en packs binaires isolés. Cette approche économise les inodes sur Linux et ne ralentit pas le système de fichiers sur Windows ou NAS. Si nécessaire, ces packs peuvent toujours être décompressés avec les commandes de maintenance.
Interface web, Terminal et recherche vectorielle
Après avoir extrait les données, vous pouvez travailler avec de trois manières.
Première option : l'interface web intégrée. Le daemon démarre un serveur HTTP avec une application qui n'a pas besoin de runtimes externes comme Node.js. L'interface est optimisée pour une navigation rapide au clavier. C'est pratique pour regrouper les emails par domaine, suivre les contacts et visualiser les fichiers.
Deuxième voie : le TUI directement dans la console. Il affiche des analyses détaillées sur l'ensemble de votre historique de messages. Vous pouvez filtrer les conversations d'une année spécifique par un destinataire particulier en quelques touches.
La troisième option est pour ceux qui veulent rechercher des messages non seulement par mots exacts mais par sens. msgvault peut se connecter à un serveur d'embedding local comme Ollama, LM Studio ou llama.cpp.
Après la génération des vecteurs, la recherche hybride se déclenche. Elle combine la recherche en texte integral BM25 classique et la recherche vectorielle via Reciprocal Rank Fusion. Vous entrez une requête comme "où avons-nous discuté du changement d'architecture de la base de données", et l'utilitaire trouve les fragments pertinents même si le mot "architecture" n'apparaissait pas dans le texte.
Connexion des réseaux de neurones via MCP
Pour ceux qui utilisent Claude Desktop ou des agents IA en console, msgvault inclut un serveur MCP intégré (Model Context Protocol).
Au lieu de copier manuellement de longues suites d'emails dans une fenêtre de chat avec un réseau de neurones, vous donnez à l'agent accès à l'outil msgvault. Après cela, Claude peut rechercher du contexte dans vos anciennes conversations, retrouver de vieux accords et croiser les données de votre calendrier et Slack. Toutes les requêtes de recherche s'exécutent localement sur votre machine.
Démarrage rapide
L'utilitaire est livré sous forme de binaire prêt à l'emploi. Sur macOS et Linux, l'installation prend une seule commande :
curl -fsSL https://msgvault.io/install.sh | bash
Les utilisateurs de Homebrew peuvent installer le package directement :
brew install msgvault
Pour commencer, initialisez la base de données et liez un compte Gmail de test :
msgvault init-db
msgvault add-account [email protected]
msgvault sync-full [email protected] --limit 100
msgvault serve
La commande add-account ouvre un navigateur pour l'autorisation OAuth. Après avoir téléchargé cent messages, msgvault serve démarre un serveur web local avec recherche.
Si vous avez besoin d'exécuter un processus en arrière-plan pour une synchronisation planifiée continue, l'utilitaire peut fonctionner en mode daemon :
msgvault daemon start
msgvault daemon status
Points à garder à l'esprit
Le projet est en développement actif (version alpha). Les développeurs préviennent que les formats de stockage et les flags CLI peuvent changer entre les versions, il est donc préférable de sauvegarder régulièrement la base de données elle-même.
La deuxième nuance concerne la configuration initiale. Pour connecter Gmail ou Google Calendar, vous devrez consacrer environ cinq minutes à créer votre propre client OAuth dans Google Cloud Console. Cependant, la documentation du projet contient un guide détaillé étape par étape.
À qui ce projet sera utile
msgvault est utile pour les développeurs, les passionnés de confidentialité et tous ceux dont la vie professionnelle est dispersée entre des dizaines de services cloud. L'outil résout le problème de dépendance aux autres plateformes et transforme des archives de messages dispersées en une base de connaissances locale unifiée et rapide.
Projets similaires