한 줄 정의
OpenMemory는 LLM 에이전트와 코딩 어시스턴트가 세션을 넘기는 영구 컨텍스트를 자체 디스크에 쌓아 두는 오픈소스 메모리 저장소야. MCP 서버 인터페이스를 같이 제공해서 Claude Desktop·Codex·Copilot 같은 클라이언트가 같은 메모리에 붙어 쓰는 구조야.
실제로 무엇을 하나
LLM은 한 세션이 끝나면 컨텍스트가 사라져. OpenMemory는 그 컨텍스트를 본인 디스크의 SQLite나 Postgres에 따로 저장하고, 다음 세션이 시작될 때 다시 끌어와. 저장 방식이 단순 벡터 검색(RAG)과 다른 부분은 메모리를 다섯 종류로 나눈 점이야.
- episodic memory: 언제 무슨 일을 했는지 시점 기반 기록 — 어제 어떤 결정을 왜 내렸는지
- semantic memory: 사실·개념 — 이 프로젝트의 인증 모듈은 Supabase 기반이라는 식
- procedural memory: 절차·workflow — 배포 단계, 디버깅 순서
- emotional memory: 사용자 선호와 톤 — 어떤 표현을 좋아하고 어떤 걸 거부하는지
- reflective memory: 회고·메타 정보 — 어떤 패턴이 반복되는지
저장된 메모리는 시간 기반 지식 그래프로 묶여서, “지난주 인증 문제 해결할 때 무슨 가설을 검토했지?” 같은 질문에 시간 축과 주제 축 양쪽으로 접근해. 설치는 Python(pip install openmemory-py) 또는 Node(npm install openmemory-js)로 SDK를 깔거나, MCP 서버를 띄워서 MCP 호환 클라이언트에 그대로 연결해.
왜 중요한가
코딩 에이전트를 본격적으로 쓰면 매 세션마다 같은 컨텍스트를 다시 알려 줘야 하는 게 누적 비용이 돼. 어제 Claude에 설명한 모듈 구조를 오늘 Codex에 또 설명하는 식이거든. OpenMemory처럼 MCP를 표준 인터페이스로 두면 여러 에이전트가 한 메모리에 붙어서, 한 번 정리한 컨텍스트를 여러 도구가 공유할 수 있어. 그리고 데이터가 본인 디스크에 남으니까 API 제공자에게 코드·대화 데이터가 학습용으로 흘러가는 Copilot 데이터 정책 변경 같은 상황을 회피할 수 있는 카드가 돼.
주의해서 볼 점
분류 자체가 마케팅 표현일 수 있어. 5종 메모리가 실제 구현에서 얼마나 분리돼 검색되는지는 본인 워크로드로 직접 측정해야 해. 그리고 MCP 서버는 OpenMemory가 노출하는 한 표면이라, 라이브러리 전체를 “MCP 전용 도구”로 오해하지 않는 게 좋아. 민감 데이터를 평문으로 SQLite에 쌓으면 백업 디스크 한 장이 통째로 빠져나갈 위험이 있으니까 암호화 옵션을 먼저 확인하고, 다중 클라이언트 동시 접근 시 잠금 동작도 운영 환경에서 미리 점검하는 게 안전해.