Mora indexes your Gmail (one or several accounts), Google Calendar, iMessage, Apple Calendar, and local files into a vault of Markdown files and a SQLite index on your machine, then serves it over MCP (the Model Context Protocol) to Claude Code, Codex, or any other MCP client. Point several agents at the same vault and they all answer from your history, with citations.
It runs entirely on your machine: no server, no signup, no telemetry. iMessage and Apple Calendar need macOS; Gmail, Calendar, and files also run on Linux.
What it looks like
$ mora think "what did we decide with Sam about pricing?"
Evidence (3):
[mem_20260610_204655_f3049131] Pricing call with Sam: agreed to $29 one-time
for the pilot; revisit a subscription tier once we cross 10 seats. He wants the
invoice before Friday.
...
Gaps: none detected.
think returns cited evidence plus the gaps it found: stale results, thin coverage, a name the vault has never seen. There's no API key and no model to host; your agent does the reasoning and calls search_memory, think, and brief over MCP.
Install
curl -fsSL https://raw.githubusercontent.com/pyranthus-hq/mora/main/install.sh | sh
The script installs the release binary for your platform, clears the macOS Gatekeeper quarantine (binaries are ad-hoc signed, not notarized), and runs mora init (your vault lives at ~/vault/mora). It does not verify checksums; they are on each release if you want to check by hand. Update in place later with mora upgrade (source builds report dev and cannot self-update). Prefer to build it yourself? go install github.com/pyranthus-hq/mora/cmd/mora@latest (Go 1.25+, pure Go, no CGO).
Then connect your sources:
mora connect google # OAuth login, then backfill Gmail + Calendar (read-only; ~90 days, --since-days to widen)
mora connect google --account work # add a second mailbox (gmail-work / calendar-work sources)
mora connect imessage # macOS; walks you through Full Disk Access
mora schedule install ingest-hourly # background sync (launchd; prints a cron line on Linux)
Wire Mora into your agents (registers the local MCP server):
claude mcp add mora -s user -- mora mcp serve # Claude Code
codex mcp add mora -- mora mcp serve # Codex
Per-connector setup and options are in the guide.
Agent skills (optional)
A small plugin of agent-side recipes that pair with the MCP server; they teach an agent to resolve people, shared history, and calendar context from the vault before reaching for the web:
/plugin marketplace add pyranthus-hq/mora
/plugin install mora@mora
First skill: /mora:dining-concierge, for outing recommendations grounded in who's coming and where you've actually been. Skills are plain Markdown (plugins/mora); other agents can copy them into their own skills directory.
Why a local corpus
Mora keeps a persistent local corpus, so you can ask "what did I commit to, and to whom" across months and have the same context whichever assistant you use. It indexes iMessage (which has no cloud API) and handles several mail accounts at once, then serves all of it to whatever agent you use. Cloud connectors fetch from Google's APIs per query and keep nothing between calls.
| Mora | Cloud connectors | MCP Gmail servers |
|---|
| Data lives | Your disk (Markdown + SQLite) | Vendor cloud | Nowhere (live fetch) |
| iMessage | Yes (local chat.db, read-only) | No | No |
| Multiple mailboxes in one view | Yes | No | Per server |
| One person across email + texts + calendar | Yes | No | No |
| Shared by every agent (Claude, Codex, etc.) | Yes | Tied to the vendor | Per client |
| Works offline / greppable | Yes | No | No |
| Cost | $0, no Mora account | Subscription | Free |
What you get