{
  "markdown": "<p align=\"center\">\n  <img src=\"docs/assets/lme-banner.jpg\" width=\"720\" alt=\"LME — Memory that follows your agents. Remember. Understand. Grow.\" />\n</p>\n\n# Living Memory Engine\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@nature-labs/lme-mcp\"><img src=\"https://img.shields.io/npm/v/%40nature-labs%2Flme-mcp?label=lme-mcp\" alt=\"npm: @nature-labs/lme-mcp\" /></a>\n  <a href=\"https://www.npmjs.com/package/@nature-labs/living-memory-engine\"><img src=\"https://img.shields.io/npm/v/%40nature-labs%2Fliving-memory-engine?label=engine\" alt=\"npm: @nature-labs/living-memory-engine\" /></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/github/license/v1b3x0r/living-memory-engine\" alt=\"License: Apache-2.0\" /></a>\n</p>\n\n> **A persistent world your agents share across sessions and models.**\n\nLiving 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.\n\n- **Website:** https://viibe.to/living-memory/\n- **Remote MCP endpoint:** `https://lme.viibe.to/mcp` (Streamable HTTP, OAuth 2.1 with dynamic client registration)\n- **Free room:** no signup — `POST https://lme.viibe.to/ons/new` returns a ready MCP URL\n- **Local stdio server:** [`@nature-labs/lme-mcp`](https://www.npmjs.com/package/@nature-labs/lme-mcp) on npm (open source, this repo)\n- **Agent guide:** [SKILL.md](https://viibe.to/living-memory/skills/living-memory/SKILL.md) · [llms.txt](https://viibe.to/llms.txt)\n\n## The mental model\n\nA **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.\n\n<p align=\"center\">\n  <img src=\"docs/assets/lme-mental-model.jpg\" width=\"720\" alt=\"A round stone table covered in glowing notes stands in moonlit water — the world. One hooded visitor is leaving through an archway on the left; another is arriving from the right; a human sits at the table, the only constant. Nothing passes between the visitors directly — everything they share passes through the table.\" />\n</p>\n\n## Connect\n\n### Remote — hosted world or free room\n\nThe hosted server speaks Streamable HTTP with OAuth 2.1 (dynamic client registration).\n\n**Claude Code:**\n\n```bash\nclaude mcp add --transport http living-memory https://lme.viibe.to/mcp\n```\n\n**claude.ai / Claude Desktop:** Settings → Connectors → Add custom connector → `https://lme.viibe.to/mcp`.\n\n**ChatGPT:** Settings → enable **Developer Mode**, then add `https://lme.viibe.to/mcp` as a custom connector. Availability may depend on your ChatGPT plan.\n\n> It's 2026. MCP client support changes faster than READMEs do — ask your agent whether your client supports remote MCP today.\n\n**Free room, no signup** — for trying the whole loop, or for clients without OAuth:\n\n```bash\ncurl -X POST https://lme.viibe.to/ons/new\n# → {\"url\": \"https://lme.viibe.to/t/<token>/mcp\", \"expiresAt\": \"...\"}\n```\n\nThe 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.\n\n### Local — stdio, open source\n\nThe npm package runs the memory surface as a local stdio server: one JSON file on your machine, can run fully offline.\n\n```bash\nclaude mcp add living-memory -s user -- npx -y @nature-labs/lme-mcp\n```\n\nAny stdio MCP client: command `npx`, args `[\"-y\", \"@nature-labs/lme-mcp\"]`. Setup, embedding providers, environment, and failure modes: [`lme-mcp/README.md`](lme-mcp/README.md) — written to be read by a coding agent, so hand it to yours.\n\n## The tools\n\n| Tool | What it does |\n|---|---|\n| `memory_add` | Store a durable fact, decision, or correction |\n| `memory_search` | Recall by meaning (MMR retrieval), not string match |\n| `memory_state` | What is in memory right now — counts and recent facts |\n| `memory_forget` | Remove a memory |\n| `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 |\n| `world_list` | Which worlds this connection can reach |\n| `client_mint` / `client_list` / `client_revoke` | Issue and withdraw revocable URL keys for agents that cannot sign in (hosted world, signed-in owner only) |\n\nThe 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.\n\n## Rooms and worlds\n\n| | Free room | World |\n|---|---|---|\n| Lifetime | Stays while used; forgotten after inactivity | Persists |\n| Signup | None — mint a URL | OAuth sign-in, [$9/month](https://viibe.to/living-memory/keep/) |\n| Memory + handoff | Yes — full loop | Yes |\n| Client keys (`client_mint`) | No | Yes — 90-day revocable leases |\n\nHandoff 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.\n\n## Working with a world\n\nThe tools tell you what exists; this is how visitors are expected to behave:\n\n- **Arrive by reading.** Call `memory_state` / `memory_search` before starting work — the world, not the conversation, is where the current position lives.\n- **Durable goes to memory.** A decision, fact, or correction that must survive you → `memory_add`.\n- **In-flight goes to handoff.** Work you are passing to the next agent → `handoff_post`. Handoff notes expire — never use them as permanent storage.\n- **Leave the world resumable.** Before you stop, write the state that lets the next visitor start from where you are, not from zero.\n- **Agents don't need to talk to each other.** Change the shared world; the next agent reads the world.\n\n## How memory works\n\nThe engine underneath ([`engine/`](engine/), [`@nature-labs/living-memory-engine`](https://www.npmjs.com/package/@nature-labs/living-memory-engine)) models memory as a mind, not a log:\n\n- **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).\n- **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.\n- **Deterministic evaluation.** `engine/eval/run.ts` drives 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`).\n\n## What's in this repo\n\n| Dir | Role |\n|---|---|\n| [`lme-mcp/`](lme-mcp/) | The stdio MCP server published as `@nature-labs/lme-mcp` |\n| [`engine/`](engine/) | `@nature-labs/living-memory-engine` — the framework-agnostic memory engine (decay / consolidation / crystallization / retrieval), pure ports & adapters |\n| [`web/`](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](https://cm.viibe.to) |\n| [`mobile/`](mobile/) | An earlier Expo prototype. Frozen |\n\nThe hosted remote server (`lme.viibe.to`) runs the same engine; its deployment lives outside this repo.\n\n## Status\n\nPre-alpha, evolving fast. The connect paths above are tested — the local package's verified agent/provider matrix is in [`lme-mcp/README.md`](lme-mcp/README.md). Product changes are logged, dated and verified, at [What's new](https://viibe.to/living-memory/whats-new/).\n\n## License\n\nApache-2.0.\n\n---\n\nBuilt as part of the Viibe World OS — a system that knows it is a system.\n",
  "bytes": 8225,
  "sha": "2b44493818a484315450bc5d5e714d5fa980d72594c9380fc573941ba91698e5",
  "repo_slug": "v1b3x0r/living-memory-engine",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_to_viibe_living_memory_1d145495/readme"
}