Your AI agents' shared brain, written in Markdown
memsearch gives Claude Code, Codex CLI, and friends a persistent, cross-platform memory layer backed by Milvus and plain .md files.

What it does
memsearch is a memory harness for AI coding agents. It captures conversation turns, summarizes them into daily Markdown files, and indexes them for semantic search. A chat with Claude Code on Monday becomes retrievable context for Codex CLI on Tuesday — no migration, no copy-paste. The project ships plugins for Claude Code, Codex CLI, OpenClaw, and OpenCode, plus a standalone CLI and Python API for building your own integrations.
The interesting bit
The architecture inverts the usual database-first approach: Markdown files are the source of truth, and Milvus is a “shadow index” — a rebuildable cache. This means your memories are human-readable, git-friendly, and not locked in a vector store. The retrieval pipeline is also more careful than a naive top-k search: it runs dense vectors + BM25 sparse search, reranks with RRF, then expands and fetches the full transcript. SHA-256 hashing skips re-indexing unchanged files, and a file watcher keeps the index in sync live.
Key highlights
- Cross-platform plugins: Install once per agent; all share the same backend and config.
- Local-first embeddings: Defaults to ONNX bge-m3 (~558 MB download), no API key required. OpenAI and Ollama providers are swappable.
- Flexible Milvus backend: Milvus Lite (single file, zero config) by default; Zilliz Cloud or self-hosted Docker for scale.
- Progressive disclosure retrieval: 3-layer recall — search, expand, transcript — rather than dumping raw chunks into context.
- Background memory maintenance: Optional
project_reviewanduser_profiletasks that summarize durable state and user preferences, disabled by default.
Caveats
- The Codex CLI install requires
git cloneand a bash script rather than a clean package manager install, plus--yolofor ONNX network access. - Advanced memory maintenance tasks (project review, user profile) are disabled by default and only trigger when a plugin wakes them after a session, the journal changed, and a minimum interval elapsed — the exact scheduling mechanics are left somewhat implicit.
- The README is truncated mid-sentence in the
memory-configskill section, so full configuration surface is unclear.
Verdict
Worth a look if you juggle multiple AI agents and are tired of context amnesia. Probably overkill if you live in a single tool with built-in memory, or if you don’t want another vector database in your life.