Ambient Memory, an open-source AI project by Jarvis Osorio

Ambient Memory (ambient-memory) is an open-source, local-first context layer for AI engineers, created by Jarvis Osorio (Jarvis Nelson Osorio). It passively remembers what you worked on — files, screen sessions and browser history — and exposes that memory to Cursor and Claude Desktop over the Model Context Protocol (MCP).

View the GitHub repository

The project is written in TypeScript, requires Node.js 20 or later (22+ preferred), and is released under the MIT License. The current version in the repository is 0.3.0. There is no telemetry or network sync in v0.3.

What it does

A background daemon watches Documents, Desktop, Downloads and the current working directory, and indexes screen and browser activity with noise filters (for example it ignores Slack, Spotify and similar apps, and dedupes focus churn). Only the daemon opens the SQLite vault. The CLI and the MCP server are thin clients over a local Unix socket (or a Windows named pipe), so they do not open the database themselves.

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 native addon and no node-gyp or MSVC toolchain required to install.

Search uses 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 the repository, not claimed as ciphertext.

MCP tools

The MCP server auto-starts the daemon if needed. The tools are:

Quick start

The README documents npx -y ambient-memory as the intended install once the package is on npm. As of 12 November 2026, ambient-memory is not yet on the npm registry, so install from the GitHub repository:

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

After the package is published to npm, the same commands work as:

npx -y ambient-memory init
npx -y ambient-memory start --screen auto
npx -y ambient-memory mcp

MCP — Cursor or Claude Desktop

From a local clone, point the client at the repo binary (replace the path):

{
  "mcpServers": {
    "ambient-memory": {
      "command": "node",
      "args": ["/ABS/PATH/ambient-memory/bin/ambient.js", "mcp"]
    }
  }
}

Once the package is on npm, the README's config is:

{
  "mcpServers": {
    "ambient-memory": {
      "command": "npx",
      "args": ["-y", "ambient-memory", "mcp"]
    }
  }
}

CLI

ambient-memory init | start | stop | status | doctor
ambient-memory search "query" [--type file,url] [--since-mins 60]
ambient-memory recent | context --minutes 30 [--json]
ambient-memory forget "query" --yes | forget --all --yes
ambient-memory mcp

From the repository, use node ./bin/ambient.js in place of ambient-memory. Both ambient and ambient-memory are package bin names.

Privacy and crypto

LayerBehavior
Entity fieldsAES-256-GCM
At rest (daemon stopped)memory.db.enc only
FTS while unlockedRedacted plaintext (search tradeoff)
NetworkNo telemetry or sync in v0.3
Process modelDaemon owns the database; clients use IPC

The threat model assumes the interactive user account is trusted. Ambient Memory does not protect against a compromised process running as the same user while the vault is unlocked. See SECURITY.md.

Optional overrides: AMBIENT_SQLITE_BACKEND=sql.js forces the WASM backend. --file-key or AMBIENT_FORCE_FILE_KEY=1 forces a file-backed master key instead of the OS keychain.

Source and license

Also published

Identity: Jarvis Osorio · Jarvis Nelson Osorio · AI work · Official profiles

Updated: November 12, 2026 (America/New_York)