Как забрать гигабайты переписок из облаков и собрать локальный поисковик на DuckDB и SQLite
Вспомните, сколько раз вы пытались найти старое письмо с вложением, обсуждение бага в Slack двухлетней давности или важную мысль из личных сообщений Discord. Обычно всё это заканчивается открытием десяти разных вкладок в браузере, ковырянием в тугих поисках корпоративных мессенджеров и досадой от того, что бесплатный архив Slack опять обрезал историю сообщений.
Недавно я наткнулся на утилиту msgvault. Это консольное приложение на Go, которое забирает всю вашу переписку из десятка источников на локальный диск, упаковывает её в SQLite и Parquet, а сверху дает удобный веб-интерфейс, TUI в терминале и MCP-сервер для нейросетей.
Зачем затягивать историю переписок на свой диск
Идея забрать данные из чужих сервисов не нова. Однако чаще всего бэкапы превращаются в гигантские папки с дампами JSON или .eml, которые пылятся на жестком диске. Искать в них что-то без специальной базы данных — отдельная мука.
msgvault подменяет собой подход традиционного скачивания архивов. Утилита выкачивает письма, чаты, календари и расшифровки встреч, а потом разворачивает над ними полноценную поисковую аналитику. При этом данные остаются только у вас. Никаких платных подписок за хранение старых тредов или сторонних облачных обработчиков.
Вот что утилита умеет собирать в единую базу:
- Почтовые ящики Gmail (через OAuth или Service Account) и любой стандартный IMAP-сервер.
- Google Календарь (события, участники и организаторы индексируются вместе с почтой).
- Корпоративные чаты Microsoft Teams и Slack, включая реакции, файлы и вложенные треды.
- Серверы Discord через встроенного бот-агента.
- Мессенджеры из Beeper Desktop (дает доступ к iMessage, WhatsApp, Telegram, Signal и SMS).
- Записи и транскрипты встреч из Granola и Circleback.
- Локальные дампы MBOX, архивы Apple Mail (
.emlx), PST и бэкапы SMS из Android.
Как устроена архивация под капотом
Архитектура проекта создавалась с замером на большие объемы данных. Если у вас скопилось за десять лет полмиллиона писем с картинками и документами, обычный жесткий диск начнет тормозить просто от количества файлов в одной директории.
Авторы решили эту задачу связкой из SQLite, DuckDB и сопоставления контента по хэшам.
Основной поиск по тексту работает через FTS5 в SQLite. Сложная аналитика и фильтрация по огромному архиву сообщений крутятся на DuckDB поверх колоночного формата Parquet. За счет этого тяжелые агрегационные запросы в TUI отрабатывают за миллисекунды.
Вложения хранятся не россыпью. msgvault дедуплицирует их по SHA-256 и запаковывает в изолированные бинарные паки. Такой подход экономит инноды на Linux и не тормозит файловую систему на Windows или NAS. При необходимости эти паки всегда можно распаковать обратно командами обслуживания.
Веб-интерфейс, терминал и векторный поиск
После затягивания данных работать с ними можно тремя путями.
Первый вариант: встроенный веб-интерфейс. Демон поднимает HTTP-сервер с приложением, которому не нужны внешние рантаймы вроде Node.js. Интерфейс заточен под быструю навигацию с клавиатуры. В нём удобно группировать письма по доменам, отслеживать контакты и смотреть файлы.
Второй путь: TUI прямо в консоли. Он выводит детальную аналитику по всей вашей истории сообщений. Можно за пару нажатий отфильтровать переписку за определённый год по конкретному адресату.
Третий вариант пригодится тем, кто хочет искать сообщения не только по точным словам, но и по смыслу. msgvault можно подключить к локальному серверу эмбеддингов вроде Ollama, LM Studio или llama.cpp.
После генерации векторов запускается гибридный поиск. Он объединяет классический полнотекстовый поиск BM25 и векторный через Reciprocal Rank Fusion. Вводите запрос в стиле "где мы обсуждали смену архитектуры баз данных", и утилита найдет нужные фрагменты, даже если слово "архитектура" в тексте не встречалось.
Подключение нейросетей через MCP
Для тех, кто использует Claude Desktop или консольные ИИ-агенты, в msgvault встроен MCP-сервер (Model Context Protocol).
Вместо того чтобы вручную скопировать длинные треды писем в окно чата с нейросетью, вы даете агенту доступ к инструменту msgvault. После этого Claude сможет сам искать контекст в ваших прошлых переписках, поднимать старые договоренности, сводить данные из календаря и Slack. Все поисковые запросы при этом отрабатывают локально на вашем компьютере.
Быстрый старт
Утилита поставляется готовым бинарником. На macOS и Linux установка занимает одну команду:
curl -fsSL https://msgvault.io/install.sh | bash
Пользователи Homebrew могут поставить пакет напрямую:
brew install msgvault
Для начала работы инициализируем базу и привязываем тестовый аккаунт Gmail:
msgvault init-db
msgvault add-account you@gmail.com
msgvault sync-full you@gmail.com --limit 100
msgvault serve
Команда add-account откроет браузер для OAuth-авторизации. После скачивания ста сообщений msgvault serve запустит локальный веб-сервер с поиском.
Если нужно запустить фоновый процесс для постоянной синхронизации по расписанию, утилита умеет работать в режиме демона:
msgvault daemon start
msgvault daemon status
Что стоит иметь в виду
Проект находится в стадии активной разработки (альфа-версия). Разработчики предупреждают, что форматы хранения и флаги CLI могут меняться между релизами, поэтому бэкапы самой базы лучше делать регулярно.
Второй нюанс касается первоначальной настройки. Чтобы подключить Gmail или Google Календарь, придется потратить около пяти минут на создание собственного OAuth-клиента в Google Cloud Console. Впрочем, в документации проекта есть детальная пошаговая инструкция.
Кому пригодится проект
msgvault пригодится разработчикам, фанатам приватности и всем, у кого рабочая жизнь распределена по десяткам облачных сервисов. Инструмент решает проблему зависимости от чужих платформ и превращает разрозненные архивы сообщений в единую, быструю и локальную базу знаний.
