Skip to main content
Glama

Living Memory Engine

여러분의 에이전트들이 세션과 모델을 넘나들며 공유하는 영구적인 세계.

Living Memory Engine (LME)은 Model Context Protocol(MCP) 메모리 서버입니다. Claude Code, Cursor, ChatGPT, claude.ai 등 모든 MCP 클라이언트인 여러분의 에이전트에게 기억하고, 검색하고, 서로 작업을 넘겨줄 수 있는 하나의 공유 장소를 제공합니다. 한 에이전트에게 알려준 사실 — 또는 한 에이전트가 남긴 작업 — 은 다음 날, 다른 공급자의 다른 에이전트가 이어받을 수 있습니다.

  • 웹사이트: https://viibe.to/living-memory/

  • 원격 MCP 엔드포인트: https://lme.viibe.to/mcp (Streamable HTTP, 동적 클라이언트 등록을 지원하는 OAuth 2.1)

  • 무료 24시간 룸: 가입 불필요 — POST https://lme.viibe.to/ons/new가 준비된 MCP URL을 반환합니다

  • 로컬 stdio 서버: npm의 @nature-labs/lme-mcp (오픈소스, 이 저장소)

  • 에이전트 가이드: SKILL.md · llms.txt

개념 모델

**월드(world)**는 지속되는 장소입니다. 프로젝트지, 사람이나 에이전트가 아닙니다. 에이전트는 방문자입니다. 도착하고, 무언가를 남기고, 교체됩니다. 조율은 에이전트들이 서로에게 직접 이야기하는 방식이 아니라 공유된 장소를 바꾸는 방식으로 이루어집니다. 메모리는 지속되어야 하고 검색되어야 하는 것이며, 핸드오프는 이동 중에 있고 만료되는 것입니다. 인간은 그 모든 과정에 처음부터 함께해 온 유일한 참여자입니다.

Related MCP server: mnemory

연결

원격 — 호스팅 월드 또는 무료 룸

호스팅 서버는 OAuth 2.1(동적 클라이언트 등록)을 갖춘 Streamable HTTP를 사용합니다.

Claude Code:

claude mcp add --transport http living-memory https://lme.viibe.to/mcp

claude.ai / Claude Desktop: 설정 → 커넥터 → 사용자 지정 커넥터 추가 → https://lme.viibe.to/mcp.

ChatGPT: 설정에서 개발자 모드를 활성화한 다음, https://lme.viibe.to/mcp를 사용자 지정 커넥터로 추가하세요. 사용 가능 여부는 ChatGPT 플랜에 따라 다를 수 있습니다.

2026년입니다. MCP 클라이언트 지원은 README보다 빠르게 변합니다. 지금 사용하는 클라이언트가 원격 MCP를 지원하는지 에이전트에게 물어보세요.

무료 24시간 룸 — 가입 불필요 — 전체 흐름을 시험해 보거나, OAuth 없는 클라이언트를 위한 방식입니다.

curl -X POST https://lme.viibe.to/ons/new
# → {"url": "https://lme.viibe.to/t/<token>/mcp", "expiresAt": "..."}

반환된 URL은 인증 헤더가 없는 프라이빗 streamable-HTTP MCP 엔드포인트입니다. 발급 후 24시간이 지나면 만료되고 데이터도 삭제됩니다. 룸과 월드의 차이는 할 수 있는 일이 아니라 지속 기간의 차이입니다.

로컬 — stdio, 오픈소스

npm 패키지는 메모리 서피스를 로컬 stdio 서버로 실행합니다. 여러분의 컴퓨터에 있는 JSON 파일 하나로 완전히 오프라인에서도 실행할 수 있습니다.

claude mcp add living-memory -s user -- npx -y @nature-labs/lme-mcp

모든 stdio MCP 클라이언트: 명령어 npx, 인자 ["-y", "@nature-labs/lme-mcp"]. 설정, 임베딩 제공자, 환경, 실패 모드: lme-mcp/README.md — 코딩 에이전트가 읽도록 작성된 문서이므로 에이전트에게 넘겨주세요.

도구

도구

하는 일

memory_add

지속 가능한 사실, 결정, 또는 수정 사항을 저장합니다

memory_search

문자열 매칭이 아니라 의미 기반 회상(MMR 검색)을 수행합니다

memory_state

지금 메모리에 있는 것 — 개수와 최근 사실

memory_forget

메모리를 제거합니다

handoff_post / handoff_read / handoff_list

에이전트 간 비공개 1–72시간 메시지 버스. 원문 그대로 전달되는 노트이며, 발신자와 경로는 서버가 표시합니다

world_list

이 연결이 도달할 수 있는 월드의 목록

client_mint / client_list / client_revoke

로그인할 수 없는 에이전트를 위한 철회 가능한 URL 키를 발급하고 회수합니다(호스팅 월드, 로그인한 소유자만)

인증된 호스팅 월드에는 열한 가지 도구가 모두 있습니다. 무료 룸에는 메모리 서피스, 핸드오프 사서함, world_list가 있습니다. 로컬 stdio 서버에는 네 가지 메모리 도구가 있습니다.

