Local-first email and calendar inbox for AI agents
Project description
Chronos — agent-inbox
Local-first email and calendar inbox for AI agents. Syncs Gmail and Google Calendar into a single queryable SQLite database and exposes all data through an MCP server.
Features
- Sync multiple Gmail and Google Calendar accounts into one SQLite database
- Full-text search via FTS5 (messages and events)
- MCP server at
localhost:7071/ssefor agent integration - HTTP REST API at
localhost:7070for direct queries - Read-only SQL interface via
POST /v1/query - Optimistic event writes with provider-wins conflict resolution
- Incremental sync with historyId (Gmail) and syncToken (Calendar)
- ULID primary keys, WAL mode, no cloud dependencies at query time
Installation
pipx install chronos-mcp
Or from source:
git clone https://github.com/CourtimusPrime/chronos.git
cd chronos
pip install -e .
Setup
Prerequisites
- Go to console.cloud.google.com
- Create a project and enable Gmail API and Google Calendar API
- Create an OAuth client ID (Desktop app type)
- Download the credentials JSON file
Register an account
Run
chronos --helpfor full Google Cloud Console setup instructions.
# Step 1: Stage your credentials (Desktop app OAuth JSON from Google Cloud Console)
chronos --use /path/to/credentials.json
# Step 2: Register an account (opens browser for OAuth2 consent)
chronos --add personal
Staged credentials persist until the next --use call, so you can register
multiple accounts with one credentials file:
chronos --use /path/to/credentials.json
chronos --add personal
chronos --add work
The --add step:
- Writes
~/.chronos/personal_token.json(self-contained token file) - Creates two rows in the accounts table (gmail + google_calendar)
- Prints a confirmation summary
Start syncing
chronos --start
The daemon starts on 127.0.0.1:7070 (HTTP) and 127.0.0.1:7071 (MCP/SSE).
CLI Reference
chronos --use CREDENTIALS_PATH # Stage a credentials JSON for --add
chronos --add ALIAS # Register a new account (requires prior --use)
chronos --remove ALIAS # Remove an account and its data
chronos --list # List all registered accounts
chronos --test ALIAS # Test account tokens
chronos --start [--http-port N] [--mcp-port N] # Start daemon
chronos --stop # Stop the running daemon (preserves synced data)
chronos --status # Show sync status
chronos --sync [ALIAS] [--type full|incremental] # Trigger sync
Ctrl+C vs --stop: Pressing Ctrl+C while
chronos --startis running wipes synced data (emails, threads, events, calendars) but preserves accounts. Usechronos --stopfrom another terminal for a clean shutdown that preserves data.Run
chronos --helpfor Google Cloud Console setup steps.
Environment Variables
| Variable | Default | Description |
|---|---|---|
CHRONOS_HOME |
~/.chronos |
Credentials and database directory |
CHRONOS_DB_PATH |
$CHRONOS_HOME/chronos.db |
SQLite database file |
CHRONOS_HTTP_PORT |
7070 |
HTTP API port |
CHRONOS_MCP_PORT |
7071 |
MCP server port |
CHRONOS_LOG_LEVEL |
INFO |
Log level |
License
MIT
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 chronos_mcp-0.1.6.tar.gz.
File metadata
- Download URL: chronos_mcp-0.1.6.tar.gz
- Upload date:
- Size: 51.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
550696f9773f383be6adeba1490b5331a8050e561dffeeb8cd50a4e2006286aa
|
|
| MD5 |
5e97accf1eca422ef592e4ec2a196a8e
|
|
| BLAKE2b-256 |
aff51b6d20288e82754cf3cea623838323b9651e7dc825589ab59ae5b0e58d74
|
File details
Details for the file chronos_mcp-0.1.6-py3-none-any.whl.
File metadata
- Download URL: chronos_mcp-0.1.6-py3-none-any.whl
- Upload date:
- Size: 52.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0b835039c1e29353b9e34b9345e7f52ea41a0ca93f6317c9d268f71dc10d6f5
|
|
| MD5 |
1a1affda0a0c1dd9f864f9863575c87e
|
|
| BLAKE2b-256 |
84d21d2c46e75afdea3f8a8d35735eb942f3b79c0c20948d476e9edd1d92fe11
|