Encrypted, searchable, portable Gmail archive
Project description
Coldmail
Encrypted, searchable, portable Gmail archive.
Archive years of Gmail into a single encrypted file. Search it offline with a native-feeling web UI. Keep your email history safe from third-party AI tools, data breaches, and prying eyes.
Why Coldmail?
If you use agentic AI tools (OpenClaw, etc.) that access your email, your entire history is exposed. Coldmail lets you:
- Archive old emails (>1-2 years) out of Gmail
- Encrypt them in a single portable file (AES-256)
- Search them offline with a Gmail-like web interface
- Lock everything behind a password when not in use
- Backup safely to any cloud storage (it's just an opaque encrypted blob)
Quick Start
1. Install Coldmail
pip install coldmail
2. Install dependencies
coldmail setup
# Or manually:
# macOS: brew install --cask docker macfuse veracrypt
# Linux: sudo apt install docker.io veracrypt
3. Create your archive
coldmail init
You'll be asked for a volume size (default: 50GB) and a password.
4. Export your Gmail
Go to Google Takeout:
- Select Gmail only
- Choose MBOX format
- Download when ready
5. Import and search
coldmail start # Mount + start web UI
coldmail import ~/Downloads/Gmail.mbox # Import your emails
# Open http://localhost:15630 and search!
coldmail stop # Lock everything
Usage via AI Agent
Coldmail is designed to be operated end-to-end by an AI agent (Claude, etc.) on your behalf. Every command supports non-interactive flags so no stdin prompts block automation.
Just tell your AI assistant:
"Archive my Gmail with this project: https://github.com/cedric-coroir/coldmail"
The agent reads AGENT.md for step-by-step operational instructions.
Commands
| Command | Description |
|---|---|
coldmail setup |
Install deps, start Docker, pull Bichon image |
coldmail init |
Create a new encrypted archive |
coldmail start |
Mount archive and start web UI |
coldmail stop |
Stop web UI and lock archive |
coldmail status |
Show current status (--json for machine-readable) |
coldmail doctor |
Pre-flight check: deps, daemon, volume, image |
coldmail accounts |
List imported email accounts (--json) |
coldmail clean |
Scan Gmail to exclude newsletter senders |
coldmail import <mbox> |
Import a Google Takeout MBOX file |
coldmail gmail-setup |
Guide for connecting Gmail via IMAP |
coldmail backup <path> |
Backup archive to a location |
coldmail destroy |
Permanently delete archive |
Newsletter Cleaner
Before importing, you can scan your Gmail to identify newsletter senders:
coldmail clean
This connects to Gmail (read-only), finds all senders with "unsubscribe" links, and lets you choose which to exclude. Only the emails you want are imported.
How It Works
coldmail start
|
Gmail ──Takeout──> MBOX ──import──> [VeraCrypt Volume]
|
[Bichon in Docker]
|
localhost:15630
(search web UI)
coldmail stop
|
[Volume locked]
emails.vc = opaque encrypted file
Components:
- VeraCrypt - AES-256 encrypted volume (the
.vcfile) - Bichon - Rust email archiver with React web UI and Tantivy full-text search
- Docker - Runs Bichon in an isolated container
Portability
To move your archive to another machine:
- Copy
emails.vc(your encrypted archive) - Install Docker + VeraCrypt + Coldmail
- Run
coldmail start
That's it. Everything is in the encrypted file.
Security Model
- All emails stored in AES-256 encrypted volume
- Password never stored anywhere
- When stopped: archive is an opaque encrypted file
- Bichon binds to
127.0.0.1only (no network exposure) - Gmail API token deleted after newsletter scan
- Safe to backup to any cloud storage
See Security Model for details.
Requirements
- Python 3.8+
- Docker
- VeraCrypt (+ macFUSE on macOS)
- 10GB+ free disk space
License
MIT - See LICENSE
Credits
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file coldmail-0.5.0.tar.gz.
File metadata
- Download URL: coldmail-0.5.0.tar.gz
- Upload date:
- Size: 27.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2e68fae6ae085c62dd7dce575366a1d8542611c6a5c42313a71ce92597c5699
|
|
| MD5 |
d2a6f89d4ac07cce4e6425036460da26
|
|
| BLAKE2b-256 |
df8352c50188f5f57c6df16fda086a4988dc563fbe2984cf68737a87f2eab74a
|
File details
Details for the file coldmail-0.5.0-py3-none-any.whl.
File metadata
- Download URL: coldmail-0.5.0-py3-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c0f05b842b08342105212e0f607dfee0d7868c1d7d0ed78e11b9fcbe65dcf6d
|
|
| MD5 |
a2850f4c49e645958d691a0ab74c5832
|
|
| BLAKE2b-256 |
a3a27a8073e95b78860c5cbaa98b9d1c043a9428b188dfcb1e2a4d8fc8f49ef5
|