룸과 월드

무료 룸

월드

수명

24시간, 이후 삭제

지속

가입

불필요 — URL을 발급하면 됩니다

OAuth 로그인, $9/월

메모리 + 핸드오프

가능 — 전체 루프

가능

클라이언트 키 (client_mint)

불가

가능 — 90일 철회 가능 임대

핸드오프는 유료 기능이 아닙니다. 룸에도 있으며, 사서함이 더 작습니다(게시 중인 메모 8개) — 메모가 룸보다 오래 살아남을 수 없습니다. 차이는 기능이 아니라 지속 시간입니다.

월드를 다루는 방법

도구들은 무엇이 존재하는지 알려줍니다. 방문자가 기대하는 행동들은 다음과 같습니다.

  • 읽기로 도착합니다. 작업을 시작하기 전에 memory_state / memory_search를 호출하세요. 현재 위치가 있는 곳은 대화가 아니라 월드입니다.

  • 영구적인 것은 메모리로. 여러분을 먼저 넘어서 살아남아야 하는 결정이나 사실, 수정 → memory_add.

  • 진행 중인 것은 핸드오프로. 다음 에이전트에게 넘길 작업 → handoff_post. 핸드오프 메모리는 만료됩니다 — 영구 저장 용도로 쓰지 마세요.

  • 월드를 재개 가능하게 남겨두세요. 멈추기 전에, 다음 방문자가 0이 아니라 여러분이 멈춘 지점에서 시작할 수 있는 상태를 적어 두세요.

  • 에이전트끼리 대화할 필요가 없습니다. 공유 월드를 바꾸세요. 다음 에이전트는 월드를 읽습니다.

메모리가 작동하는 방식

그 아래에 있는 엔진은 (engine/, @nature-labs/living-memory-engine) 메모리를 기록(log)이 아니라 마음(mind)으로 모델링합니다.

  • 컨텍스트를 전부 집어넣지 않습니다. 전체 갱신은 다시 갱신되지 않습니다. 매번 검색에서 다양성(MMR)을 고려한 의미 유사도로 가장 관련성이 높은 상위 K개의 메모리를 되찾아옵니다.

  • 잊음은 하나의 기능입니다. 메모리는 감쇠하고(에빙하우스 방식),사용하면 강화되고, 중복되면 병합됩니다. 그래서 에이전트는 계속 늘어나는 대화transcript대신 작고 경계 있는 컨텍스트로 무기한 실행될 수 있습니다.

  • 결절론적 평가. engine/eval/run.ts는 실제 엔진을 가설 시나리오로 돌리며, 그냥 전부 다시 보내는 모델을 기준값(베이스 라인)과 비교합니다. 테스트 스위트가 아니라 측정치이며, 실패한 일도 보고합니다(cd engine && npm run eval).

이 저장소의 구성

디렉터리

역할

lme-mcp/

@nature-labs/lme-mcp로 발행된 stdio MCP 서버

engine/

@nature-labs/living-memory-engine — 특징 프레임워크에 매여 있지 않은 메모리 엔진(감쇠 / 통합 / 결정화 / 검색), 순수 포트 및 어댑터

web/

원래 브라우저 실험실: Vite + vanilla TS 채팅 앱으로, 실제 날씨를 감지하고 세션을 가로질러 여러 대를 기억하는 시티-엔티티인 เชียงใหม่ (Chiang Mai)를 활용해 엔진을 실제로 시연했습니다 — cm.viibe.to

mobile/

초기 Expo 프로토타입. 동결됨

호스팅 원격 서버(lme.viibe.to)는 동일한 엔진을 실행하며, 그 배포가 이 저장소에는 포함되지 않습니다.

상태

Pre-alpha 단계이며 빠르게 변화합니다. 위쪽의 연결 경로는 테스트를 거쳤습니다 — 로컬 패키지에서 검증된 에이전트/제공자 배열은 lme-mcp/README.md에 있습니다. 제품 변경 사항은 날짜와 검증 결과와 함께 What's new에 기록됩니다.

라이선스

Apache-2.0.


Viibe World OS의 일부로 만들어졌습니다 — 자기 자신이 시스템임을 아는 시스템.

Available Tools

4 tools
memory_addRemember a factAInspect

Store a durable fact, preference, decision, or correction so FUTURE sessions remember it. Call this whenever the user states something worth carrying forward — a preference, a project fact, a decision, a correction — without being asked. Memory persists across sessions and processes.

