All notable changes to TeleMem are documented here. The format follows Keep a Changelog.
- Character memory extraction: the per-character prompt received the
parse_messageshelper function instead of the parsed current dialogue, so character profiles were built from a function repr rather than the conversation. Character extraction now sees the actual turn. add()without auser_idnow stores memories in the shared"events"scope (matchingadd_batch()), sosearch()— which always includes"events"— can actually retrieve them.search(limit=N)now enforces the limit on the merged result set across scopes (highest score first); previously searching a profile plus"events"without a reranker could return up to2Nresults.
add(infer=False)andadd_batch(infer=False)are now honored: message contents are stored verbatim with zero LLM calls, and the messageroleis recorded in metadata.add(prompt=...)is now honored as a custom extraction prompt (system prompt override, raw transcript as the user message); also threaded throughadd_batch().add(memory_type="procedural_memory")now delegates to mem0's procedural-memory pipeline; any other non-Nonememory_typeraises a validation error instead of being silently ignored.add()validates that at least one ofuser_id/agent_id/run_idis provided, matching the documented (and mem0's) contract.- Offline contract test suite (
tests/test_contract.py): deterministic fake-LLM/fake-embedder tests pinning the public behavior ofadd/add_batch/search, character-scope separation, raw ingestion, prompt override, and result limits. - Multi-NPC reference example (
examples/multi_npc.py): five NPCs live through one scene; each gets a private memory profile plus the shared"events"world-state, then recalls the scene from their own perspective.
- Inherited mem0/PostHog telemetry is now disabled by default
(
import telememsetsMEM0_TELEMETRY=Falseunless already set); documented in the READMEs and API reference. mem0aidependency pinned to the tested>=2.0,<2.1range (TeleMem extends private mem0 internals, so an unbounded range was unsafe);requirements.txtregenerated from the tested environment.- Test functions no longer return values (removes pytest warnings).
- MCP registry name uses the canonical GitHub org casing
(
io.github.TeleAI-UAGI/telemem) so OIDC namespace authorization and the PyPI ownership marker match.
- Published to the official MCP registry
as
io.github.teleai-uagi/telemem:server.jsonmanifest, PyPI ownership marker, and an OIDC-authenticated publish job in the release workflow. - New
telememconsole script (alias oftelemem-mcp) souvx telememruns the MCP server with zero install, per the registry convention. - Evaluation charter (
docs/evaluation.md) aligned with The Benchmark Theatre: baselines before architecture, constant base model, deterministic scoring, audited judges, multi-seed reporting with Wilson intervals, cost/latency as first-class metrics, conflict-of-interest disclosure. - LongMemEval harness v2 implementing the charter:
--system {telemem, full-context, grep},--seeds N(mean ± std), per-type Wilson 95% intervals, and--validate-judgeadversarial judge auditing. The charter applies to new runs; existing published results are unchanged pending team review.
- The MCP SDK (
mcp>=1.6.0) is now a core dependency — TeleMem is MCP-ready out of the box;telemem[mcp]remains as a no-op alias.
First release published to PyPI: pip install telemem.
- Provider config examples with offline tests: Ollama (fully local stack),
DeepSeek, and Moonshot (Kimi) —
config/config.<provider>.yaml+tests/test_providers.py. - Framework integration examples:
examples/langchain_memory.pyandexamples/llamaindex_memory.py. - Documentation site at https://teleai-uagi.github.io/telemem/ (mkdocs-material, auto-deployed via GitHub Pages).
- LongMemEval evaluation harness:
baselines/longmemeval/run_telemem.py(experimental; results pending).
- Moved the research/evaluation variant of
TeleMemoryout of the shipped package:telemem/main.py→baselines/telemem/telemem_legacy.py. It backs the ZH-4O benchmark harness (online_query,offline_build_graph_json) and needstenacity/pytz, which are not core dependencies. Also fixed the brokeneval.pyimport in the TeleMem baseline.
- mem0-compatible return values:
Memory.add()/add_batch()now return{"results": [{"id", "memory", "event"}, ...]}andMemory.search()returns{"results": [...]}(previouslyaddreturnedNoneandsearchreturned a pre-joined string), makingimport telemem as mem0a true drop-in replacement. - New
telemem[video]extra. The default install is now lightweight; the video pipeline dependencies (opencv, yt-dlp, nano-vectordb, azure-identity) moved out of the core requirements.telemem[all]installs everything. telemem.mm_utilsnow exposes lazy exports (MMCoreAgent,process_video,init_single_video_db,decode_video_to_frames,extract_choice_from_msg), with a clear install hint when the video extras are missing.- GitHub Actions CI (pytest on Python 3.10–3.12 + package build check) and a tag-triggered PyPI release workflow using trusted publishing.
CONTRIBUTING.md,CITATION.cff, issue and pull-request templates.
Mem0ValidationErrorwas raised but never imported (aNameErroron invalidmessagesinput)._sync_memory_to_vector_storereturned an always-empty list due to a variable typo; stored memories are now reported back to the caller.from telemem.mm_utils import MMCoreAgent(as documented in the README) did not work becausemm_utils/__init__.pywas empty.- Importing
telememno longer mutatessys.pathor the root logging level.
- Model Context Protocol (MCP) server:
telemem-mcpwith 8 tools (add_memory,search_memories,get_memories,get_memory,update_memory,delete_memory,delete_all_memories,memory_history) over stdio / SSE / streamable-http (docs/MCP.md). - uv-managed environment with committed
uv.lock.
- Stability improvements; TeleMem Tech Report updated to v4 on arXiv.
- Core improvements; MiniMax provider support via OpenAI-compatible API.
- Memobase and RAG baselines; evaluation harness improvements.
- Initial public release: character-aware long-term memory, LLM-based semantic
clustering and deduplication, FAISS + JSON dual storage, batch writing, and
the multimodal video pipeline (
add_mm/search_mm).