claude-memory-layerBLOCK
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Claude Code, Codex, Hermes, MCP 클라이언트가 함께 쓰는 프로젝트 스코프 메모리 레이어입니다. 대화/세션 기록을 SQLite 이벤트 저장소와 LanceDB 벡터 인덱스로 관리하고, 작업 시작 시 필요한 기억·타임라인·액션 프런티어를 privacy-safe 컨텍스트로 제공합니다.
개요
Claude Memory Layer는 AI 에이전트의 대화와 작업 이벤트를 프로젝트별로 저장하고, 새로운 작업을 시작할 때 관련 기억을 자동 검색해 컨텍스트로 제공합니다. 최신 npm 패키지는 단순 Claude Code hook을 넘어 다음 용도로 사용할 수 있습니다:
- 연속성 있는 대화: 이전 세션에서 논의한 결정, 오류, 검증 결과를 검색
- 프로젝트 맥락 이해: 프로젝트별 isolated store와
projectPath기반 MCP/CLI 조회 - 다중 에이전트 호환: Claude Code hooks + Codex/Hermes session import + MCP stdio server
- 운영형 메모리: actions/frontier/checkpoints/facets/lessons/retention audit로 다음 작업을 이어받기
- Perspective Memory: 사용자/어시스턴트/서브에이전트 관점의 actor card와 observation 관리
- 신뢰 가능한 벡터 동기화: Vector Outbox V2, worker lock, dashboard/vector-status health로 누락 복구
최신 릴리스 하이라이트
- MCP Context Navigator:
mem-context-pack,mem-project-timeline,mem-source-ref,mem-import-latest로 Hermes/Codex/Claude Desktop이 같은 프로젝트 기억을 안전하게 조회합니다. - Memory Operations Layer: facet/action/frontier/checkpoint/retention/graph/lesson 도구와 CLI가 추가되어 “무엇을 다음에 해야 하는가”를 메모리에서 바로 복원합니다.
- Honcho-inspired Perspective Memory: actor/session membership, actor cards, perspective observations, contradiction/derived observation, perspective context/query 도구를 제공합니다.
- Vector Outbox V2: SQLite source write와 vector enqueue를 같은 트랜잭션으로 묶고, versioned LanceDB upsert와 stuck-job recovery를 지원합니다.
- Dashboard 운영성 강화: local-only 기본 bind, 선택적 password gate, Vector Health 카드, Perspective Memory aggregate 카드, retrieval trace/score breakdown과 aggregate-only strategy/context-pack telemetry를 제공합니다.
- Codex/Hermes history ingest: 원본 세션은 read-only validate/replay로 먼저 확인하고, 명시적 import로만 프로젝트 메모리에 반영합니다.
- Hermes/CML/Headroom 운영 모델: Hermes built-in memory,
session_search, CML context-pack, read-only Hermes provider, Headroom reference stance는docs/HERMES_CML_HEADROOM_OPERATING_MODEL.md에 정리되어 있습니다. - **n
5d9fc3e13673OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add claude-memory-layer --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env DART_API_KEY=${DART_API_KEY} --env FINNHUB_API_KEY=${FINNHUB_API_KEY} --env FRED_API_KEY=${FRED_API_KEY} -- npx -y [email protected]{
"mcpServers": {
"claude-memory-layer": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"DART_API_KEY": "${DART_API_KEY}",
"FINNHUB_API_KEY": "${FINNHUB_API_KEY}",
"FRED_API_KEY": "${FRED_API_KEY}"
}
}
}
}Exposed tools (48)
31 read · 15 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
external-market-context | read | Read-only external market/company context from DART, FRED, and Finnhub with structured MarketContextSnapshot bull/bear/risk/catalyst analysis. |
golden-memory-usefulness-v1 | read | privacy-safe fixture |
longmemeval-turn-retrieval-smoke-hybrid-source | read | Turn-level LongMemEval fixture used internally for hybrid session retrieval. |
mem-action-list | read | List project-scoped memory actions with compact status/frontier metadata and no raw transcript disclosure. |
mem-action-update | write | Update a project-scoped memory action status through an audited, state-changing operation. |
mem-actor-card-get | read | Read the compact actor card for one observer -> observed perspective without raw transcript disclosure. |
mem-actor-card-upsert | write | Create or replace a compact actor card through an audited state-changing perspective operation. |
mem-actor-list | read | List project-scoped or global memory actors with compact privacy-safe identity metadata. |
mem-asset-bind | write | Create, update, or disable an actor-to-asset injection binding after a bind permission check. |
mem-asset-catalog-sync | write | Preview or apply idempotent registration of canonical project lessons and core-memory blocks as private memory assets. Preview is the default and never changes canonical content. |
mem-asset-check | read | Explain whether the requester has a specific memory asset permission and which policy rule decided it. |
mem-asset-create | write | Register a project-scoped memory asset. The requester becomes its owner; content stays in the referenced canonical subsystem. |
mem-asset-get | read | Get one memory asset only when the requester has read access; unauthorized and missing assets return the same not-found shape. |
mem-asset-grant-set | write | Replace one actor\ |
mem-asset-list | read | List only memory assets readable by the requester; inaccessible private assets are omitted. |
mem-asset-update | write | Update memory asset metadata after an owner or explicit write-grant check. Supports optimistic version checks. |
mem-checkpoint-create | write | Create an audited project-scoped checkpoint for a resumable operation target without exposing raw local paths or transcript content. |
mem-checkpoint-list | read | List project-scoped checkpoints with bounded metadata for safe task resumption. |
mem-context-pack | read | Build a compact, agent-ready project context pack from relevant memories plus recent project timeline. Use at the start of Hermes/Codex work to recover the important project state without reading raw transcripts. |
mem-core-block-get | read | Read this project\ |
mem-core-block-update | write | Replace one core memory block through an audited write. Registered blocks require write access when server enforcement is enabled. |
mem-details | read | Get full content of specific memories. Use after mem-search to get complete information. Conditional mutation: each successfully resolved reference records privacy-safe navigation telemetry. |
mem-entity-supersede | read | Mark one entity (task/condition/artifact/source_file) as superseded by another through an audited fact-reconciliation write. The old entity stops being traversed/surfaced by graph-based retrieval (mem-graph-query and related retrieval lanes); it is not deleted, just excluded from |
mem-facet-query | read | Query project-scoped memory facets and return compact privacy-safe facet rows for filtering or inspection. |
mem-facet-tag | write | Attach or update a project-scoped facet tag on a memory operations target with governance audit metadata. |
mem-frontier | read | Return the project-scoped execution frontier: next actions, blocked work, checkpoints, and safe resume hints. |
mem-graph-query | write | Run bounded project-scoped graph expansion/query diagnostics over active entities and edges with sanitized explanations. |
mem-import-latest | write | Explicitly import the latest local Claude Code, Codex, and/or Hermes session history into project-scoped memory before retrieving context. This mutates memory; use for freshness jobs before mem-context-pack. |
mem-lesson-candidates | read | Detect not-yet-saved reusable workflow patterns (rule-based, from repeated successful tool sequences across sessions) so they can be reviewed and promoted with mem-lesson-save. Read-only — does not write a lesson. |
mem-lesson-get | read | Fetch one curated project lesson by lessonId or project-unique name — the body behind an entry in the session-start lesson index. Registered assets are permission-filtered when server enforcement is enabled. |
mem-lesson-list | read | List project-scoped procedural lessons as compact skill/runbook candidates. Registered assets are permission-filtered when server enforcement is enabled. |
mem-lesson-save | write | Save a reviewed project-scoped lesson or rule as a curated memory. Updates to registered lessons require write access when server enforcement is enabled. |
mem-perspective-context | read | Build a compact actor-card plus perspective-observation context bundle for one observer -> target actor pair. |
mem-perspective-observation-create | write | Create an audited observer -> observed perspective observation with bounded evidence references. |
mem-perspective-observation-delete | destructive | Soft-delete an audited perspective observation by id; hard deletion is not exposed. |
mem-perspective-query | read | Query observer -> observed perspective observations as a separate retrieval lane with source-reference hints. |
mem-project-timeline | read | Summarize recent project memory by session, source agent, event counts, and safe previews. Useful for understanding what happened recently before continuing work. |
mem-retention-audit | write | Run a dry-run retention governance audit for project-scoped memories and return policy explanations without hard deletion. |
mem-search | read | Search claude-memory-layer for relevant past conversations and insights. Returns a compact index of results - use mem-details to get full content. |
mem-shared-actor-link | read | Explicitly link this project-local actor to a shared principal before using actor-scoped cross-project troubleshooting search. This is a global shared-store mutation; it does not grant canonical memory-asset permissions. |
mem-shared-actor-status | read | Inspect whether this project-local actor has an explicit shared principal link. No shared troubleshooting content is returned. |
mem-shared-actor-unlink | destructive | Remove this project-local actor\ |
mem-shared-asset-get | read | Read one active canonical lesson or core-memory block from another project only after both named actors are explicitly linked to the same shared principal. The source asset must be registered, active, visibility=shared, and readable under the source project policy. This never auto-injects content. |
mem-shared-search | read | Search verified shared troubleshooting entries only from projects explicitly linked to requesterActorId through the same shared principal. An unlinked actor receives an empty result. |
mem-stats | read | Read-only: get statistics about an existing memory store without creating or migrating it. |
mem-timeline | read | Get chronological context around specific memories. Useful for understanding the conversation flow. |
private-real-session-qrels | read | contains raw real session text that reports must not leak |
retrieval-review-golden-promotion-candidates | read | Privacy-safe candidate plan for manually promoting bad retrieval review queue items into the golden replay fixture. |
Trust audit
BLOCKgrade F · trust 48/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (11 observation(s))
- Network
- declared (7 observation(s))
- Shell
- declared (7 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
const dynamicImport = new Function('specifier', 'return import(specifier)') as (specifier: string) => Promise<unknown>;const dynamicImport = new Function('specifier', 'return import(specifier)') as (specifier: string) => Promise<unknown>;exec(command, (error) => {const dynamicImport = new Function('specifier', 'return import(specifier)') as (.DS_Store
console.log(`🔐 Password: ${password ? 'enabled' : 'disabled'}`);const baseUrl = `http://127.0.0.1:${port}`;const response = await fetch(`http://127.0.0.1:${port}/health`);['anthropic', 'sk-ant-ABCDEFGHIJKLMNOPQRSTUVWXYZ01'],
['aws access key id', 'AKIAABCDEFGHIJKLMNOP']
const TOKEN = 'stg_secret0123456789abcdefghijklmnop';
const TOKEN = 'stg_auditsecret0123456789abcdefghij';
const source = 'const apiKey = "sk_live_abcdef123456"';
const TOKEN = 'stg_0123456789abcdefghijklmnopqrstuv';
secret: 'sensitive-fixture-value'
['github oauth', 'gho_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'],
['github fine-grained pat', 'github_pat_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnop'],
['slack', 'xoxb-ABCDEFGHIJKLMNOPQRSTUV'],
selectedEventIds: ['xoxb-fake-selected', 'xoxc-fake-selected'],
mem-perspective-observation-delete, mem-shared-actor-unlink
.DS_Store
.DS_Store
.DS_Store
const hashSuffix = createHash('md5').update(key).digest('hex').slice(0, 8);Gates applied: no_behavioural_pass, no_license.
5d9fc3e13673full audit observations/trust-audit/mcp-server/buzzni__claude-memory-layer.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 5d9fc3e13673 | BLOCK | F | 48 | first audit |
Questions
What tools does claude-memory-layer expose?
48 in total: 31 read-only, 15 that write, and 2 that can delete or overwrite (mem-perspective-observation-delete, mem-shared-actor-unlink). Every one is listed on this page with its risk.
Is claude-memory-layer safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (48/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does claude-memory-layer need?
It reads ANTHROPIC_API_KEY, DART_API_KEY, FINNHUB_API_KEY, FRED_API_KEY, LONGMEMEVAL_READER_API_KEY, SECRET_SHOULD_NOT_LEAK and TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does claude-memory-layer run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as claude-memory-layer at 2.4.11.
How current is this page?
The grade is for one exact copy of the source (5d9fc3e13673), read on 2026-10-12. The repository is watched and re-audited when it changes.