;

Hermes와 mem0 연동 및 셀프호스팅 완벽 가이드 본문

Programing

Hermes와 mem0 연동 및 셀프호스팅 완벽 가이드

WindowsHyun 2026. 7. 2. 13:42
반응형

개요

본 포스트는 Hermes에서 mem0를 연결하고, mem0를 직접 셀프호스팅하는 과정을 설명합니다.

Hermes 기본 메모리도 쓸 수 있지만, 장기 기억을 따로 관리하려면 mem0 같은 외부 메모리 서버가 더 편합니다. 대화 기록에서 중요한 사실만 저장하고, 다음 세션에서 다시 찾아 쓰는 흐름을 만들 수 있습니다.

전체 구성 흐름

사용자는 Hermes와 대화합니다. Hermes는 기억이 필요할 때 mem0에 저장하거나 검색을 요청합니다. mem0는 Postgres, vector store 같은 저장소를 사용해서 사용자별 기억을 관리합니다.

구성은 크게 네 부분입니다.

  • Hermes: 사용자 요청을 처리하고 도구를 실행합니다.
  • mem0 provider: Hermes와 mem0 API 사이를 연결합니다.
  • mem0 API: 기억 저장, 검색, 업데이트를 처리합니다.
  • 저장소: Postgres, vector store, 필요하면 graph store를 사용합니다.

1. mem0를 쓰는 이유

mem0의 목적은 단순합니다. 에이전트가 오래 기억해야 할 내용을 외부 저장소에 남기는 것입니다.

Hermes를 오래 쓰다 보면 매번 반복해서 말하는 정보가 생깁니다. 사용자가 선호하는 말투, 서버 주소, 프로젝트 구조, 자주 쓰는 작업 방식 같은 것들입니다. 이런 정보는 매 세션마다 다시 설명하기보다 memory layer에 넣어두는 편이 낫습니다.

mem0를 쓰면 다음 장점이 있습니다.

  • 세션이 바뀌어도 기억이 남습니다.
  • 사용자와 에이전트 단위로 기억을 나눌 수 있습니다.
  • 로컬 파일 메모리보다 검색과 관리가 쉽습니다.
  • 여러 Hermes 인스턴스가 같은 memory server를 공유할 수 있습니다.
  • 셀프호스팅하면 기억 데이터를 직접 통제할 수 있습니다.

2. Hermes와 mem0 연결 방법

Hermes에서는 memory provider를 mem0로 지정합니다. 로컬 메모리까지 같이 쓰면 같은 내용이 두 곳에 저장될 수 있으므로, mem0만 쓸 때는 로컬 memory 주입을 끄는 편이 낫습니다.

설정 파일은 보통 ~/.hermes/config.yaml입니다.

memory.memory_enabled 값은 false로 둡니다. memory.user_profile_enabledfalse로 둡니다. memory.provider 값은 mem0로 지정합니다.

Hermes 기본 memory toolset까지 숨기고 싶으면 agent.disabled_toolsets 목록에 memory를 넣습니다. 이렇게 하면 기억 경로가 mem0 쪽으로 단순해집니다.

mem0 접속 정보는 ~/.hermes/mem0.json 같은 별도 파일에 둡니다.

필수 값은 대체로 mode, api_url, user_id, agent_id입니다. REST 서버를 쓰는 경우 moderest, api_url은 직접 띄운 mem0 API 주소를 넣습니다.

API 키는 ~/.hermes/.envMEM0_API_KEY=<토큰> 형태로 둡니다. 실제 토큰은 블로그나 Git에 쓰지 않습니다.

설정 후 Hermes 세션이나 gateway를 재시작합니다. 정상 연결되면 Hermes에서 mem0_add, mem0_search, mem0_list 같은 도구를 사용할 수 있습니다.

3. mem0 셀프호스팅 방법

mem0 셀프호스팅은 mem0 API와 대시보드, 저장소를 내 서버에 올리는 방식입니다. Docker 또는 Kubernetes로 띄울 수 있고, 개인 서버나 내부망에서 운영하기 좋습니다.

기본 흐름은 다음과 같습니다.

  • mem0 저장소를 내려받습니다.
  • server 디렉터리에서 bootstrap을 실행합니다.
  • .env에 LLM provider, embedding provider, DB 접속 정보를 넣습니다.
  • 컨테이너를 실행합니다.
  • API와 dashboard 접속을 확인합니다.
  • Hermes의 api_url을 해당 서버 주소로 바꿉니다.

명령 흐름만 보면 git clone https://github.com/mem0ai/mem0.git 실행 후 cd mem0/server, make bootstrap 순서입니다. 이후 환경에 맞게 .env를 채우고 Docker Compose나 Kubernetes 배포로 이어갑니다.

4. 운영할 때 주의할 점

기존 OpenMemory 문서는 예전 구조를 설명하는 경우가 있습니다. 새로 구축한다면 mem0 self-hosted server 기준으로 보는 편이 안전합니다.

임베딩 모델 차원도 확인해야 합니다. 예를 들어 gemini/gemini-embedding-001처럼 3072차원 임베딩을 쓰면 pgvector HNSW 인덱스 제한에 걸릴 수 있습니다. 이때는 HNSW를 끄거나, 더 낮은 차원 임베딩 모델을 선택합니다.

Postgres connection string도 조심해야 합니다. 비밀번호에 특수문자가 있으면 URL 파싱이 깨질 수 있습니다. 이 경우 host가 잘못 잡혀서 엉뚱한 DB로 붙는 문제가 생깁니다. 비밀번호는 URL encoding해서 넣는 편이 안전합니다.

5. 어떤 경우에 쓰면 좋은가

mem0는 모든 프로젝트에 꼭 필요한 도구는 아닙니다. 단발성 질문만 처리한다면 Hermes 기본 메모리로 충분합니다.

하지만 다음 경우라면 mem0를 쓰는 편이 좋습니다.

  • 같은 사용자를 계속 상대하는 개인 비서를 만들 때
  • 사용자의 작업 방식과 선호를 오래 유지해야 할 때
  • 프로젝트별 맥락을 다음 세션에서도 이어가야 할 때
  • 여러 에이전트가 같은 기억을 공유해야 할 때
  • 기억 데이터를 외부 SaaS에 맡기지 않고 직접 관리하고 싶을 때

주요 오류 및 해결 방안

mem0_addmem0_search가 실패하면 먼저 API 주소와 키를 확인합니다. REST 서버 주소가 틀렸거나, gateway 재시작이 안 된 경우가 많습니다.

Postgres 연결 오류가 나오면 connection string을 확인합니다. 특수문자 인코딩, host 이름, namespace, service name을 먼저 봅니다.

임베딩 인덱스 오류가 나오면 벡터 차원을 확인합니다. pgvector HNSW 제한에 걸린 경우 hnsw: false 설정이나 다른 embedding model 선택이 필요합니다.

확인

Hermes와 mem0를 같이 쓰면 Hermes는 실행과 판단을 맡고, mem0는 장기 기억 저장을 맡습니다. 기억 경로를 하나로 고정하고 싶다면 로컬 메모리를 끄고 mem0만 쓰는 구성이 운영하기 쉽습니다.

반응형
Comments