Mail and calendar land in a local LanceDB and the embedding model runs in-process, so a search never leaves the machine — the tradeoff is memory: the model uses roughly 500MB-1GB while it is actively embedding. Both a CLI skill and the MCP server front the same index; the skill is faster, the MCP server is what other clients can talk to.
A Rust daemon that syncs Gmail over IMAP and Google Calendar over CalDAV into a local LanceDB index, plus `groundeffect-mcp`, the server that exposes the email and calendar tools to your client.
- Hybrid mail search — BM25 full text and vector similarity, fused with Reciprocal Rank Fusion
- Embeddings computed locally with nomic-embed-text-v1.5 through Candle and Metal acceleration, or via OpenRouter if you prefer
- Calendar answers that need no search query — events in a date range, defaulting to the next 7 days
- Sending mail, drafts, threads, attachments and IMAP folders, across as many Gmail accounts as you connect
- Live sync — IMAP IDLE for instant mail, CalDAV polling for calendar
- HTML mail converted to clean plain text before it is indexed
`brew tap jamiequint/groundeffect && brew install groundeffect`, which installs the daemon and starts it at login. You supply your own Google OAuth client — `GROUNDEFFECT_GOOGLE_CLIENT_ID` and `GROUNDEFFECT_GOOGLE_CLIENT_SECRET`, with the Gmail API and Google Calendar API enabled — then run `groundeffect account add` and authorise in the browser. Tokens are stored encrypted under `~/.config/groundeffect/tokens/`.
One command plus a key — brew install groundeffect, then supply credentials
