OmniMem
공식세션, 프로젝트, 머신 간에 AI 에이전트가 지속적인 메모리를 유지할 수 있도록 하는 자체 호스팅 MCP 서버입니다.
OmniMem MCP(으)로 무엇을 할 수 있나요?
AI 에이전트에 세션, 프로젝트, 머신 전반에 걸친 지속적이고 자체 호스팅된 메모리를 부여하세요 — "이미 실패한 라이브러리를 추천하기 전에 묘지를 확인하라"고 요청해 보세요.
- 세션 브리핑 —
briefing을 요청하여 프로젝트 컨텍스트, 경험 통계, 오래된 메모리, 새 기사, 스킬 제안을 한 번의 호출로 받아보세요. - 과거의 막다른 길 피하기 — 이전에 실패한 라이브러리나 패턴을 추천하기 전에 에이전트가 묘지를 확인하도록 하세요.
- 과거 결정 회상 —
recall을 사용하여 이전 세션의 결정, 수정 사항, 패턴을 프로젝트 전반에 걸쳐 표면화하세요. - 힘들게 얻은 경험 기록 —
record_experience로 수정 사항을 기록하여 실제 노력이 필요한 교훈이 다음에 더 쉽게 표면화되도록 하세요. - 메모리 중복 제거 —
find_duplicates를 실행하여 거의 동일한 저장 메모리를 플래그 지정하고 일괄 정리하세요. - 메모리 백업 —
dump_to_file로 소유한 JSON 파일에 모든 것을 내보내세요.
문서
셀프 호스팅 방식의 AI 에이전트용 시맨틱 메모리입니다. 영구 세션, 경험 점수, 그리고 막다른 길을 위한 묘지까지 갖추고 있으며, 읽은 RSS에서 얻은 지식을 Valkey 벡터 검색에 저장한 뒤 MCP 서버로 노출합니다. https://omnimem.org
<OmniMem>omnimem.org
개발은 Codeberg에서 진행됩니다 — 이슈와 PR은 그쪽으로 부탁드립니다.
같은 세션을 두 번 반복하지 마세요.
모든 Claude Code 세션은 제로에서 시작합니다. 프로젝트에 대한 기억도 없고, 지난주에 무엇이 실패했는지에 대한 기억도 없습니다. 지난주 화요일에 onnxruntime가 Alpine에서 폭발하는 이유를 알아내는 데 세 시간을 썼다는 기억도, 실제로 작동하는 무언가를 찾아낸 기억도 없습니다.
그래서 프로젝트를 다시 설명합니다. Claude는 같은 고장 난 라이브러리를 다시 추천합니다. 같은 알람, 같은 노래. 당신은 Bill Murray이고 Claude는 Punxsutawney입니다.
OmniMem이 그 문제를 해결합니다. AI 에이전트에게 세션, 프로젝트, 머신을 넘나드는 영구 메모리를 제공하는 셀프 호스팅 MCP 서버입니다. 당신의 하드웨어에서 실행되며 영원히 무료입니다.
claude> use onnxruntime for the embeddings
⚠ WARNING: previously abandoned approach
onnxruntime — SIGILL crash on Alpine musl libc (effort: 4/5)
→ switched to sentence-transformers instead
그 경고는 운이 아니라 기억에서 나온 것입니다. 이미 대가를 치른 실수가 두 번 청구되지는 않습니다.
빠르게 시작하기
팁
사전 빌드된 Docker Hub 이미지에서 전체 스택을 한 줄 명령으로 실행할 수 있습니다:
curl -fsSL https://codeberg.org/ric_harvey/omnimem/raw/branch/main/install.sh | bash그런 다음 에이전트를 연결하세요 — 빠른 시작에서 나머지 과정을 안내하며, 아래의 더 자세한 빠른 시작 섹션으로 바로 이동할 수도 있습니다.
기억하는 것
다섯 가지 종류의 메모리가 있으며, 회상 시 모두 함께 검색됩니다:
- 일화(Episodic) — 내린 결정, 고친 버그, 발견한 패턴. 배우는 데 실제 노력이 들었고 매일 아침 다시 배우지 않아도 되는 것들.
- 프로젝트 컨텍스트 — 스택, 목표, 현재 상태. 에이전트는 매 세션을 처음부터 시작하는 대신 이미 브리핑을 받은 상태로 도착합니다.
- 지식 — 설정한 RSS 피드를 일정에 따라 가져와 Claude Haiku로 요약하고, 임베딩한 뒤 저장합니다. 지난주에 관련 기사가 올라왔다면 읽어볼 가치가 있는 출발점으로 표면화됩니다.
- 선호(Preferences) — 작업 방식에 대한 규범적 규칙("기능이 완성된 후에는 항상 README를 업데이트할 것")으로, 대화에서 자동으로 추출되어 해당되는 상황마다 표면화됩니다.
- 스킬(Skills) — 특정 도메인에서 쌓은 경험으로 컴파일된 SKILL.md 문서로, 첫 프롬프트부터 에이전트가 당신의 방식대로 작업하게 합니다. 다른 네임스페이스에서 파생되며 수동 편집은 불가능하고 모든 변경은 검토를 거칩니다. 스킬 컴파일러를 참조하세요. 최상위 검색 결과는 여섯 달 전 다른 프로젝트에서 내린 결정일 수도, 어제 찾은 해결책일 수도, 화요일 밤에 올라온 기사일 수도 있습니다. 유용하기만 하면 어디서 왔는지는 중요하지 않습니다.
차별점
MCP 래퍼를 씌운 단순 키-값 저장소가 아닙니다. OmniMem은 실제 메모리가 작동하는 방식을 모델링합니다. 시간이 지나면 흐려지고, 때로는 서로 모순되며, 힘겹게 얻은 것은 그 자리를 차지합니다.
- The Graveyard — 시도한 내용, 실패한 이유, 소모한 시간과 함께 모든 막다른 길이 기록됩니다. 에이전트는 라이브러리나 패턴을 제안하기 전에 이를 확인합니다.
- Experience scoring — 네 번의 시도와 이상한 플랫폼 우회 방법으로 겨우 해결한 것은 금과 같습니다. 어려웠을수록 다음에 더 쉽게 떠오릅니다.
- Memory lifecycle —
ACTIVE → DEPRIORITISED → ARCHIVED → DELETED. "X에 대해 잊어라"는 보통 언급을 중단하라는 뜻이지, 존재 자체를 지우라는 뜻이 아닙니다. 우선순위가 낮아진 기억은 다시 그 자리를 되찾을 수 있습니다. - Contradiction detection — 새 기억이 저장된 내용과 충돌하면 OmniMem이 이를 감지합니다. 모든 쓰기 작업에서 빠른 휴리스틱 검사를 수행하고, Claude Haiku를 통한 심층 분석도 선택적으로 사용할 수 있습니다.
- Semantic deduplication — 거의 동일한 기억은 쓰기 시점에 플래그가 지정되고
find_duplicates()로 일괄 정리됩니다. - One-call briefing — 단 한 번의
briefing()호출로 프로젝트 컨텍스트, 경험 통계, 오래된 기억, 새 기사, 모순 경고, 스킬 제안을 반환합니다. 세 단계 준비 과정이 필요 없습니다. - The skill compiler — 강화된 교훈과 막다른 길을 로드 가능한 스킬로 압축하며, 제안-수락 게이트를 두어 잘못된 교훈이 조용히 정책이 되지 않도록 합니다.
- Auto-maintenance — 중복은 보관, 모순은 플래그 지정, 만료된 지식은 정리 — 모두 백그라운드에서 처리됩니다.
- Web UI — htmx 대시보드에서 모든 것을 탐색, 검색, 관리할 수 있으며, 텔레메트리와 Prometheus
/metrics엔드포인트를 제공합니다.
모든 검색 뒤에 있는 랭킹 공식:
score = similarity x surface_score x recency x experience_weight
네 가지 요소가 무엇이 반환될지 결정합니다. 의미적 유사성만으로는 충분하지 않습니다. 수명 주기 상태, 경과 시간, 교훈을 얻는 데 얼마나 어려웠는지가 모두 역할을 합니다.
모든 MCP 에이전트와 호환
모든 에이전트를 위한 하나의 메모리 레이어: claude.ai, Claude Code, Claude Desktop, Cursor, GitHub Copilot, GitLab Duo, AWS Kiro, OpenCode, OpenAI Codex CLI, Open Design.
아키텍처
네 개의 컨테이너. 아무것도 머신을 떠나지 않습니다. sentence-transformers를 통한 로컬 임베딩, 벡터 검색이 포함된 Valkey 저장소, 두 프런트 도어가 동일한 메모리 엔진을 공유합니다.
flowchart TB
agent["AI agent<br/>Claude Code · claude.ai · Cursor · Copilot · ..."]
browser["Browser"]
agent -- "MCP · Streamable HTTP / SSE · :8765" --> mcp
browser -- "HTTP · :8080" --> webui
subgraph stack["Docker Compose stack"]
mcp["MCP server<br/>Python · FastMCP<br/><i>remember · recall · briefing<br/>compile_skill · record_experience</i>"]
webui["Web UI<br/>Starlette · htmx · Jinja2<br/><i>dashboard · search · skills<br/>projects · backups · /metrics</i>"]
rss["RSS worker<br/>feedparser · APScheduler<br/>Claude Haiku summaries"]
valkey[("Valkey + valkey-search<br/>HNSW vector indexes<br/><i>idx:episodic · idx:project · idx:knowledge<br/>idx:preference · idx:skill</i>")]
mcp <--> valkey
webui <--> valkey
rss --> valkey
end
전체 그림 — 검색 파이프라인, 저장 모델, 설계 결정 — 은 docs/architecture.md에 있습니다.
셀프 호스팅, 오픈소스, 당신의 것
SaaS 없음. 벤더 종속 없음. 다른 사람의 서버로 전송되는 컨텍스트 없음.
- Valkey는 오픈소스 Redis 포크입니다. 모든 데이터는 자신의 머신에 있는 명명된 Docker 볼륨에 유지됩니다.
- amd64 및 arm64용 멀티 아키텍처 Docker 이미지. Raspberry Pi, AWS Graviton, Apple Silicon에서도 x86과 동일하게 실행됩니다.
- sentence-transformers는 API 호출 없이 로컬에서 임베딩을 실행합니다.
- MIT 라이선스는 포크하고, 확장하고, 원하는 곳 어디서든 실행할 수 있음을 의미합니다.
- 백업 명령 하나로
dump_to_file()을 호출하고 모든 것을 소유한 JSON 파일로 내보냅니다.
리버스 프록시를 통해 MCP 포트를 노출하면 작업하는 모든 머신이 동일한 메모리를 공유합니다. 하나의 배포, 어디서나 — docs/remote-access.md를 참조하세요.
빠른 시작
설치 프로그램은 Docker 설치 여부를 확인하고, 안전한 비밀번호를 생성하며, 적절한 .env을 작성하고, 사전 빌드된 Docker Hub 이미지에서 모든 것을 시작합니다:
curl -fsSL https://codeberg.org/ric_harvey/omnimem/raw/branch/main/install.sh | bash
또는 소스에서 빌드:
git clone https://codeberg.org/ric_harvey/omnimem.git && cd omnimem
cp .env.example .env
# Set VALKEY_PASSWORD and ANTHROPIC_API_KEY in .env
docker compose up -d
그런 다음 에이전트를 연결하세요 — Claude Code (~/.claude.json):
{
"mcpServers": {
"omnimem": {
"type": "sse",
"url": "http://localhost:8765/sse"
}
}
}
서버는 MCP instructions 필드를 통해 연결하는 모든 에이전트에 사용 가이드를 자동으로 전달합니다 — 구성 파일이 필요 없습니다. 웹 대시보드는 http://localhost:8080에 있습니다.
인증 토큰, 권한 설정, 기타 에이전트를 포함한 전체 안내는 docs/quick-start.md에 있습니다.
문서
| Quick start | 설치 프로그램, 소스 빌드, 에이전트 연결 |
| Features in depth | 수명 주기, graveyard, 경험 점수, 중복 제거, 모순, 브리핑 |
| The skill compiler | 경험을 로드 가능한 스킬로 컴파일 |
| MCP tool reference | 30개 이상의 모든 도구 |
| Configuration reference | 모든 환경 변수 |
| RSS & knowledge | 수동적 지식 수집 및 승격 |
| Multiple machines | 리버스 프록시, claude.ai용 OAuth 2.1, 문제 해결 |
| Web UI | 관리 대시보드 및 Prometheus 메트릭 |
| Architecture | 컨테이너, 검색 파이프라인, 설계 결정 |
| Memory type specs | 필드별 저장 모델 |
| Connection guides | 에이전트별 설정 |
| 배포 가이드 | macOS · Raspberry Pi · AWS · GCP · Linux + Tailscale Funnel |
Valkey에 정확히 무엇이, 누구에 의해 기록되는지 알고 싶다면 네임스페이스별 저장 사양: overview · episodic · project · knowledge · preference · skill
기여
이슈와 PR은 언제나 환영합니다. 개발은 Codeberg에서 진행됩니다 — 이슈와 PR은 그곳에 올려주세요. OmniMem은 확장을 염두에 두고 설계되었으며, 점수 파이프라인은 코어를 건드리지 않고 새 승수를 추가할 수 있도록 구성되어 있습니다. 새 MCP 도구, 추가 네임스페이스 유형, 대체 임베딩 백엔드 모두 합리적인 방향입니다.
라이선스
MIT. 자유롭게 사용, 포크, 수정할 수 있습니다. 엔터프라이즈 티어 없음, 호스팅 버전 없음, 조건 없음.
Ric Harvey @ SquareCows Ltd 제작 — 도구를 직접 소유하고 싶은 사람들을 위한 AI 및 자동화 컨설팅 회사.