msgvault
- title
- msgvault
- type
- toolbox
- summary
- Офлайн-архив почты с полнотекстовым поиском в SQLite, аналитикой в DuckDB и MCP-сервером
- tags
- go, email, archival, search, duckdb, sqlite, mcp, local-first, watchlist, kenn-software
- language
- Go
- license
- MIT
- created
- 2026-05-22
- updated
- 2026-05-22
- lang
- ru
- translation_of
- msgvault
- source_updated
- 2026-05-22
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Инструмент для архивации почты (и чатов): скачивает полную локальную копию истории сообщений, позволяя искать по ней и строить аналитику за миллисекунды полностью офлайн. Позиционируется как способ "сохранить архив почты за всю жизнь". Входит в kenn-software-suite; самый популярный проект набора (1.8k звёзд), но имеет явный статус alpha.
Что делает
Собирает почту из нескольких источников в одну локальную базу данных - полный бэкап Gmail с ярлыками и метаданными, синхронизация по IMAP со стандартных серверов, а также импорт из MBOX и Apple Mail .emlx. Синхронизация инкрементальная (через Gmail History API, поэтому неизменённые сообщения повторно не скачиваются) и возобновляемая после прерывания. Поддерживается несколько аккаунтов в одной базе, сервисные аккаунты Google Workspace и делегирование на уровне домена (domain-wide delegation) для архивации в масштабах организации.
После архивации к данным можно обращаться офлайн: интерактивный TUI с детализированной аналитикой, синтаксис запросов FTS5 в стиле Gmail и семантический векторный поиск через локальные эмбеддинги (Ollama, llama.cpp, LM Studio). Гибридный поиск комбинирует BM25 и векторный поиск. MCP-сервер открывает доступ к архиву для Claude Desktop и других агентов.
Как устроен внутри
Go 1.25+ (~99%). Два движка хранения бок о бок: SQLite хранит сообщения (с сохранением исходного MIME, вложения адресуются по содержимому и дедуплицируются по SHA-256), а DuckDB обеспечивает агрегационные запросы за миллисекунды, используя Parquet для кэширования аналитики. В этом разделении и заключается суть архитектуры: SQLite как транзакционное хранилище сообщений и FTS, DuckDB - для OLAP-запросов вроде "сколько писем в месяц приходило от X за десять лет", на которых построчное хранилище просто бы зависло.
Опциональный режим демона добавляет HTTP API и синхронизацию по расписанию через cron. Конфигурация в TOML; MSGVAULT_HOME переопределяет расположение данных; поддерживается несколько OAuth-приложений для организаций в Workspace.
Использование
msgvault init-db
msgvault add-account you@gmail.com
msgvault sync-full you@gmail.com --limit 100
msgvault tui
msgvault search "invoice 2023" --mode vector # or --mode hybrid
Распространение: скрипт установки для bash (macOS/Linux), PowerShell (Windows), Conda-Forge, Docker или сборка из исходников. Для сборки требуются Go 1.25+ и компилятор C/C++ для CGO и статической линковки DuckDB.
Ограничения
- Alpha-версия. В README прямо указано: API, формат хранения и флаги CLI могут измениться без предупреждения - делайте резервные копии данных.
- Статическая линковка DuckDB требует наличия тулчейна C/C++ при сборке (это не pure-Go, в отличие от родственного проекта middleman).
Watchlist
Версия v0.14.x с явным предупреждением об alpha-статусе и возможном изменении формата хранения. Отслеживается в watchlist для повторной проверки, когда формат стабилизируется и проект выйдет из alpha.
Связанные страницы
- wacli - WhatsApp CLI, синхронизирующий сообщения локально для офлайн-поиска; та же идея локального владения историей сообщений, но другой источник.
- llama.cpp - один из локальных бэкендов для эмбеддингов, поддерживаемый векторным поиском msgvault.
- kenn-software-suite - остальная часть набора инструментов. msgvault отвечает за персональные данные, остальные ориентированы на рабочие процессы агентов.
Репозиторий
github.com/kenn-io/msgvault - Go (1.25+), MIT, 1.8k звёзд, v0.14.1 (alpha, 27 релизов). msgvault.io.