세션·도구가 바뀌면 코딩 에이전트가 결정·선호·버그 해결책을 매번 잊는 문제를 겨냥한 로컬 메모리 서비스로, localhost의 Rust 서비스 하나가 기억을 들고 Claude Code·Codex(MCP·프롬프트 훅)·pi 등 여러 클라이언트에 돌려줌. LLM을 전혀 호출하지 않고 로컬 임베딩(multilingual-e5-base)으로 검색하며, SQLite를 진실의 원본으로 두고 Tantivy BM25 색인과 HNSW 벡터 색인을 RRF(k=60)+MMR(λ=0.5)로 합침. MIT 라이선스에 Linux x86_64·aarch64 바이너리와 Windows·WSL 설치 스크립트를 제공함.
세션이 끝나면 에이전트는 서비스 포트, 라이브러리 선택 이유, 두 번 고친 버그의 해결책까지 다 잊는다. 하네스마다 반쪽짜리 메모리가 있어도 다른 도구로 넘어가면 사라진다. memnest는 localhost에서 도는 Rust 서비스 하나가 그 기억을 들고 있다가 요청하는 에이전트에 돌려주는 구조로, Claude Code·Codex는 MCP와 프롬프트 훅으로, pi는 확장으로, 나머지 MCP 클라이언트는 같은 엔드포인트로 붙는다.
설계는 로컬·프라이버시 중심이다. LLM을 전혀 호출하지 않고 임베딩은 multilingual-e5-base로 로컬에서 돈다. SQLite가 진실의 원본이고 옆의 BM25·벡터 색인은 파생물이라 언제든 재생성되며, 색인 작업이 레코드와 같은 트랜잭션에 기록돼 중간에 끊긴 쓰기도 재시작 때 복구된다. BM25는 포트 번호·크레이트 이름 같은 정확한 토큰에, 벡터는 바꿔 말한 문장에 강해 둘을 RRF+MMR로 합친다. 자격증명은 검색에서 빠져 AES-256-GCM 금고에 들어가고 자격증명처럼 생긴 텍스트는 쓰기 경로에서 미리 가려진다.
벤치마크 문서에는 채택하지 않은 실험까지 그대로 남겼다. 가장 약한 지점은 후보 기각으로, 한국어 픽스처에서 recall@1은 0.976인데 no-result 정확도가 0.200이라 아무것도 반환하지 않아야 할 질의에서 신뢰도 낮은 기억을 돌려주는 문제가 남아 있다. MIT 라이선스로 공개돼 바로 시험해볼 수 있다.