llmem
LLMem
LLMem is a structured memory system (Go binary). It stores factual memories in SQLite with optional embedding-based semantic search via Ollama (nomic-embed-text). Semantic search uses a sqlite-vec HNSW ANN index for sub-linear retrieval, with automatic fallback to brute-force cosine similarity if the sqlite-vec extension is not available. Memories can be connected via typed relations (related_to, supersedes, contradicts, depends_on, derived_from). A background dreaming/consolidation system (light, deep, REM phases) runs automatically via systemd timer to decay idle memories, boost frequent ones, promote high-value ones, and merge near-duplicates.
Installation
- CLI:
~/.local/bin/llmem - Config:
~/.config/llmem/config.yaml - DB:
~/.config/llmem/memory.db - Ollama:
http://localhost:11434(local, for embeddings)
Session Adapter Configuration
LLMem uses a session adapter to read conversation transcripts for memory extraction. Set session.adapter in config.yaml:
opencode(default) — reads from~/.local/share/opencode/opencode.db. Auto-selected if the database exists.copilot— reads from~/.copilot/session-state/. Auto-selected if only Copilot session data exists. Full transcripts require--share.none— no adapter. Context injection still works, but transcript extraction returnsno_transcript.