store_memoryLABSCO SUMMARY
Explicit memory with real multi-user isolation — the opposite of a server that decides for you what was worth keeping.
Nothing is auto-extracted from your conversations: you store what matters, typed as a fact, preference, instruction, feedback, decision or insight, and tagged. That makes the store curated rather than noisy, and search returns snippets first so retrieval stays cheap until you ask for a full memory by name. The unusual part is dreaming — dream_report surfaces near-duplicates and conflicts and the merge happens through the model non-destructively, with superseded memories retired by expiry rather than deleted.
What it is
A Python memory server backed by PostgreSQL with pgvector: memories are stored explicitly, typed and tagged, and retrieved by BM25 full-text and vector search fused together.
What you get
- store_memory — save a memory, idempotent by content, with near-duplicate detection and an optional expires_at
- retrieve_memory — hybrid semantic and full-text search, returning compact snippets so a lookup does not flood the context
- recall_memory — search by a natural-language time expression rather than a date range
- get_memory — the full content of one memory by name, expired ones included
- list_memories with type and tag filters, and search_by_tag with AND/OR matching
- update_memory, delete_memory and move_memory, including moving a memory between workspaces
- list_workspaces — the shared and personal workspaces you belong to
- dream_report — a read-only consolidation pass listing similar pairs, expired and expiring-soon memories, which the dream prompt then walks the model through merging
- A web UI for browsing, editing, deleting and exporting memories as JSON
- Local ONNX embeddings that ship with the server — no embedding API key to configure
Requirements
Python 3.12 with uv, and PostgreSQL 15 or newer with the pgvector extension. OAuth 2.1 is always on; set MEMLORD_BASE_URL to your public URL and change MEMLORD_OAUTH_JWT_SECRET before deploying. Docker Compose start is documented. Dual-licensed: AGPL-3.0 for open-source use, commercial licence for closed-source deployments.
Setup effort
Run a container — pull the image and point your client at it
USE CASES
Keeping decisions your assistant should not re-litigate
Store the decision with its reasoning and a tag; later searches surface it before the topic gets reopened.
Finding something you noted but cannot date precisely
Ask in words — around the migration, last spring — and search by that time expression instead of a range.
Sharing context across a team without sharing everything
Personal memories stay yours; put the ones the team needs in a workspace and move them across when they graduate.
Cleaning up a memory store that has grown contradictory
Run the consolidation report to see similar pairs and conflicts, then merge them into insights instead of deleting history.
Keeping retrieval cheap in a long session
Search returns snippets; pull the full text of only the one memory that turned out to matter.
11 tools
Listed in project docs. Your client may show a different list.
retrieve_memoryrecall_memorylist_memoriessearch_by_tagget_memoryupdate_memorydelete_memorymove_memorylist_workspacesdream_reportBEFORE YOU INSTALL
What to know first
Tools you get
11 tools named in the project's documentation.
Requires
Docker with Compose — or, for the route without Docker, Python 3.12, uv, and PostgreSQL 15 or newer with the pgvector extension
INSTALLATION
Connect your client
Pull the image and point your client at it.
Server setup
git clone https://github.com/MyrikLD/memlord.git
cd memlord
cp .env.example .env
docker compose upCompose starts the published image ghcr.io/myrikld/memlord:latest together with a PostgreSQL container that has pgvector (pgvector/pgvector:pg17)
Or, without Docker: with PostgreSQL 15 or newer and the pgvector extension running, and MEMLORD_DB_URL in .env pointing at it, run uv sync --dev, then uv run python scripts/download_model.py (the ~23 MB ONNX model), then alembic upgrade head, then memlord
The server listens on port 8000 (MEMLORD_PORT): the Web UI is at http://localhost:8000 and the MCP endpoint at http://localhost:8000/mcp. Add that URL to your client as a remote server and sign in — OAuth 2.1 is always on