Most solutions I found required Docker, external databases, or cloud accounts - overkill for what's essentially a personal context store. So I built Covalence: a Mac app that bundles an MCP server and a local vector database into a single download. Any MCP client connects to it. Store a memory in Claude, retrieve it from Cursor. Same database, zero config.
The stack: SQLite + sqlite-vec, nomic-embed-text-v1.5 running on-device via CoreML (no API keys, no network calls). Hybrid BM25 + vector search. Everything lives in a single SQLite file. The hard part was concurrency. Multiple Claude sessions writing to the same MCP server would deadlock. SQLite in WAL mode with each MCP client as a separate process solved it - multiple clients read and write simultaneously without blocking. Embeddings run sub-second on Apple Silicon.
A few features that emerged from daily use:
Core Memories - pin facts the AI should always know (your stack, your preferences, standing instructions). They persist across every session and every client. Spaces - separate memory contexts for work, personal, or individual projects. No cross-contamination. Global hotkey capture - store something without switching away from whatever you're doing.
Free, no limits. macOS 15+, ~261MB (mostly the CoreML embedding model). https://covalence.app