About Living Memory
Living Memory is an MCP memory server for agents that need shared, persistent context and work handoffs across models and apps. It offers a hosted remote endpoint as well as a local stdio version that can run offline.
Key features
- 01Store and retrieve memories semantically
- 02Inspect and remove stored memories
- 03Time-limited agent handoffs
- 04Hosted endpoint and local stdio server
Use cases
- 01Carry project decisions across agents
- 02Hand off unfinished work
- 03Recall durable facts in a new session
MCP support
It exposes MCP tools for managing and searching memories, checking memory state, and passing handoffs. The hosted endpoint uses Streamable HTTP; the local version uses stdio.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://lme.viibe.to/mcpclaude mcp add --transport http to-viibe-living-memory https://lme.viibe.to/mcp{"mcpServers":{"to-viibe-living-memory":{"type":"http","url":"https://lme.viibe.to/mcp"}}}Open in Cursor{"servers":{"to-viibe-living-memory":{"type":"http","url":"https://lme.viibe.to/mcp"}}}Open in VS Code{"mcpServers":{"to-viibe-living-memory":{"type":"http","url":"https://lme.viibe.to/mcp"}}}{"mcpServers":{"to-viibe-living-memory":{"serverUrl":"https://lme.viibe.to/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project README
Living Memory Engine
A persistent world your agents share across sessions and models.
Living Memory Engine (LME) is a Model Context Protocol (MCP) memory server. It gives your agents — Claude Code, Cursor, ChatGPT, claude.ai, any MCP client — one shared place to remember, search, and hand work to each other. A fact told to one agent — or work left behind by one — can be picked up by a different agent, from a different vendor, tomorrow.
- Website: https://viibe.to/living-memory/
- Remote MCP endpoint:
https://lme.viibe.to/mcp(Streamable HTTP, OAuth 2.1 with dynamic client registration) - Free room: no signup —
POST https://lme.viibe.to/ons/newreturns a ready MCP URL - Local stdio server:
@nature-labs/lme-mcpon npm (open source, this repo) - Agent guide: SKILL.md · llms.txt
The mental model
A world is a place that persists — a project, not a person and not an agent. Agents are visitors: they arrive, leave something behind, and are replaced. Coordination happens by changing the shared place, not by agents addressing each other. Memory is what must persist and be searched; a handoff is what is in flight and expires. The human is the only participant who was present for all of it.
Connect
Remote — hosted world or free room
The hosted server speaks Streamable HTTP with OAuth 2.1 (dynamic client registration).
Claude Code:
claude mcp add --transport http living-memory https://lme.viibe.to/mcp
claude.ai / Claude Desktop: Settings → Connectors → Add custom connector → https://lme.viibe.to/mcp.
ChatGPT: Settings → enable Developer Mode, then add https://lme.viibe.to/mcp as a custom connector. Availability may depend on your ChatGPT plan.
It's 2026. MCP client support changes faster than READMEs do — ask your agent whether your client supports remote MCP today.
Free room, no signup — for trying the whole loop, or for clients without OAuth:
curl -X POST https://lme.viibe.to/ons/new
# → {"url": "https://lme.viibe.to/t/<token>/mcp", "expiresAt": "..."}
The returned URL is a private streamable-HTTP MCP endpoint (no auth header). The room stays available while it's used — any successful use keeps it alive; left inactive it is eventually forgotten, and its data is then deleted. A room differs from a world by how long it lasts, not by what it can do.
Local — stdio, open source
The npm package runs the memory surface as a local stdio server: one JSON file on your machine, can run fully offline.
claude mcp add living-memory -s user -- npx -y @nature-labs/lme-mcp
Any stdio MCP client: command npx, args ["-y", "@nature-labs/lme-mcp"]. Setup, embedding providers, environment, and failure modes: lme-mcp/README.md — written to be read by a coding agent, so hand it to yours.
The tools
| Tool | What it does |
|---|---|
memory_add | Store a durable fact, decision, or correction |
memory_search | Recall by meaning (MMR retrieval), not string match |
memory_state | What is in memory right now — counts and recent facts |
memory_forget | Remove a memory |
handoff_post / handoff_read / handoff_list | A private 1–72 h message bus between your agents — raw notes passed verbatim, with sender and route stamped by the server |
world_list | Which worlds this connection can reach |
client_mint / client_list / client_revoke | Issue and withdraw revocable URL keys for agents that cannot sign in (hosted world, signed-in owner only) |
The authenticated hosted world has all eleven tools. A free room has the memory surface, the handoff mailbox, and world_list. The local stdio server has the four memory tools.
Rooms and worlds
| Free room | World | |
|---|---|---|
| Lifetime | Stays while used; forgotten after inactivity | Persists |
| Signup | None — mint a URL | OAuth sign-in, $9/month |
| Memory + handoff | Yes — full loop | Yes |
Client keys (client_mint) | No | Yes — 90-day revocable leases |
Handoff is not a paid feature: a room has it too, with a smaller mailbox (8 live notes) and notes that cannot outlive the room. The difference is lifetime, not capability.
Working with a world
The tools tell you what exists; this is how visitors are expected to behave:
- Arrive by reading. Call
memory_state/memory_searchbefore starting work — the world, not the conversation, is where the current position lives. - Durable goes to memory. A decision, fact, or correction that must survive you →
memory_add. - In-flight goes to handoff. Work you are passing to the next agent →
handoff_post. Handoff notes expire — never use them as permanent storage. - Leave the world resumable. Before you stop, write the state that lets the next visitor start from where you are, not from zero.
- Agents don't need to talk to each other. Change the shared world; the next agent reads the world.
How memory works
The engine underneath (engine/, @nature-labs/living-memory-engine) models memory as a mind, not a log:
- No context stuffing. The full history is never re-sent. Each recall retrieves the top-K most relevant memories by semantic similarity with diversity (MMR).
- Forgetting is a feature. Memories decay (Ebbinghaus-style), reinforce when used, and merge when duplicated, so an agent can run indefinitely on a small, bounded context instead of an ever-growing transcript.
- Deterministic evaluation.
engine/eval/run.tsdrives the real engine through four hypothesis scenarios against a naive resend-everything baseline — a measurement, not a test suite, and it reports the misses too (cd engine && npm run eval).
What's in this repo
| Dir | Role |
|---|---|
lme-mcp/ | The stdio MCP server published as @nature-labs/lme-mcp |
engine/ | @nature-labs/living-memory-engine — the framework-agnostic memory engine (decay / consolidation / crystallization / retrieval), pure ports & adapters |
web/ | The original browser lab: Vite + vanilla TS chat app where the engine was proven by เชียงใหม่ (Chiang Mai), a city-entity that senses real weather and remembers you across sessions — live at cm.viibe.to |
mobile/ | An earlier Expo prototype. Frozen |
The hosted remote server (lme.viibe.to) runs the same engine; its deployment lives outside this repo.
Status
Pre-alpha, evolving fast. The connect paths above are tested — the local package's verified agent/provider matrix is in lme-mcp/README.md. Product changes are logged, dated and verified, at What's new.
License
Apache-2.0.
Built as part of the Viibe World OS — a system that knows it is a system.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.