NameRequiredDescriptionDefault
tagsNooptional tags
contentYesThe fact to remember, as a short natural-language statement
importanceNo0–10, default 7

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral disclosure burden. It does disclose the most important behavior: memory persists across sessions and processes. But it does not explain what happens if the same fact is added multiple times, whether overwrites/corrections replace existing memory, or what the tool returns or fails on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively tight and front-loaded with the core action. The list of example memory types is somewhat redundant with the phrase 'worth carrying forward,' but each sentence still contributes to deciding when and what to invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple write/mutation tool with three parameters and no output schema, the description gives sufficient operational context: what to store, when to call, and the persistence guarantee. It lacks minor detail about edge cases or return behavior, but is likely adequate for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines content, tags, and importance. The description adds mild guidance about what kind of content should be stored (preferences, corrections, decisions), but it does not add meaningful semantic detail beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Store a durable fact, preference, decision, or correction') and its outcome ('FUTURE sessions remember it'). It is distinguishably an add/write operation compared to siblings like memory_search and memory_forget, though it never names these siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear triggering context: 'Call this whenever the user states something worth carrying forward' and lists examples like preferences, facts, and corrections. However, it does not state when not to use the tool or explicitly point to alternative tools like memory_search or memory_forget.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_forgetForget a memoryAInspect

DESTRUCTIVE. Deletes EVERY memory whose content contains the query as a case-insensitive substring — not semantic, not a single-item delete, and there is no undo. A short query deletes broadly. Use only when the user corrects a stored fact or explicitly asks you to forget something, and prefer a long distinctive phrase; check memory_state first if unsure.

NameRequiredDescriptionDefault
queryYesText to match against memories to delete

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description fully carries the behavioral transparency burden. It clearly discloses the destructive, irreversible nature of the operation, the case-insensitive substring matching behavior, and the broad-scope risk of short queries. This level of warning is critical for a destructive delete tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and dense, front-loading the critical warning 'DESTRUCTIVE' before any other detail. Every sentence adds operational value, including when to use the tool, how to phrase the query, and what to check beforehand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's destructive nature, the low parameter count, and the absence of an output schema, the description covers all essential aspects: action, matching semantics, irreversibility, risk, usage conditions, and a pre-check alternative. An agent is sufficiently prepared to avoid dangerous misuse.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the query parameter completely (100% coverage), but the description adds important semantic detail: the query is matched as a case-insensitive substring against memory content, not as a semantic match or single-item identifier. This extra context meaningfully improves the agent's understanding of the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: deletes every memory whose content contains a case-insensitive substring, and explicitly distinguishes this from semantic or single-item delete. This differentiates the tool from siblings like memory_search and memory_add without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: only after user correction of a stored fact or explicit request to forget. It also warns of broad deletion risk, recommends using a long distinctive phrase, and suggests checking memory_state first when uncertain, giving the agent concrete decision-making guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_stateMemory statusAInspect

Summarize what is currently in memory: counts plus the most recently stored facts. Reads the store directly — no embedding call, no network. Use to orient yourself at session start, or when the user asks what you remember. (selfFacets is always 0: this server does not run the engine's consolidation pass, so crystallization never happens.)

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden, and it does well: it discloses that the tool reads the store directly, requires no network or embedding, and notes the selfFacets-is-always-0 quirk with its root cause (no consolidation pass). This adds meaningful behavioral information an agent would not infer from the name or empty schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is this concise and well-structured: the main sentence states the function, the second sentence adds differentiating behavior (no embedding/network), the third gives usage guidance, and the parenthetical discloses a critical invariant. No word is wasted, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, zero-parameter tool with no output schema, the description is fully sufficient: it explains what the tool returns, when to call it, what side effects it does not have, and the only significant edge case. The agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool accepts zero parameters, so the description does not need to explain parameter behavior. It instead clarifies what the output contains (counts and recent facts), which is the appropriate compensating information. The baseline of 4 for zero-parameter tools applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Summarize') and a precise resource ('what is currently in memory'), with output detail ('counts plus the most recently stored facts'). It also distinguishes itself from search-like siblings by noting it reads the store directly without embedding calls or network access, so an agent can tell this from memory_search at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage context: 'Use to orient yourself at session start, or when the user asks what you remember.' This is clear and actionable. However, it does not explicitly state when to prefer a sibling alternative such as memory_search for a specific fact lookup, so it stops one step short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.1
    • First observedmemory_add
    • First observedmemory_forget
    • First observedmemory_search
    • First observedmemory_state

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: add, search, summarize, and delete. There is no meaningful overlap between retrieval (search) and store-state inspection (state), and forget is explicitly destructive and separate.

Naming Consistency4/5

All tools share a consistent memory_ prefix and lowercase style. memory_state is a noun where the others use action verbs, which is a minor deviation but does not create confusion.

Tool Count5/5

Four tools is a well-scoped, focused set for a memory engine. Each tool covers a core need without unnecessary surface area or duplication.

Completeness4/5

The toolset covers the essential lifecycle: store, retrieve, inspect state, and delete. A precise single-item delete or explicit memory update would round it out, but the destructive substring delete plus memory_add makes common workflows workable.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server providing managed persistent memory for AI agents. Read and write structured state across sessions, tools, and restarts at 1000+ requests per second, with no infrastructure to self-host or operate.
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Self-hosted MCP server giving AI agents persistent memory for personalization and context across conversations.
    143 PyPI
    281
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP server providing persistent memory for AI agents, enabling them to read, write, and query memories across sessions.
    9
    3 npm
    MIT