<div align="center">
<img src="https://raw.githubusercontent.com/ayvazyan10/engram/master/apps/web/public/logo.svg" alt="Engram Logo" width="80" height="80">
Engram
범용 AI 브레인 — 모든 AI 모델을 위한 영구 메모리 및 인지 계층
CI
npm @engram-ai-memory/core
npm @engram-ai-memory/mcp
Smithery
License: MIT
Node.js 22+
pnpm 9+
빠른 시작 (Quick Start) · 기능 (Features) · CLI · 문서 (Docs) · 실시간 데모 (Live Demo) · 통합 (Integrations) · 기여하기 (Contributing)
</div>
Engram이란 무엇인가?
Engram은 모든 AI 모델에 세션, 시스템 및 재시작을 거쳐 지속되는 인간과 같은 메모리를 제공합니다. 한 번 연결하면 Claude Code, Ollama 또는 모든 사용자 지정 통합 등 사용하는 모든 AI가 단일하고 성장하는 브레인을 공유하게 됩니다.
대부분의 AI 도구는 세션이 끝나는 순간 모든 것을 잊어버립니다. Engram은 범용 메모리 백엔드 역할을 하여 이를 해결합니다: AI가 학습한 내용을 저장하고, 적절한 시점에 올바른 기억을 검색하여 자동으로 컨텍스트로 제시합니다.
┌─ 사용자가 Claude Code에게 자신의 스택에 대해 알려줌 ──→ 의미적 메모리(semantic memory)로 저장됨
└─ 다음 날, 다른 도구, 새로운 세션 ──→ Engram이 이를 자동으로 상기시킴
기능 (Features)
| 기능 | 설명 |
|---|
| 3가지 메모리 유형 | 일화적(Episodic) (사건), 의미적(Semantic) (사실 + 지식 그래프), 절차적(Procedural) (트리거→액션 패턴) |
| ... | |
| 태그 지정 및 컬렉션 | 태그 클라우드, 태그별 필터링, 접두사 기반 컬렉션 (예: project:alpha) |
| 플러그인 시스템 | 7가지 라이프사이클 후크 (onStore, onRecall, onForget, onDecay, onReflect, onStartup, onShutdown) |
| 중요도 감쇠 (Importance Decay) | 출처 인식 기본 중요도, 미사용 메모리에 대한 일일 감쇠, AI 클라이언트를 위한 보호 규칙 |
| ... | |
작동 방식
Engram에 연결된 AI가 쿼리를 받을 때마다 다음 과정을 거칩니다:
- 임베딩(Embeds): 쿼리를 384차원 의미 벡터로 변환합니다 (로컬에서 — API 호출 없음, 비용 없음)
- 검색(Searches): 벡터 인덱스에서 유사한 과거 기억을 검색합니다
- 확장(Expands): 지식 그래프를 통해 관련 개념을 검색하여 확장합니다
- 점수화(Scores): 의미적 유사성 + 최근성 + 중요도 + 접근 빈도를 기준으로 후보군에 점수를 매깁니다
- 검토(Checks): 기존 기억과의 모순 여부를 확인합니다
- 주입(Injects): 취합된 컨텍스트를 AI의 프롬프트에 주입합니다
AI는 자신이 배운 모든 것을 인지한 상태로 응답합니다. 교환이 끝난 후, 이 응답은 새로운 기억으로 저장되어 — 뇌가 지속적으로 성장합니다.
메모리 모델
| 유형 | 저장하는 내용 | 예시 |
|---|
| 일화적(Episodic) | 사건, 대화, 타임스탬프가 찍힌 상호작용 | "사용자가 2026-03-15 배포에 대해 문의함" |
| ... | | |
통합 (Integrations)
Claude Code ──MCP──────────→ ┐
Claude Desktop ──extension────→ │ Engram → SQLite
Ollama ──proxy────────→ │ REST :4901
...
| 통합 | 방식 | 방법 |
|---|
| Claude Code | MCP (24개 네이티브 도구) | store_memory, recall_context, request_reflection, … |
| ... | | |
빠른 시작 (Quick start)
원클릭 설치
Claude Code의 경우, 권장 플러그인을 선택하거나 MCP 및 훅(hooks)을 위해 engram setup을 사용하며, 둘 다 동시에 사용하지 마십시오.
npx -y @engram-ai-memory/cli setup --npx
...
첫 번째 명령어만으로 MCP 클라이언트가 필요한 모든 것이 준비됩니다. 서버를 실행한 후, 대시보드는 http://localhost:4901에서, Swagger UI는 /docs에서 열 수 있습니다.
CLI 명령어
engram setup
engram setup --npx
engram setup --source cursor
...
engram setup --source <client> 명령어는 저장된 메모리에 찍힌 식별자(identifier)와 작성되는 설정 파일(config file)을 모두 가져옵니다: claude-code → ~/.claude.json, cursor → ~/.cursor/mcp.json, windsurf → ~/.codeium/windsurf/mcp_config.json. 다른 값은 기본값(default)을 포함하여 아무것도 등록하지 않고, 사용자가 직접 붙여넣을 수 있도록 JSON 블록만 출력합니다. 이 명령어는 절대 ~/.mcp.json 파일을 작성하지 않으며, 어떤 MCP 클라이언트도 해당 경로를 읽지 않습니다.
engram stop, engram doctor, 그리고 engram update는 종료 코드(exit code)를 통해 실패를 보고하므로 스크립트에서 사용할 수 있습니다: stop은 프로세스가 종료될 때까지 최대 10초 동안 기다린 후, 여전히 실행 중일 수 있는 경우 1을 반환합니다 (그리고 포트를 소유하지 않은 PID에 신호를 보내는 것을 거부합니다); doctor는 모든 검사(check) 중 하나가 실패하면 1을 반환합니다; update는 저장소(repository)가 이동했지만 빌드, 전역 CLI 새로고침 또는 재시작이 완료되지 않은 경우 1을 반환합니다. update는 git 상태뿐만 아니라 빌드 스탬프(build stamp)에도 의존하므로, 업그레이드 후 처음 실행할 때는 오래된 dist/를 기반으로
Engram은 모델 자체를 호출하지 않습니다. 리플렉션(reflection) 주기가 돌아올 때, MCP를 통해 연결된 AI가 request_reflection → store_reflection을 통해 추론을 수행합니다. 설정해야 할 프로바이더, 모델 또는 API 키는 없습니다.
ENGRAM_DB_PATH를 데이터베이스 파일이 위치할 곳으로 지정하세요.
MCP 설정 (Claude Code, Cursor, Windsurf, Cline)
Engram을 모든 MCP 호환 AI 클라이언트에 네이티브 도구로 추가하세요. API 호출이나 래퍼(wrapper)가 필요 없습니다.
클라이언트가 읽는 파일에 다음 설정을 추가하세요:
| 클라이언트 | 설정 파일 |
|---|
| Claude Code (사용자 범위) | ~/.claude.json |
| ... | |
engram setup --source <client>을 실행하면 적절한 파일을 작성해 줍니다. 다른 클라이언트는 자체 파일을 읽으므로, 해당 문서(documentation)를 확인하고 동일한 블록을 붙여넣으세요. | |
{
"mcpServers": {
"engram": {
...
참고: mcpServers를 ~/.claude/settings.json에 넣지 마세요. 이 파일은 Claude Code 설정 전용입니다. MCP 서버는 ~/.claude.json (사용자 범위) 또는 .mcp.json (프로젝트 범위)에 속합니다.
만약 engram setup을 통해 설치했다면, 로컬 빌드를 가리킬 수도 있습니다:
{
"mcpServers": {
"engram": {
...
AI 클라이언트를 재시작하세요. 이제 24개의 도구를 사용할 수 있게 되었습니다:
| 카테고리 | 도구 |
|---|
| 메모리 (Memory) | store_memory, search_memory, recall_context, add_knowledge, forget |
| ... | |
| 플러그인 (Plugins) | plugin_list |
대화 자동 저장 (선택 사항)
세션이 끝날 때마다 대화 요약을 engram에 자동으로 저장하도록 Claude Code 훅(hook)을 추가하세요:
cp scripts/claude-code-hook.sh ~/.claude/hooks/engram-session-end.sh
chmod +x ~/.claude/hooks/engram-session-end.sh
~/.claude/settings.json에 추가하세요:
{
"hooks": {
"SessionEnd": [
...
이제 모든 세션이 engram에 요약을 자동 저장합니다. 수동 노력 없이도 두뇌가 성장하는 것입니다.
저장된 세션은 pending-distill 태그가 지정됩니다. Engram에 연결된 AI는 get_distill_tasks를 호출하고, 자체적으로 영속적인 사실을 추출하며 (Engram은 LLM을 실행하지 않으며 API 키도 필요 없습니다), complete_distill을 호출하여 해당 사실들을 저장한 후 원본 세션을 아카이브합니다. SessionStart는 AI에게 세션이 증류(distilled)를 기다리고 있음을 상기시켜 줍니다.
Claude Desktop Extension (1-클릭 설치)
Engram을 Claude Desktop에 가장 빠르게 통합할 수 있는 방법입니다. 수동 JSON 편집이 필요 없습니다.
Smithery를 통한 연결
Install on Smithery
smithery.ai/skills/ayvazyan10/engram로 이동하여 Install을 클릭하고, 선택적으로 데이터베이스 경로와 네임스페이스를 설정한 후 Smithery가 Claude Desktop을 자동으로 구성합니다.
.mcpb 데스크톱 확장 프로그램을 통한 연결
GitHub Releases에서 engram-mcp.mcpb를 다운로드하여 Claude Desktop에서 엽니다 (파일 → 확장 프로그램 열기). 이 번들(bundle)은 첫 실행 시 자동으로 @engram-ai-memory/mcp를 ~/.engram/mcp/에 설치합니다. 설정이 필요 없습니다.
부트스트랩 작동 방식: 처음 실행할 때 .mcpb 번들은 npm을 통해 @engram-ai-memory/mcp@<version>을 ~/.engram/mcp/에 설치합니다. 마커 파일(marker file)이 이후 실행 시 재설치를 방지합니다. 그러면 모든 24개의 MCP 도구가 Claude Desktop에서 사용 가능해집니다.
패키지 (Packages)
| 패키지 | 설명 | npm |
|---|
@engram-ai-memory/core | 브레인(Brain) — 메모리 엔진, 임베딩(embeddings), 그래프(graph), 검색(retrieval), 감쇠(decay), 성찰(reflection) | npm |
| ... | | |
환경 변수 (Environment variables)
| 변수 (Variable) | 기본값 (Default) | 설명 (Description) |
|---|
PORT | 4901 | API 서버 포트 (API server port) |
| ... | | |
project는 기본적으로 git 저장소 내에서 MCP 서버와 hooks의 범위를 절대적인 git 최상위 경로에 맞추고 해당 프로젝트의 메모리(memories)와 전역 메모리를 읽습니다. 저장소 외부에서는 공유 풀(shared pool)을 사용합니다. filter는 ENGRAM_NAMESPACE 범위로 제한되며, isolated는 ENGRAM_NAMESPACE와 함께 오버라이드 및 크로스 네임스페이스 쿼리를 거부하는 고정 경계입니다. REST 서버와 대시보드는 항상 none으로 실행되며 모든 프로젝트를 볼 수 있습니다. 기존 메모리는 NULL 네임스페이스를 가지며 전역 상태로 유지됩니다.
이는 요약본입니다. docs/CONFIGURATION.md에 전체 목록이 있으며, 여기에는 Security 아래의 모든 내용이 포함되어 있습니다. engram start가 서버 환경을 ~/.engram/config.json에서 파생시키므로, 셸 변수는 재정의된다는 점에 유의하십시오 — CLI 섹션 참조.
포트 (Ports)
| 서비스 (Service) | 포트 (Port) | 목적 (Purpose) |
|---|
| Engram API | 4901 | REST + WebSocket + Swagger UI |
| ... | | |
docker compose는 세 가지 모두 — 그리고 5432번의 동기 테스트용 Postgres까지 —을 루프백(loopback) 전용으로 게시합니다. API를 노출하려면 의도적으로 ENGRAM_API_KEY를 설정하고, 공개 호스트 이름(public hostname)을 ENGRAM_ALLOWED_HOSTS에 추가한 다음, 비로소 게시된 주소를 변경해야 합니다. | | |
모든 포트는 일반적인 개발 서비스(3000, 5173, 8080 등)와의 충돌을 피하기 위해 49xx 범위에 있습니다.
라이브 데모 (Live demo)
cd packages/core && npx tsx scripts/demo.ts
...
Atlas 뷰: Map · Recall · Review · Timeline · Insights · Settings
이름 지정된 영역(named regions)의 지도를 통해 기억을 탐색하고, 의미/결함/시간 렌즈와 검색 핀을 활용할 수 있습니다. Recall 기능은 AI에게 전달될 내용과 정확한 맥락을 함께 번호가 매겨진 경로로 그려줍니다. 모순점, 유사하지만 다른(near-duplicates) 기억, 희미하지만 중요한 기억, 그리고 잠재적인 비밀들을 검토할 수 있으며, Redact 기능을 통해 감지된 비밀 정보도 처리합니다. 모든 기억은 열어서 검사하거나 편집할 수 있으며, 아카이브 및 메모 시트 모순 액션은 6초간의 되돌리기(Undo)를 제공합니다. 타임라인(Timeline)은 날짜별로 기억을 그룹화하고, 인사이트(Insights)는 숫자와 성찰(Reflections)을 담고 있으며, 설정(Settings)에서는 연결 단계와 상태를 보여줍니다. 환영(Welcome) 가이드는 첫 번째 연결을 안내합니다.
라이트 모드 또는 다크 모드를 사용하거나 시스템 설정을 따르세요. 명령어 창은 ⌘K / Ctrl+K로 열고, 메모 보기 간 이동할 때 프로젝트 범위를 동일하게 유지하세요. 레이아웃은 키보드 탐색과 지도 옆에 접근 가능한 목록을 갖추어 휴대폰에도 적응합니다.
성능