tagmem is a local-first memory system that stores original text, retrieves it with hybrid semantic and lexical ranking, and exposes that memory through a simple CLI and MCP interface.
Local storage is created automatically on first use.
The installer chooses latest-gpu when the GPU image validates successfully on an NVIDIA host. Otherwise it installs wrappers for latest-cpu.
If OpenCode is detected during an interactive install and its config is patchable, the installer can offer to add the tagmem MCP entry.
Compatibility
Environment
Docker CPU
Docker GPU
Source build
Status
Linux amd64 with NVIDIA GPU
✓
✓
✓
Supported, live-validated in this audit pass
Linux amd64 without NVIDIA GPU
✓
X
✓
Supported by installer and runtime code paths
Linux arm64
Planned
X
Planned
Planned
macOS Intel
Planned
X
Planned
Planned
macOS Apple Silicon
✓
X
Planned
Supported by Docker-path design; not live-validated in this audit pass
Windows x86_64
Planned
X
Planned
Planned
Source build means compiling from the repository yourself. The simple installer path is Docker-only for now, and this audit pass live-validated the Linux/NVIDIA Docker path only.
Quick Usage
Add an entry:
tagmem add --depth 0 --title "identity" --body "You are building a local memory system."
entries store searchable body text plus retrievable verbatim source material
tags provide primary organization and filtering
depth acts as a closeness and retrieval-priority signal
facts store structured knowledge
diary stores agent-specific notes
This keeps the memory layer understandable while still supporting richer retrieval behavior.
For a practical rule set on when text should stay an entry, become a fact, or both, see FACT_RUBRIC.md. For the graph model and query semantics, see KNOWLEDGE_GRAPH.md.
Commands
Core commands:
tagmem init
tagmem ingest
tagmem split
tagmem add
tagmem list
tagmem search
tagmem show
tagmem status
tagmem context
tagmem depths
tagmem paths
tagmem doctor
tagmem serve
tagmem repair
tagmem mcp
tagmem bench
tagmem init remains available as an optional bootstrap command if you want to precreate storage and print the resolved paths.
If a reachable local daemon socket already exists, tagmem mcp will use it automatically. To make daemon-backed MCP required instead of opportunistic, run the local daemon first and set TAGMEM_MCP_USE_DAEMON=1:
tagmem serve
TAGMEM_MCP_USE_DAEMON=1 tagmem mcp
Current MCP tools:
tagmem_status
tagmem_paths
tagmem_list_depths
tagmem_list_tags
tagmem_get_tag_map
tagmem_list_entries
tagmem_search
tagmem_fact_rubric
tagmem_show_entry
tagmem_check_duplicate
tagmem_add_entry
tagmem_delete_entry
tagmem_kg_query
tagmem_kg_add
tagmem_kg_invalidate
tagmem_kg_timeline
tagmem_kg_stats
tagmem_graph_traverse
tagmem_find_bridges
tagmem_graph_stats
tagmem_diary_write
tagmem_diary_read
tagmem_doctor
Benchmarks
Current benchmark snapshot:
LongMemEval
Latest release-check confirmation for the default embedded model (bge-small-en-v1.5, ONNX/CUDA):
xychart-beta
title "LongMemEval Recall@5"
x-axis ["bge-base", "bge-small", "MemPalace"]
y-axis "Recall@5" 0.90 --> 1.00
bar [0.992, 0.990, 0.966]
The latest guarded rerun for bge-small-en-v1.5 also recorded Recall@10 0.996, NDCG@10 0.951, and Time 25.1s.
Those guarded numbers track the benchmark CLI's component path. The repository also supports an interface path that exercises the real repository and search flow (TAGMEM_BENCH_PATH=interface or both); that path is reported separately because its latency and recall differ from the direct harness path. When a reachable local daemon socket is present, the interface path may reuse the daemon's hot corpus state instead of rebuilding a local corpus for each run.
The latest audited warm interface rerun for bge-small-en-v1.5 recorded Recall@1 0.874, Recall@5 0.980, MRR 0.921, and Time 360.2s; the raw artifact is published separately at benchmarks/raw/bge-small-en-v1.5/longmemeval-interface.json.
FalseMemBench
FalseMemBench is a standalone adversarial distractor benchmark focused on conflicting, stale, and near-miss memories.
These values are currently published from the checked-in raw artifacts under benchmarks/raw/adversarial/. The standalone FalseMemBench harness is maintained outside this repository and was not rerun in this audit pass.