You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+20-1Lines changed: 20 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,9 @@
4
4
5
5
When a task involves multiple steps (e.g., implement + commit + PR), complete ALL steps in sequence without stopping. If creating a branch, committing, and opening a PR, finish the entire chain.
6
6
7
-
Always commit after every turn. Don't wait for the user to ask — if you made changes, commit them before responding.
7
+
Always commit after every turn. Don't wait for the user to ask — if you made changes, commit them before responding. Do not ask "shall I commit?" or "want me to commit?" — just commit. Committing is not a destructive or risky action; it is the expected default after every change.
8
+
9
+
PR descriptions should be concise and changelog-oriented: what changed, why, and how to use it. Do not include test plans, design decisions, or implementation details — those belong in specs and commit messages.
Copy file name to clipboardExpand all lines: README.md
+64-7Lines changed: 64 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,18 +15,19 @@ Archive a lifetime of email. Analytics and search in milliseconds, entirely offl
15
15
16
16
Your messages are yours. Decades of correspondence, attachments, and history shouldn't be locked behind a web interface or an API. msgvault downloads a complete local copy and then everything runs offline. Search, analytics, and the MCP server all work against local data with no network access required.
17
17
18
-
Currently supports Gmail sync, plus offline imports from MBOX exports and Apple Mail (.emlx) directories.
18
+
Currently supports Gmail and IMAP sync, plus offline imports from MBOX exports and Apple Mail (.emlx) directories.
19
19
20
20
## Features
21
21
22
22
-**Full Gmail backup**: raw MIME, attachments, labels, and metadata
23
+
-**IMAP sync**: archive mail from any standard IMAP server
23
24
-**MBOX / Apple Mail import**: import email from MBOX exports or Apple Mail (.emlx) directories
24
-
-**Interactive TUI**: drill-down analytics over your entire message history, powered by DuckDB over Parquet
25
+
-**Interactive TUI**: drill-down analytics over your entire message history, powered by DuckDB over Parquet — connects to a remote `msgvault serve` instance or runs locally
25
26
-**Full-text search**: FTS5 with Gmail-like query syntax (`from:`, `has:attachment`, date ranges)
26
27
-**MCP server**: access your full archive at the speed of thought in Claude Desktop and other MCP-capable AI agents
27
28
-**DuckDB analytics**: millisecond aggregate queries across hundreds of thousands of messages in the TUI, CLI, and MCP server
28
29
-**Incremental sync**: History API picks up only new and changed messages
29
-
-**Multi-account**: archive several Gmail accounts in a single database
30
+
-**Multi-account**: archive several Gmail and IMAP accounts in a single database
30
31
-**Resumable**: interrupted syncs resume from the last checkpoint
31
32
-**Content-addressed attachments**: deduplicated by SHA-256
32
33
@@ -78,18 +79,23 @@ msgvault tui
78
79
| Command | Description |
79
80
|---------|-------------|
80
81
|`init-db`| Create the database |
81
-
|`add-account EMAIL`| Authorize a Gmail account (use `--headless` for servers) |
82
+
|`add-account EMAIL`| Authorize a Gmail account (use `--headless` for servers) or add an IMAP account |
82
83
|`sync-full EMAIL`| Full sync (`--limit N`, `--after`/`--before` for date ranges) |
83
84
|`sync EMAIL`| Sync only new/changed messages |
84
-
|`tui`| Launch the interactive TUI (`--account` to filter) |
85
-
|`search QUERY`| Search messages (`--json` for machine output) |
85
+
|`tui`| Launch the interactive TUI (`--account` to filter, `--local` to force local) |
86
+
|`search QUERY`| Search messages (`--account` to filter, `--json` for machine output) |
87
+
|`show-message ID`| View full message details (`--json` for machine output) |
86
88
|`mcp`| Start the MCP server for AI assistant integration |
89
+
|`serve`| Run daemon with scheduled sync and HTTP API for remote TUI |
87
90
|`stats`| Show archive statistics |
91
+
|`list-accounts`| List synced email accounts |
88
92
|`verify EMAIL`| Verify archive integrity against Gmail |
89
93
|`export-eml`| Export a message as `.eml`|
90
94
|`import-mbox`| Import email from an MBOX export or `.zip` of MBOX files |
91
95
|`import-emlx`| Import email from an Apple Mail directory tree |
92
96
|`build-cache`| Rebuild the Parquet analytics cache |
97
+
|`update`| Update msgvault to the latest version |
msgvault includes an MCP server that lets AI assistants search, analyze, and read your archived messages. Connect it to Claude Desktop or any MCP-capable agent and query your full message history conversationally. See the [MCP documentation](https://msgvault.io/usage/chat/) for setup instructions.
127
160
161
+
## Daemon Mode (NAS/Server)
162
+
163
+
Run msgvault as a long-running daemon for scheduled syncs and remote access:
164
+
165
+
```bash
166
+
msgvault serve
167
+
```
168
+
169
+
Configure scheduled syncs in `config.toml`:
170
+
171
+
```toml
172
+
[[accounts]]
173
+
email = "you@gmail.com"
174
+
schedule = "0 2 * * *"# 2am daily (cron)
175
+
enabled = true
176
+
177
+
[server]
178
+
api_port = 8080
179
+
bind_addr = "0.0.0.0"
180
+
api_key = "your-secret-key"
181
+
```
182
+
183
+
The TUI can connect to a remote server by configuring `[remote].url`. Use `--local` to force local database when remote is configured. See [docs/api.md](docs/api.md) for the HTTP API reference.
184
+
128
185
## Documentation
129
186
130
187
-[Setup Guide](https://msgvault.io/guides/oauth-setup/): OAuth, first sync, headless servers
0 commit comments