Giving every user their own PostgreSQL schema removes a whole class of leak, and per-table consent rules mean a meal-tracking agent and a coding assistant do not see the same rows. The trade-off compared with a local memory file is real infrastructure — Postgres with pgvector — but the self-hosted path is one compose file and the data stays yours either way.
A portable identity and memory service backed by PostgreSQL with pgvector. Each user gets their own database schema rather than row-level filtering, so cross-user access is impossible at the SQL level. Run it hosted or self-host the whole thing with Docker Compose.
- Three MCP tools — recall, memorize and review — the whole surface an agent needs
- Structured tables, vector semantic memory and key-value storage in one place, all queryable and exportable
- A structured profile any agent reads instantly, so a new tool starts knowing you rather than cold
- Confidence scoring and source attribution: memories earn trust through reinforcement instead of being taken at face value
- A knowledge graph of entities connected by typed, weighted edges
- Per-table consent rules per agent, and an append-only activity log of every access
For the hosted service, an API key from Settings → API Keys, sent as an Authorization bearer header to https://epitome.fyi/mcp over Streamable HTTP; Claude Code registers it with `claude mcp add --transport http`. To self-host, clone the repository, copy `.env.example` to `.env` with your credentials and run `docker compose up -d`, then sign in at localhost:5173 with Google or GitHub OAuth and point clients at http://localhost:3000 instead. Built on Node.js 22 LTS and PostgreSQL 17 with pgvector.
One command plus a key — claude mcp add --transport http --header "Authorization: Bearer YOUR_API_KEY" epitome https://epitome.fyi/mcp, then supply credentials
