project devlogs / msgvault
msgvault Keep a lifetime of email and chat in one searchable archive, with keyword and semantic search, local AI workflows, and agent access
GitHub ↗ Website ↗
By week By project Choose project msgvault ↓ AgentsView msgvault roborev kata Kenn Forge docbank Ghosthub kwt BenchDB msgvault source code growth Source code measured at 33 snapshots, from 27,469 lines on 2026-01-28 to 795,434 lines on 2026-09-05. Full measurements are in the table below. 0 397,717 795,434 2026-01-28: 27,469 source lines 2026-02-01: 30,530 source lines 2026-02-08: 47,060 source lines 2026-02-15: 50,172 source lines 2026-02-22: 50,172 source lines 2026-03-01: 60,531 source lines 2026-03-08: 60,531 source lines 2026-03-15: 64,217 source lines 2026-03-22: 66,206 source lines 2026-03-29: 67,667 source lines 2026-04-05: 79,596 source lines 2026-04-12: 81,723 source lines 2026-04-19: 83,944 source lines 2026-04-26: 98,271 source lines 2026-05-03: 98,866 source lines 2026-05-10: 118,226 source lines 2026-05-17: 119,136 source lines 2026-05-24: 119,592 source lines 2026-05-31: 114,417 source lines 2026-06-07: 114,501 source lines 2026-06-14: 114,762 source lines 2026-06-21: 127,625 source lines 2026-06-28: 136,890 source lines 2026-07-05: 186,177 source lines 2026-07-12: 200,323 source lines 2026-07-19: 219,762 source lines 2026-07-26: 305,031 source lines 2026-08-02: 335,151 source lines 2026-08-09: 394,722 source lines 2026-08-16: 463,404 source lines 2026-08-23: 571,341 source lines 2026-08-30: 682,158 source lines 2026-09-05: 795,434 source lines 2026-01-28 2026-09-05 msgvault source code growth Source code measured at 33 snapshots, from 27,469 lines on 2026-01-28 to 795,434 lines on 2026-09-05. Full measurements are in the table below. 0 397.7K 795.4K 2026-01-28: 27,469 source lines 2026-02-01: 30,530 source lines 2026-02-08: 47,060 source lines 2026-02-15: 50,172 source lines 2026-02-22: 50,172 source lines 2026-03-01: 60,531 source lines 2026-03-08: 60,531 source lines 2026-03-15: 64,217 source lines 2026-03-22: 66,206 source lines 2026-03-29: 67,667 source lines 2026-04-05: 79,596 source lines 2026-04-12: 81,723 source lines 2026-04-19: 83,944 source lines 2026-04-26: 98,271 source lines 2026-05-03: 98,866 source lines 2026-05-10: 118,226 source lines 2026-05-17: 119,136 source lines 2026-05-24: 119,592 source lines 2026-05-31: 114,417 source lines 2026-06-07: 114,501 source lines 2026-06-14: 114,762 source lines 2026-06-21: 127,625 source lines 2026-06-28: 136,890 source lines 2026-07-05: 186,177 source lines 2026-07-12: 200,323 source lines 2026-07-19: 219,762 source lines 2026-07-26: 305,031 source lines 2026-08-02: 335,151 source lines 2026-08-09: 394,722 source lines 2026-08-16: 463,404 source lines 2026-08-23: 571,341 source lines 2026-08-30: 682,158 source lines 2026-09-05: 795,434 source lines 2026-01-28 2026-09-05 +767,965 lines since 2026-01-28
Measurements & method SCC code lines (nonblank, noncomment) in tracked source files, including tests, SQL, HTML, and CSS. Excludes prose, shell scripts, data/config files, vendored dependencies, build output, generated and minified files. Counts the checked-out tree, not accumulated additions.
Snapshots follow the repository’s default branch. Lines measure codebase size, not work completed. Historical counts can fall when code is removed.
Measured with scc 3.7.0. Updated 2026-09-05.
Source line measurements for msgvault Date Source lines Files Commit 2026-09-05 795,434 2,324 4e1aae8 2026-08-30 682,158 2,054 68b3f0e 2026-08-23 571,341 1,817 dd6241f 2026-08-16 463,404 1,563 6945614 2026-08-09 394,722 1,432 7a19e77 2026-08-02 335,151 1,266 9a3819c 2026-07-26 305,031 1,184 930a891 2026-07-19 219,762 810 5dbfdab 2026-07-12 200,323 754 597c1a6 2026-07-05 186,177 716 a939980 2026-06-28 136,890 524 80e46a8 2026-06-21 127,625 493 6e39c04 2026-06-14 114,762 434 4cb4343 2026-06-07 114,501 434 a34c50d 2026-05-31 114,417 433 6bb5f11 2026-05-24 119,592 399 1d53b4b 2026-05-17 119,136 397 31098c3 2026-05-10 118,226 396 e375f52 2026-05-03 98,866 312 580d6da 2026-04-26 98,271 312 afc4f0b 2026-04-19 83,944 256 d33fae4 2026-04-12 81,723 250 ea5699c 2026-04-05 79,596 242 1b2483f 2026-03-29 67,667 203 93134d6 2026-03-22 66,206 201 f0edfe5 2026-03-15 64,217 199 e4abd98 2026-03-08 60,531 188 30a9e26 2026-03-01 60,531 188 4801588 2026-02-22 50,172 155 307e4c5 2026-02-15 50,172 155 68517c1 2026-02-08 47,060 150 783a3ec 2026-02-01 30,530 82 deb8350 2026-01-28 27,469 60 6cefcb2
Project timeline Newest first 378 merged PRs · 40 releases · 30 weeks in the devlog
2026-08-24 to 2026-08-30
27 PRs merged (7 Kenn, 20 community) Weekly diff: +131,090 / −4,181 lines
Find extracted attachments by meaning with semantic search. Browse people in the terminal UI, with facts that automatically resolve conflicts and repair themselves. Import WhatsApp conversations from Apple ChatStorage text exports. Incremental IMAP sync no longer rereads whole mailboxes on servers without QRESYNC, and Gmail sync can reconcile missed deletions after history expires. Malformed headers and attachment content types no longer force msgvault to discard the whole message. 2026-08-17 to 2026-08-23
27 PRs merged (10 Kenn, 17 community) Weekly diff: +140,552 / −8,004 lines
Sync curated msgvault contacts with an external address book in both directions through CardDAV. Merge duplicate person profiles and split them again later. Semantic search also makes people easier to find without exact terms. Search attachment documents, images, and videos. The terminal interface can now browse, open, export, and search attachments. Teams chat keeps syncing after its first run, while IMAP uses QRESYNC to fetch incremental updates. Choose an exact source for account-scoped operations, and connect Gmail with read-only access. 2026-08-10 to 2026-08-16
16 PRs merged (8 Kenn, 8 community) Weekly diff: +100,615 / −4,111 lines
Search can now use contextual embeddings for chats and transcripts, with embedding builds scoped to individual accounts. Contact records now support organizations, employment history, dated activity, and relationships that change over time. Beeper imports now preserve plain text, resume historical backfills, classify link previews, and surface identity matches for review. Web views now recover during cache initialization, while cache rebuilds and large Everything and Files listings stay bounded. Packaged installations now include the production web interface, and calendar sync preserves UTF-8 characters. 2026-08-03 to 2026-08-09
37 PRs merged (17 Kenn, 20 community) Weekly diff: +83,931 / −4,300 lines
Email identities can now be scoped to a source, so accounts that share an identifier can be managed separately. Person profiles now support typed attributes, portable field metadata, and lossless vCard import and export. API clients can follow message content updates through the new message changes feed, and MCP clients can use protocol version 2026-07-28. The API now starts before analytics caches finish building, while bounded cache builds better support larger archives. Fastmail, Beeper, Circleback, Slack, meeting imports, and scheduled jobs received fixes for sync failures, stalls, and provider-specific data formats. 2026-07-27 to 2026-08-02
20 PRs merged (9 Kenn, 11 community) Weekly diff: +41,666 / −3,803 lines
Archive Slack workspaces using user-token sync, including replies found through search. Choose which IMAP folders to sync instead of importing every folder. Ingest individual meetings through a generic endpoint and export bounded sets of messages. Query relationships and durable person profiles on large, mixed-source archives without exhausting memory or temporary storage. Use vector search in the Docker image, authenticate Streamable HTTP with bearer tokens, and run daemon commands reliably on slow storage. 2026-07-20 to 2026-07-26
10 PRs merged (6 Kenn, 4 community) Weekly diff: +109,729 / −1,557 lines
Explore connections between messages in a new relationships-focused web interface. Repair missing or implausible message dates, including timestamps already stored in the database. Configure a custom redirect URI for Microsoft 365 authentication. Sync Granola notes with date-only timestamps without decoding failures. Recover message dates from malformed mbox Date headers. 2026-07-13 to 2026-07-19
14 PRs merged (11 Kenn, 3 community) Weekly diff: +35,827 / −1,526 lines
Sync Granola and Circleback meetings, then browse them in the terminal interface. Import complete Discord guild history into msgvault. Build and develop msgvault natively on Windows. IMAP fast sync now tracks high-water marks correctly. Daemon discovery now works when your home directory is accessed through a symlink. 2026-07-06 to 2026-07-12
26 PRs merged (19 Kenn, 7 community) Weekly diff: +43,550 / −23,920 lines
Beeper Desktop chats can now be archived in msgvault. Backups now preserve packed attachments and can restore them directly, while the API can serve attachment content by hash. Search now separates metadata and body scopes, supports semantic matches, searches within individual messages, and no longer waits for a full-text index check. IMAP fetching is more reliable, and Apple Mail imports now include .partial.emlx files when their message bodies are complete. Native Windows ARM64 releases are now available. 2026-06-29 to 2026-07-05
9 PRs merged (9 Kenn, 0 community) Weekly diff: +81,721 / −15,876 lines
Back up and recover vaults with new init, create, list, verify, and restore commands. IMAP resyncs now skip unchanged folders, reducing unnecessary work. When shutdown is delayed, msgvault now explains the wait and reports the daemon's active operation. MCP searches now reject Gmail-only list operators instead of accepting unsupported queries. 2026-06-22 to 2026-06-28
12 PRs merged (2 Kenn, 10 community) Weekly diff: +26,121 / −6,382 lines
Sync Google Calendar events and Microsoft Teams messages into msgvault. Build embeddings for selected scopes instead of processing the entire vault. Filter searches by message type, while empty text or subject terms no longer match every message. Facebook Messenger imports now preserve multiple attachments instead of collapsing them into one record. Long message bodies can be read in windows through MCP. 2026-06-15 to 2026-06-21
15 PRs merged (5 Kenn, 10 community) Weekly diff: +20,680 / −1,645 lines
Run msgvault with PostgreSQL and use pgvector-backed search. Track source sync status, per-item failures, and full-sync batch error counts. Page through large search and message-list results via MCP. Synctech Drive sync is more reliable, and imports now tolerate missing checksums. Install msgvault on macOS with Homebrew using the new documentation. 2026-06-08 to 2026-06-14
5 PRs merged (3 Kenn, 2 community) Weekly diff: +591 / −65 lines
Verification results can now be returned as JSON for scripts and other tools. Long-running servers no longer hit cache rebuild failures caused by database WAL corruption. Hybrid search now handles punctuation and other FTS5 metacharacters without syntax errors. Installation now works with Windows PowerShell 5.x redirects and includes an Arm64 fallback. 2026-06-01 to 2026-06-07
3 PRs merged (2 Kenn, 1 community) Weekly diff: +154 / −21 lines
The Contacts view now loads in TUI Texts mode without triggering a DuckDB out-of-memory error. Update checks and the setup image work again after the repository rename. Nix users can now install msgvault v0.15.1. 2026-05-25 to 2026-05-31
16 PRs merged (13 Kenn, 3 community) Weekly diff: +21,401 / −27,434 lines
Import messages from Synctech SMS Backup & Restore files. Search and embedding indexes now preserve long messages by splitting them into chunks instead of truncating them. Manage embedding generations from the command line. Update checks now avoid GitHub API rate limits. 2026-05-18 to 2026-05-24
9 PRs merged (4 Kenn, 5 community) Weekly diff: +6,340 / −1,794 lines
Scheduled sync now works for IMAP accounts, not just Gmail. Embedded content preprocessing now strips HTML, base64 wrappers, URL tracking, and excess whitespace. SQLite search results now use weighted ranking that more closely matches PostgreSQL. SQLite syncs are more durable, and network failures are no longer misreported as token problems. PST imports now namespace message IDs per archive to avoid collisions between archives. 2026-05-11 to 2026-05-17
3 PRs merged (2 Kenn, 1 community) Weekly diff: +1,646 / −534 lines
iMessage imports can now backfill missing display names from vCard contacts. Domain searches no longer return deleted messages. 2026-05-04 to 2026-05-10
7 PRs merged (1 Kenn, 6 community) Weekly diff: +22,358 / −593 lines
Import message history from Facebook Messenger downloads and Microsoft Outlook PST archives. Organize archived data by account, identity, and collection while deduplicating repeated content. Use Google service accounts with domain-wide delegation. Run msgvault with PostgreSQL. Access HTML email content and inline MIME parts through the API. 2026-04-27 to 2026-05-03
3 PRs merged (0 Kenn, 3 community) Weekly diff: +1,128 / −62 lines
Search for participants across multiple domains with the new search_by_domains MCP tool. Run the MCP server over Streamable HTTP with the new --http flag. Diagnose slow or failed queries more easily with SQL arguments and accurate streaming durations in logs. 2026-04-20 to 2026-04-26
9 PRs merged (5 Kenn, 4 community) Weekly diff: +19,546 / −595 lines
Find messages by meaning with local semantic search, or combine it with full-text search for more relevant results. Embedding backfills now show progress and an ETA, skip empty processed messages, and retry smaller batches when oversized messages cause failures. Repair corrupted FTS5 search indexes with the new rebuild-fts command. Removing an account now also deletes its downloaded attachment files. 2026-04-13 to 2026-04-19
6 PRs merged (4 Kenn, 2 community) Weekly diff: +3,007 / −152 lines
Search is faster again, and a race condition in the terminal interface no longer causes failures. Old WhatsApp msgstore.db backups can now be imported. Structured file logs now group related events by run, making problems easier to trace. 2026-04-06 to 2026-04-12
11 PRs merged (7 Kenn, 4 community) Weekly diff: +2,765 / −282 lines
Query archived messages directly with SQL or through the new Claude Code skill. Search now supports query syntax, regular expressions, FTS5, snippets, sorting, body context, and domain matching. IMAP accounts now authenticate more reliably, support passwords from environment variables, classify standard folders as system labels, and work with delete-staged. Import mbox files without specific extensions, apply multiple labels, and add labels when re-importing duplicate messages. Access CC and BCC recipients through the message API, and use shell completion in the CLI. 2026-03-30 to 2026-04-05
8 PRs merged (5 Kenn, 3 community) Weekly diff: +15,371 / −710 lines
Import text messages from WhatsApp, iMessage, and Google Voice. Sync Microsoft 365 email using OAuth2 IMAP. Limit IMAP syncs with before and after date filters. Label name conflicts no longer cause sync failures. Concurrent MCP sessions no longer hang new database connections. 2026-03-23 to 2026-03-29
6 PRs merged (4 Kenn, 2 community) Weekly diff: +1,953 / −154 lines
Google Workspace organizations can now configure multiple OAuth apps for account syncing. IMAP setup now accepts passwords through a masked prompt that shows asterisks as you type. msgvault now guards against SQLite corruption and empty analytics caches. IMAP setup now parses IPv6 host addresses correctly. 2026-03-16 to 2026-03-22
4 PRs merged (1 Kenn, 3 community) Weekly diff: +2,635 / −208 lines
Use the TUI with a remote msgvault server. Search and show-message JSON output now includes source_conversation_id, exposing Gmail thread IDs to scripts. IMAP search now works with more IMAP4rev1 servers by avoiding an unsupported ESEARCH extension. 2026-03-09 to 2026-03-15
6 PRs merged (5 Kenn, 1 community) Weekly diff: +5,110 / −469 lines
Connect and sync IMAP accounts directly. Import Apple Mail V10 messages, with automatic account discovery. Limit searches to a specific account with the new --account flag. Sync reauthentication no longer pollutes stored tokens, and MIME parse errors are kept readable. 2026-03-02 to 2026-03-08
1 PR merged (1 Kenn, 0 community) Weekly diff: +1 / −1 lines
No user-facing changes were included this week. 2026-02-23 to 2026-03-01
8 PRs merged (5 Kenn, 3 community) Weekly diff: +13,188 / −881 lines
Import local email from MBOX files and Apple Mail EMLX directories, including the modern V10 layout. Create smaller database subsets with the new create-subset command. Remove accounts and their associated data from the vault. Email ingestion no longer fails due to the reported foreign key constraint error. Expired or revoked OAuth tokens now trigger reauthentication, with a --force option available. 2026-02-09 to 2026-02-15
6 PRs merged (2 Kenn, 4 community) Weekly diff: +5,130 / −422 lines
Deploy msgvault on a NAS or with Docker. Search by label in the TUI, with aggregate searches now behaving correctly. Stage emails for deletion through the MCP tool during Claude-assisted cleanup. Install msgvault with additional package managers using the new instructions. 2026-02-02 to 2026-02-08
54 PRs merged (33 Kenn, 21 community) Weekly diff: +46,439 / −26,443 lines
Run msgvault as an HTTP API daemon with scheduled syncs. Use msgvault on Windows with native installers, updates, secure file permissions, and Windows-friendly path handling. Search and navigate large mail archives more reliably, with full-text indexing, pagination, scrolling, filters, and empty-result handling fixed. Export individual attachments or batches from the CLI, and access attachments through the MCP server. Sync all accounts without listing them individually, with faster incremental sync and safer deletion recovery. 2026-01-26 to 2026-02-01
0 PRs merged (0 Kenn, 0 community) Weekly diff: +52,195 / −11,562 lines
Ask questions about your email from the terminal with the new Ollama-powered chat command. Connect msgvault to Claude Desktop through the new MCP command, including attachment retrieval. Export email attachments directly from the terminal interface. Find messages faster with highlighted search terms and find-in-page support in the detail view. Update msgvault with a built-in command and see update notifications in the terminal interface.