memroam
Memroam
Your memory shouldn't be locked to one model. Memroam gives every AI agent you use — Claude Code, Codex, Cursor, ChatGPT, and friends — one shared, portable memory: teach a convention in one harness, switch to another mid-task, and it picks up exactly where you stopped. No database, no embeddings: plain Markdown files you own, wired to every agent over MCP with one command. Your memory roams with you.

Memroam stores facts as ordinary Markdown files. Each project gets an isolated memory space, while shared/ holds facts that apply across projects. The files stay on your machine (or in your own GitHub repository with the hosted tier) and remain fully usable if you change models or agent harnesses — that's the point.
How it works
The MCP server gives an agent six file operations — view, create, str_replace, insert, delete, and rename — plus search, a vault-wide keyword search over frontmatter and bodies.
The agent writes small memory files; each space's MEMORY.md index is generated by the server from the files' frontmatter after every change (editing it directly is refused). Every new memory gets an immutable UUIDv7 id: stamped at creation, and create refuses to replace an existing file unless told to overwrite. There is no database or embedding model. The Markdown files are the source of truth, so you can read, edit, grep, or version them yourself.
memory/
MEMORY.md # index of project spaces
shared/
MEMORY.md # cross-project facts
*.md
<project>/
MEMORY.md # project index
*.mdA project connection reads and writes its own space by default, but the whole vault stays visible — other spaces are addressable by path, and the root listing shows every space. Scope is a routing default, not a wall. An unscoped connection starts at the vault root for cross-project maintenance.
Related MCP server: auxly-memory-cli
Requirements
Node.js 18 or newer
An MCP client that supports stdio (global install) or Streamable HTTP (per-repo install)
Memroam has no runtime dependencies.
Install globally (recommended)
Wire every harness on your machine once:
npx -y memroam install --globalFor each detected harness this writes a user-level stdio MCP registration and the memory ritual in its global rules file — Claude Code (~/.claude.json + ~/.claude/CLAUDE.md), Cursor (~/.cursor/mcp.json), Codex (~/.codex/config.toml + ~/.codex/AGENTS.md), DeepSeek Harness (~/.dsh/AGENTS.md + a stdio mount in every profile's cordis.patch.yml), OpenCode (~/.config/opencode/opencode.json + AGENTS.md), Gemini CLI (~/.gemini/settings.json + ~/.gemini/GEMINI.md), and Antigravity (~/.gemini/config/mcp_config.json + an always-on rule in ~/.gemini/config/rules/). After that, every session in every repository gets the vault with no per-repo setup: the harness spawns memroam stdio in the session's directory, and the server derives the project space from that directory automatically (the nearest .git, else the shallowest package manifest; no marker means the default space). The rule is the same for every harness: a MEMORY_SPACE env var on the server entry pins the space explicitly, else the client's MCP workspace roots name it (for harnesses that spawn MCP servers outside the session directory), else the directory decides. Detected spaces are recorded in ~/.memory-vault-connections.json so they stay stable.
npx -y memroam install --global --dry-run # preview changes
npx -y memroam install --global --store <dir> # choose the store (default ~/.memroam)
npx -y memroam uninstall --global # undo exactly what install wroteRestart your sessions after installing. Per-repo install (below) remains for team-shared, committed configs or a custom space name. Existing ~/.memory-vault stores from earlier releases are detected and kept — nothing moves without you.
Install into a repository
Run this from the repository you want to connect:
npx -y memroam installThis command:
Starts the local server if it is not already running.
Asks which harnesses to wire up, with the detected ones pre-selected (interactive terminals only — everywhere else the detected set is used as is).
Writes each chosen harness's MCP config and the shared rules files.
By default, install stores memory in ~/.memroam (an existing ~/.memory-vault is honored) and derives the project name from the current directory. connect is an alias for install.
npx -y memroam install --dry-run # preview changes
npx -y memroam install --project my-app # choose the project name
npx -y memroam install --harness claude,codex # skip the prompt, pick explicitly
npx -y memroam install --yes # skip the prompt, accept detectedRestart your agent session after installing and approve the vault MCP server if prompted.
Uninstall from a repository
npx -y memroam uninstallRemoves everything install wrote to the repository — the MCP entries, the rules sections, the dsh patch — deleting a file only when it held nothing else. Your memories are never touched, and the server keeps running for other projects. disconnect is an alias for uninstall.
Check the wiring
npx -y memroam statusShows whether the server is up and which store it serves, how the current repository is wired per harness, and every repository recorded by install (kept in ~/.memory-vault-connections.json). If the server is up and the repo is wired but your agent session has no vault tools, the remaining cause is session attachment — status prints how to fix it.
Import native memory, project to memoryless harnesses
npx -y memroam import # Claude Code auto-memory + Codex sqlite → candidates/
npx -y memroam project # regenerate the read-only shared/ block in dsh's AGENTS.mdimport copies each harness's native memory into the matching space's candidates/ directory — searchable and labeled [candidate], excluded from the index, never written into canonical memory automatically. The Codex reader is read-only and refuses unknown database schema versions. Both commands print a capability report of what they can and cannot move, and take --dry-run / --json.
Supported harnesses
Harness | Files configured |
Claude Code |
|
Cursor |
|
Codex |
|
DeepSeek Harness |
|
OpenCode |
|
Gemini CLI |
|
Antigravity |
|
For DSH, start a session with the generated patch:
dsh --patch ./dsh-cordis.patch.yml --profile headless "your task"Hosted tier
The hosted tier is the same server run for you: a remote MCP endpoint secured with OAuth 2.1, storing your memories as commits in a private GitHub repository you own. Connect it to Claude (claude.ai custom connector), ChatGPT (custom connector via the OpenAI search/fetch contract), Codex, or any remote-MCP client:
https://memroam.com/mcpEvery memory is a markdown file in your repo — clone it, grep it, take it anywhere. Losing access to the hosted tier never means losing your memory.
Run the server directly
MEMORY_DIR=~/.memroam npx memroamThe server listens on 127.0.0.1:8787 by default.
Environment variable | Default | Purpose |
|
| Directory containing the vault |
|
| Local HTTP port |
From a cloned repository, npm start runs the same server.
MCP endpoints
POST /mcp/<project> project memory plus shared memory
POST /mcp whole-vault accessFor example, a manual Claude Code connection is:
claude mcp add --transport http --scope project vault http://localhost:8787/mcp/my-projectMemory format
Store one durable fact per Markdown file:
---
name: preferred-language
description: The project's preferred implementation language
---
Use TypeScript for new application code.The server stamps an id: and regenerates the space's MEMORY.md index line from the description: automatically. It instructs agents to check for an existing memory before creating one, update facts instead of duplicating them, and remove memories that become incorrect.
Current scope
The current release is a Markdown store (local folder or hosted GitHub-backed), an MCP interface with keyword search, OAuth 2.1 on the hosted tier, a cross-harness setup command, and one-shot import/projection adapters. There is no automatic extraction, semantic search, or automated deduplication.
Package
npm:
memroam(formerlymemory-vault)MCP registry:
com.memroam/memroamLicense: MIT
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA local-first CLI and MCP server that helps you build and search a personal knowledge vault from Markdown notes, with semantic search and AI-powered features like stale note detection and session memory harvesting. It’s provider-agnostic, requires no GPU in its default mode, and exposes your vault as long-term memory to any MCP-compatible AI tool like Claude Code.45Apache 2.0
- AlicenseNot gradedqualityAmaintenanceLocal-first, file-based memory layer for AI agents — one shared Markdown vault across Claude, Codex, Gemini, Cursor and any MCP client. Provides read/write memory tools with an audit trail, per-agent trust levels, and Git sync; no cloud and no lock-in.2MIT
- FlicenseNot gradedqualityCmaintenancePortable AI memory vault — save memories, skills, and configs to a local database and share them across Claude Desktop, Claude Code, Cursor, Cline, and more.1
- AlicenseNot gradedqualityAmaintenanceA personal, offline-first memory for AI assistants that enables them to read, search, and write to a shared folder of Markdown files, so they all remember you without needing a cloud.MIT
Related MCP Connectors
One memory, every AI: Claude, ChatGPT, Perplexity, Gemini, Cursor, OpenClaw, Hermes, any MCP client.
Hosted memory for AI agents that learns from outcomes — one key across Claude, Cursor & ChatGPT.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/apurv101/memroam'
If you have feedback or need assistance with the MCP directory API, please join our Discord server