Show and tell: I open-sourced Ambient Memory, a local-first context layer for Cursor and Claude Desktop
I built and open-sourced Ambient Memory — a local-first context layer that passively remembers what I worked on and hands that context to Cursor or Claude Desktop over MCP.
- Project page: https://jarvisosorio.com/ambient-memory/
- Source: https://github.com/JarvisOsorio/ambient-memory
- License: MIT
- Version in the repo: 0.3.0
- Language: TypeScript, Node.js 20+ (22+ preferred)
I'm Jarvis Osorio (Jarvis Nelson Osorio), a technology entrepreneur and AI innovator based in Miami Beach, Florida.
The problem I wanted to solve
Most "memory" for coding agents is either a Markdown vault you have to maintain, a cloud sync you have to trust, or a native SQLite addon that breaks the install on a clean machine. I wanted something that starts with one command, stays on disk, and speaks MCP.
What Ambient Memory actually does
A background daemon:
- watches Documents, Desktop, Downloads and the current working directory
- indexes screen sessions and browser history, with noise filters (Slack, Spotify and similar apps are ignored; focus churn is deduped)
- is the only process that opens the SQLite vault
The CLI and the MCP server are thin clients over a local Unix socket (or a Windows named pipe). That design removes seal/unseal races from concurrent database opens.
Storage uses Node's built-in node:sqlite on Node 22+, with a sql.js WASM fallback on Node 20. There is no better-sqlite3 and no node-gyp.
Search is FTS5/BM25. Entity fields are encrypted with AES-256-GCM. When the daemon stops, the database is sealed to memory.db.enc and the plaintext plus WAL/SHM files are removed. While the vault is unlocked, the FTS index is redacted plaintext — an intentional search tradeoff, documented in SECURITY.md, not claimed as ciphertext. v0.3 has no telemetry and no network sync.
MCP tools
memory_search · memory_recent · memory_get · memory_context · memory_relate · memory_status
memory_context returns a short "what was I doing" summary for the last N minutes, including a noise-control report.
Quick start
As of 12 November 2026, ambient-memory is not yet on the npm registry. Install from GitHub:
git clone https://github.com/JarvisOsorio/ambient-memory.git cd ambient-memory npm install npm test node ./bin/ambient.js init node ./bin/ambient.js start --screen auto # headless: --screen simulated node ./bin/ambient.js mcp Point Cursor or Claude Desktop at the local binary:
{ "mcpServers": { "ambient-memory": { "command": "node", "args": ["/ABS/PATH/ambient-memory/bin/ambient.js", "mcp"] } } } The README also documents npx -y ambient-memory as the intended path once the package is published to npm.
Issues and contributions are welcome in the repo. If you try it, I'd like to know whether the daemon-owned vault and the honest FTS tradeoff match how you actually work with agents.
— Jarvis Osorio