Telemem

io.github.TeleAI-UAGI由 GitHub 帳號 TeleAI-UAGI 發布v1.10.1更新於 Oct 30, 2026

Long-term and multimodal memory for AI agents - character-aware, mem0-compatible, fully-local option

已驗證STDIO僅桌面知識與記憶AI 與機器學習

概覽

AI 產生的概覽

TeleMem 為助理提供長期記憶儲存:可保存事實或對話、進行語意檢索,並管理或刪除已存記憶。

可以做什麼
  • 依使用者、代理或執行範圍新增事實或對話輪次到長期記憶
  • 語意檢索記憶,回傳一段整合後的文字,並自動包含共享事件記憶
  • 列出某個範圍內的記憶,並依記憶 ID 取得單筆記憶
  • 覆寫某筆記憶的文字、刪除單筆記憶,或清空整個範圍
  • 查看某筆記憶的新增、更新、刪除變更歷史
適用情境
適合希望助理跨對話記住使用者、角色或工作階段並在之後回想的情境,包括每個角色擁有獨立記憶檔案的多角色或角色扮演設定。也適合希望記憶資料留在本機的使用者。
執行需求
以本機 Python 程序執行,可用 uvx 啟動,或透過 pip 安裝含 MCP 擴充的套件。預設需要 OPENAI_API_KEY 供 LLM 與嵌入模型使用;可透過 TELEMEM_CONFIG 指向 YAML/JSON 設定改用本機方案,例如不需 API 金鑰的 Ollama 加 FAISS 設定。TELEMEM_DEFAULT_USER_ID 可設定預設記憶範圍。
安裝前請注意
OPENAI_API_KEY 是會產生費用的憑證,除非使用完全本機的設定,記憶擷取會把對話內容傳送給所設定的 LLM 與嵌入服務。相關工具會寫入、覆寫和刪除已存資料,delete_all_memories 會清空整個範圍,需謹慎選擇範圍 ID。底層 mem0ai 套件的遙測預設關閉,但可重新開啟。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Telemem,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[圖片]

TeleMem: Building Long-Term and Multimodal Memory for Agentic AI

[arXiv] [CI] [PyPI] [GitHub Stars] [License: Apache 2.0] [Last Commit] [PRs Welcome] [MCPVault: verified]

If you find this project helpful, please give us a ⭐️ on GitHub for the latest update.

🤝 Contributions welcome! Feel free to open an issue or submit a pull request.


TeleMem is an agent memory management layer that can be used as a high-performance drop-in replacement for Mem0 with one line of code (import telemem as mem0), deeply optimized for complex scenarios involving multi-turn dialogues, character modeling, long-term information storage, and semantic retrieval.

Through its unique context-aware enhancement mechanism, TeleMem provides conversational AI with core infrastructure offering higher accuracy, faster performance, and stronger character memory capabilities.

Building upon this foundation, TeleMem implements video understanding, multimodal reasoning, and visual question answering capabilities. Through a complete pipeline of video frame extraction, caption generation, and vector database construction, AI Agents can effortlessly store, retrieve, and reason over video content just like handling text memories.

The ultimate goal of the TeleMem project is to use an agent's hindsight to improve its foresight.

TeleMem, where memory lives on and intelligence grows strong.

Why TeleMem?

  • 🎭 Character memory done right — the only open-source memory layer that automatically builds isolated, per-character memory profiles, built for role-play, companion AI, NPCs, and multi-persona assistants.
  • 🎬 Memory for video, not just text — a full video → frames → captions → vector DB pipeline with ReAct-style multi-step video QA.
  • 🏠 Fully local by default — runs end-to-end on your hardware (Qwen + FAISS); no cloud service, no paid tier, no data leaving your machine.
  • 🔌 mem0-compatible API — add() / search() accept the same arguments and return the same {"results": [...]} shapes, so existing Mem0 code keeps working.

📢 Latest Updates

  • [2026-08-15] 🎉 TeleMem v1.10.0 adds first-class DeepSeek Harness support: an opt-in Cordis/MCP patch starts TeleMem with uvx, registers all 8 memory tools under mcp__telemem__*, and securely forwards provider configuration. See the MCP server docs.
  • [2026-08-06] 🎉 TeleMem v1.9.0 is on the latest MCP standard: migrated to the official MCP Python SDK v2 (spec 2026-07-28) — all 8 tools now declare titles, behavior annotations, and structured output, while staying compatible with older MCP clients. See the MCP server docs.
  • [2026-07-11] 🎉 TeleMem v1.8.0 — the "claims = contracts" release: character-memory extraction fix, infer=False/prompt/memory_type now fully honored, offline contract test suite, telemetry disabled by default, and a multi-NPC demo!
  • [2026-06-12] 🎉 TeleMem v1.7.1 is live on the official MCP registry — run the memory server with zero install: uvx telemem! Also new: evaluation principles and a LongMemEval harness with built-in baselines.
  • [2026-06-12] 🎉 TeleMem is now on PyPI: pip install telemem! v1.6.0 adds Ollama/DeepSeek/Kimi configs, LangChain & LlamaIndex examples, and a documentation site.
  • [2026-06-12] 🎉 TeleMem v1.5.0 has been released: true mem0 drop-in API, lightweight core install, and CI!
  • [2026-06-11] 🎉 TeleMem v1.4.0 has been released with MCP support!
  • [2026-01-28] 🎉 TeleMem v1.3.0 has been released!
  • [2026-01-22] 🎉 TeleMem Tech Report has been updated to its 4th version!
  • [2026-01-13] 🎉 TeleMem Tech Report has been released on arXiv!
  • [2026-01-09] 🎉 TeleMem v1.2.0 has been released!
  • [2025-12-31] 🎉 TeleMem v1.1.0 has been released!
  • [2025-12-05] 🎉 TeleMem v1.0.0 has been released!

🔥 Research Highlights

  • Significantly improved memory accuracy: Achieved 86.33% accuracy on the ZH-4O Chinese multi-character long-dialogue benchmark, 19% higher than Mem0.
  • Doubled speed performance: Millisecond-level semantic retrieval enabled by efficient buffering and batch writing.
  • Greatly reduced token cost: Optimized token usage delivers the same performance with significantly lower LLM overhead.
  • Precise character memory preservation: Automatically builds independent memory profiles for each character, eliminating confusion.
  • Automated Video Processing Pipeline: From raw video → frame extraction → caption generation → vector database, fully automated
  • ReAct-Style Video QA: Multi-step reasoning + tool calling for precise video content understanding

📌 Table of Contents


Project Introduction

TeleMem enables conversational AI to maintain stable, natural, and continuous worldviews and character settings during long-term interactions through a deeply optimized pipeline of character-aware summarization → semantic clustering deduplication → efficient storage → precise retrieval.

mermaid
flowchart LR    A["Dialogue<br/>messages"] --> B["Character-aware<br/>summarization<br/>(global + per-character)"]    B --> C["Embedding +<br/>similar-memory<br/>retrieval"]    C --> D["Write buffer<br/>(batch flush)"]    D --> E["LLM semantic<br/>clustering & fusion"]    E --> F[("FAISS index +<br/>JSON metadata")]    Q["Query"] --> S["Vector search<br/>+ rerank"]    F --> S    S --> R["results"]

Features

  • Automatic memory extraction: Extracts and structures key facts from dialogues.
  • Semantic clustering & deduplication: Uses LLMs to semantically merge similar memories, reducing conflicts and improving consistency.
  • Character-profiled memory management: Builds independent memory archives for each character in a dialogue, ensuring precise isolation and personalized management.
  • Efficient asynchronous writing: Employs a buffer + batch-flush mechanism for high-performance, stable persistence.
  • Precise semantic retrieval: Combines FAISS + JSON dual storage for fast recall and human-readable auditability.

Applicable Scenarios

  • Multi-character virtual agent systems

  • Long-memory AI assistants (e.g., customer service, companionship, creative co-pilots)

  • Complex narrative/world-building in virtual environments

  • Dialogue scenarios with strong contextual dependencies

  • Video content QA and reasoning

  • Multimodal agent memory management

  • Long video understanding and information retrieval

    [image]


TeleMem vs Mem0: Core Advantages

TeleMem deeply refactors Mem0 to address characterization, long-term memory, and high performance. Key differences:

Capability DimensionMem0TeleMem
Multi-character separation❌ Not supported✅ Automatically creates independent memory profiles per character
Summary qualityBasic summarization✅ Context-aware + character-focused prompts covering key entities, actions, and timestamps
Deduplication mechanismVector similarity filtering✅ LLM-based semantic clustering: merges similar memories via LLM
Write performanceStreaming, single writes✅ Batch flush + concurrency: 2–3× faster writes
Storage formatSQLite / vector DB✅ FAISS + JSON metadata dual-write: fast retrieval + human-readable
Multimodal CapabilitySingle image to text only✅ Video Multimodal Memory: Full video processing pipeline + ReAct multi-step reasoning QA

Experimental Results

Dataset

We evaluate the ZH-4O Chinese long-character dialogue dataset constructed in the paper MOOM: Maintenance, Organization and Optimization of Memory in Ultra-Long Role-Playing Dialogues:

  • Average dialogue length: 600 turns per conversation
  • Scenarios: daily interactions, plot progression, evolving character relationships

Memory capability was assessed via QA benchmarks, e.g.:

json
{"question": "What is Zhao Qi's nickname for Bai Yulan? A Xiaobai B Xiaoyu C Lanlan D Yuyu","answer": "A"},{"question": "What is the relationship between Zhao Qi and Bai Yulan? A Classmates B Teacher and student C Enemies D Neighbors","answer": "B"}

Experimental Configuration


Quick Start

Installation

shell
pip install telemem            # core (text memory)pip install "telemem[mcp]"     # + MCP serverpip install "telemem[video]"   # + video/multimodal pipelinepip install "telemem[all]"     # everything

Development Environment

Using uv (recommended — creates .venv from the committed uv.lock for a reproducible environment):

shell
uv sync --all-extras   # install TeleMem (editable) + all extras, incl. MCPuv run python examples/quickstart.py

Or with conda + pip:

shell
# Create and activate virtual environmentconda create -n telemem python=3.10conda activate telemem# Install from source (editable), with the extras you needpip install -e ".[all]"

Example

Set your OpenAI API key:

shell
export OPENAI_API_KEY="your-openai-api-key"
python
# python examples/quickstart.pyimport telemem as mem0
memory = mem0.Memory()
messages = [    {"role": "user", "content": "Jordan, did you take the subway to work again today?"},    {"role": "assistant", "content": "Yes, James. The subway is much faster than driving. I leave at 7 o'clock and it's just not crowded."},    {"role": "user", "content": "Jordan, I want to try taking the subway too. Can you tell me which station is closest?"},    {"role": "assistant", "content": "Of course, James. You take Line 2 to Civic Center Station, exit from Exit A, and walk 5 minutes to the company."}]
memory.add(messages=messages, user_id="Jordan")results = memory.search("What transportation did Jordan use to go to work today?", user_id="Jordan")for hit in results["results"]:   # same result shape as mem0    print(hit["memory"])

Memory() uses the default provider settings inherited from mem0ai. To use the repository's local Qwen + FAISS configuration, load config/config.yaml explicitly:

python
from telemem.utils import load_configimport telemem as mem0
config = load_config("config/config.yaml")memory = mem0.Memory(config=config)

The runnable examples also honor the same configuration through TELEMEM_CONFIG:

shell
TELEMEM_CONFIG=config/config.yaml python examples/quickstart.py

Using MiniMax as the LLM Provider

TeleMem supports MiniMax as an LLM backend via its OpenAI-compatible API. A ready-to-use example config is provided at config/config.minimax.yaml.

shell
export MINIMAX_API_KEY="your-minimax-api-key"export OPENAI_API_KEY="your-openai-api-key"  # still needed for embeddings
python
from telemem.utils import load_configimport telemem as mem0
config = load_config("config/config.minimax.yaml")memory = mem0.Memory(config=config)

Key points for MiniMax usage:

  • LLM: MiniMax-M3.1-Flash (default) or MiniMax-M3, both with a 1,000,000-token context window and text/image/video input. Existing configs keep their explicit model IDs, including legacy and custom models.
  • Regional endpoints: use https://api.minimax.io/v1 (global) or https://api.minimax.cn/v1 (China) as openai_base_url; existing custom endpoint values are preserved.
  • Thinking: Flash always uses adaptive thinking, with max reasoning effort when omitted. The preset sets is_reasoning_model: true so mem0 forwards an optional reasoning_effort (low, medium, high, xhigh, or max) and omits its small default token cap. Flash rejects disabled thinking, reasoning_effort="none", service_tier, and reasoning_split=false. See the OpenAI-compatible API contract for details.
  • Tool history: when calling the LLM adapter directly, use mem0's response_callback to capture the complete SDK assistant message and append it with tool results on the next call. Preserve both reasoning_content and tool_calls; the adapter's simplified return value is not a complete assistant message.
  • Temperature: ignored by Flash and M3, which use a fixed value of 1.
  • Embeddings: MiniMax does not provide a public embedding API; configure a separate embedder (e.g. text-embedding-3-small) in the embedder section

More LLM Providers

TeleMem works with any OpenAI-compatible endpoint. Ready-to-use config examples ship in config/:

ProviderConfig fileLLMEmbeddingsNotes
Ollama (fully local)config.ollama.yamlany local model (e.g. qwen3:8b)nomic-embed-text, localNo API key, no cloud — everything runs on your machine
DeepSeekconfig.deepseek.yamldeepseek-chat / deepseek-reasonerexternal (e.g. OpenAI)DEEPSEEK_API_KEY + OPENAI_API_KEY
Moonshot (Kimi)config.moonshot.yamlkimi-k2-0905-previewexternal (e.g. OpenAI).cn and .ai endpoints supported
MiniMaxconfig.minimax.yamlMiniMax-M3.1-Flash / MiniMax-M3external (e.g. OpenAI)see section above
shell
TELEMEM_CONFIG=config/config.ollama.yaml python examples/quickstart.py   # 100% local memory

Project Structure

Expand/Collapse Directory Structure
telemem/├── assets/                 # Documentation assets and figures├── baselines/              # Baseline implementations for comparative evaluation│ ├── RAG                   # Retrieval-Augmented Generation baseline│ ├── MemoBase              # MemoBase memory management system│ ├── MOOM                  # MOOM dual-branch narrative memory framework│ ├── A-mem                 # A-mem agent memory baseline│ └── Mem0                  # Mem0 baseline implementation├── config/               │ ├── config.yaml           # TeleMem default configuration│ └── config.minimax.yaml   # MiniMax provider example configuration├── data/                   # Small sample datasets for evaluation or demonstration├── examples/               # Code examples and tutorial demos│ ├── quickstart.py         # Quick start│ ├── quickstart_mm.py      # Quick start (multimodal)│ ├── mcp_client.py         # Quick start over MCP (stdio client)│ ├── mcp_config.json       # MCP config snippet for Claude Desktop / Cursor│ └── deepseek-harness.cordis.yml # DeepSeek Harness memory patch├── docs/│ ├── MCP.md                # MCP server reference│ └── TeleMem_Tech_Report.pdf├── telemem/                # Telemem code│ └── mcp/                  # Model Context Protocol server├── tests/                  # Telemem test├── README.md               # English README├── README-ZH.md            # Chinese README└── pyproject.toml          # Python environment

Core Functions

Add Memory (add)

The add() method injects one or more dialogue turns into the memory system.

python
def add( self, messages, *, user_id: Optional[str] = None, agent_id: Optional[str] = None, run_id: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, infer: bool = True, memory_type: Optional[str] = None, prompt: Optional[str] = None, batch: bool = False,)
🔎 Parameter Description
ParameterTypeRequiredDescription
messagesstr or List[Dict[str, str]]✅ YesA single statement, or a list of dialogue messages with role (user/assistant) and content
user_idOptional[str]❌ NoCharacter/user to attribute the memory to; TeleMem keeps an independent memory profile per user_id. Omit it to store shared conversation-event memories
agent_id / run_idOptional[str]❌ NoAdditional mem0-compatible scopes (e.g. one run_id per session)
metadataOptional[Dict[str, Any]]❌ NoArbitrary metadata stored with each memory
inferbool❌ NoExtract salient facts with the LLM (default: True); False stores message contents verbatim with no LLM call
memory_typeOptional[str]❌ NoPass "procedural_memory" to create procedural memories via mem0's pipeline; omit for conversational memories
promptOptional[str]❌ NoCustom extraction prompt (replaces the optimized default as the system prompt)
batchbool❌ NoRoute through the high-throughput batched pipeline (add_batch)

Returns the mem0-compatible shape: {"results": [{"id": "...", "memory": "...", "event": "ADD"}, ...]}

🔁 Internal Workflow of add()
  1. Message preprocessing: Merge consecutive messages from the same speaker; normalize turn structure.
  2. Multi-perspective summarization:
    • Global event summary
    • Character 1’s perspective (actions, preferences, relationships)
    • Character 2’s perspective
  3. Vectorization & similarity search: Generate embeddings and retrieve existing similar memories.
  4. Batch processing: When buffer threshold is reached, invoke LLM to semantically merge similar memories.
  5. Persistence: Dual-write to FAISS (for retrieval) and JSON (for metadata).

🎭 Multi-character demo: examples/multi_npc.py runs five tavern NPCs through one scene — a single add_batch(scene, user_id=[...]) call gives each NPC a private memory profile plus a shared "events" world-state, and each NPC then recalls the scene from their own perspective.


Search Memory (search)

Performs semantic vector-based retrieval of relevant memories with context-aware recall.

python
def search( self, query: str, *, user_id: Optional[str] = None, agent_id: Optional[str] = None, run_id: Optional[str] = None, limit: int = 100, filters: Optional[Dict[str, Any]] = None, threshold: Optional[float] = None, rerank: bool = True,)
🔎 Parameter Description
ParameterTypeRequiredDescription
querystr✅ YesNatural language query
user_idOptional[str]❌ NoCharacter/user profile to search. The shared event memories (pseudo-user "events") are always searched as well
agent_id / run_idOptional[str]❌ NoAdditional mem0-compatible scope filters
limitint❌ NoMax number of results (default: 100)
thresholdOptional[float]❌ NoSimilarity threshold (0–1; auto-tuned if omitted)
filtersDict[str, Any]❌ NoCustom filters (e.g., by character, time range)
rerankbool❌ NoWhether to rerank results (default: True)

Returns the mem0-compatible shape: {"results": [{"id": "...", "memory": "...", "score": ..., ...}, ...]}

🔍 Search is based on FAISS vector retrieval, supporting millisecond-level responses.


Multimodal Extensions

Beyond text memory, TeleMem further extends multimodal capabilities. Drawing inspiration from Deep Video Discovery's Agentic Search and Tool Use approach, we implemented two core methods in the TeleMemory class to support intelligent storage and semantic retrieval of video content.

MethodDescription
add_mm()Process video into retrievable memory (frame extraction → caption generation → vector database)
search_mm()Query video content using natural language, supporting ReAct-style multi-step reasoning

Add Multimodal Memory (add_mm)

python
def add_mm(    self,    video_path: str,    output_dir: str,    clip_secs: int | None = None,    emb_dim: int | None = None,    subtitle_path: str | None = None,)
🔎 Parameter Description
ParameterTypeRequiredDescription
video_pathstr✅ YesSource video file path, e.g., "video/3EQLFHRHpag.mp4"
output_dirstr✅ YesRoot output directory. Artifacts are written under frames/, captions/, and vdb/ subdirectories
clip_secsint❌ NoReserved parameter; clip length is currently read from config.vlm["CLIP_SECS"]
emb_dimint❌ NoEmbedding dimension, reads from config by default
subtitle_pathstr❌ NoSubtitle file path (.srt), optional
🔁 add_mm() Internal Flow
  1. Frame Extraction: decode_video_to_frames - Decodes video to JPEG frames at configured FPS
  2. Caption Generation: process_video - Uses VLM (e.g., Qwen3-Omni) to generate detailed descriptions for each clip
  3. Vector Database Construction: init_single_video_db - Generates embeddings for semantic retrieval

💡 Smart Caching: If the target file for a stage already exists, that stage is automatically skipped to save computational resources.

Return Value Example
python
{    "output_dir": "/abs/path/to/output_dir"}

Search Multimodal Memory (search_mm)

python
def search_mm(    self,    question: str,    output_dir: str,    max_iterations: int = 15,)
🔎 Parameter Description
ParameterTypeRequiredDescription
questionstr✅ YesQuestion string (supports A/B/C/D multiple choice format)
output_dirstr✅ YesThe same root output directory used by add_mm; it must contain exactly one captions/*/captions.json and one vdb/*/*_vdb.json
max_iterationsint❌ NoMaximum MMCoreAgent reasoning iterations (default 15)
🛠️ ReAct-Style Reasoning Tools

search_mm internally uses MMCoreAgent, employing a THINK → ACTION → OBSERVATION loop with three specialized tools:

Tool NameFunction
global_browse_toolGet global overview of video events and themes
clip_search_toolSearch for specific content using semantic queries
frame_inspect_toolInspect frame details within a specific time range

Multimodal Example

Run the multimodal demo:

bash
python examples/quickstart_mm.py

On the first run, frames, captions and VDB JSON will be generated under the chosen output_dir. The repository ships a small sample video; generating captions and the video database still requires configured VLM and embedding services unless you already have these artifacts locally.

Complete code example:

python
import telemem as mem0from pathlib import Pathfrom telemem.mm_utils.core import extract_choice_from_msg
# Initializememory = mem0.Memory()
# Define pathsrepo_root = Path(__file__).resolve().parents[1]video_path = repo_root / "data" / "samples" / "video" / "3EQLFHRHpag.mp4"video_name = video_path.stemoutput_dir = video_path.parent

# Step 1: Add video to memory (auto-processing)vdb_json_path = output_dir / "vdb" / video_name / f"{video_name}_vdb.json"if not vdb_json_path.exists():    result = memory.add_mm(        video_path=str(video_path),        output_dir=str(output_dir),    )    print(f"Video processing complete: {result}")else:    print(f"VDB already exists: {vdb_json_path}")
# Step 2: Query video contentquestion = """The problems people encounter in the video are caused by what?(A) Catastrophic weather.(B) Global warming.(C) Financial crisis.(D) Oil crisis."""
messages = memory.search_mm(    question=question,    output_dir=str(output_dir),    max_iterations=15,)
# Extract final answeranswer = extract_choice_from_msg(messages)print(f"Answer: ({answer})")

MCP Server

[MCPVault: verified]

TeleMem ships a Model Context Protocol (MCP) server, so any MCP-compatible client — Claude Desktop, Claude Code, Cursor, custom agents — can use TeleMem as its long-term memory.

shell
pip install telemem
telemem-mcp                                      # stdio (default)telemem-mcp --transport streamable-http          # Streamable HTTP on :8421TELEMEM_CONFIG=config/config.yaml telemem-mcp    # custom TeleMem configuvx telemem                                      # zero-install run (stdio)

Built on the official MCP Python SDK v2, the server implements the current MCP specification (2026-07-28) while remaining compatible with older clients; every tool declares titles, behavior annotations (read-only/destructive hints), and structured output.

The server exposes eight tools: add_memory, search_memories, get_memories, get_memory, update_memory, delete_memory, delete_all_memories, and memory_history. Calls without an explicit scope default to TELEMEM_DEFAULT_USER_ID (telemem-mcp); destructive bulk deletion always requires an explicit scope.

Claude Desktop / Cursor configuration (examples/mcp_config.json):

json
{  "mcpServers": {    "telemem": {      "command": "telemem-mcp",      "env": {        "TELEMEM_CONFIG": "/absolute/path/to/config/config.yaml",        "OPENAI_API_KEY": "sk-..."      }    }  }}

Or drive it programmatically over stdio — the quickstart flow as MCP tool calls:

shell
python examples/mcp_client.py

See docs/MCP.md for the full tool reference, transports, and client setup.


Framework Integrations

TeleMem drops into any agent framework with the same two calls — search() before answering, add() after each exchange:

FrameworkExampleInstall
LangChainexamples/langchain_memory.pypip install langchain-core langchain-openai
LlamaIndexexamples/llamaindex_memory.pypip install llama-index-llms-openai
Claude Desktop / Cursor / any MCP clientMCP Serverpip install "telemem[mcp]"

Because TeleMem is mem0 API-compatible, any framework adapter written for Mem0's OSS client also works — point it at telemem.Memory instead.


Data Storage

Text Memory Storage

TeleMem automatically creates a structured storage layout under ./faiss_db/, organized by session and character:

faiss_db/├── session_001_events.index├── session_001_events_meta.json ├── session_001_person_1.index ├── session_001_person_1_meta.json ├── session_001_person_2.index └── session_001_person_2_meta.json 

📄 Metadata Example (_meta.json)

json
{ "summary": "Characters discussed the upcoming action plan.", "sample_id": "session_001", "round_index": 3, "timestamp": "2024-01-01T00:00:00Z", "user": "Jordan" // Only present in person_*.json}

All memories include summary, round number, timestamp, and character, facilitating auditing and debugging.


Multimodal Memory Storage

TeleMem generates video-related storage files in the .data/samples/video/ directory:

video/├── frames/│   └── <video_name>/│       └── frames/│           ├── frame_000001_n0.00.jpg│           ├── frame_000002_n0.50.jpg│           └── ...├── captions/│   └── <video_name>/│       ├── captions.json          # Clip descriptions + subject registry│       └── ckpt/                  # Checkpoint for resume│           ├── 0_10.json│           └── 10_20.json└── vdb/    └── <video_name>/        └── <video_name>_vdb.json  # Semantic retrieval vector database
📄 captions.json Structure
json
{    "0_10": {        "caption": "The narrator discusses climate data, showing melting glaciers..."    },    "10_20": {        "caption": "Scene shifts to coastal communities affected by rising sea levels..."    },    "subject_registry": {        "narrator": {            "name": "narrator",            "appearance": ["professional attire"],            "identity": ["climate scientist"],            "first_seen": "00:00:00"        }    }}

Telemetry & Privacy

TeleMem itself collects no telemetry. The underlying mem0ai library ships anonymized PostHog usage telemetry, which TeleMem disables by default (import telemem sets MEM0_TELEMETRY=False unless you have already set it). To opt back in:

bash
export MEM0_TELEMETRY=true

Development and Contribution

  • Issues and pull requests are welcome — see the Contributing Guide to get started.
  • Changes between releases are tracked in the Changelog.
  • CI runs the offline test suite (uv run pytest tests/ -q) on Python 3.10–3.12 for every PR.
  • Chinese documentation: README-ZH.md

License

Apache 2.0 License


Acknowledgements

TeleMem’s development has been deeply inspired by open-source communities and cutting-edge research. We extend our sincere gratitude to the following projects and teams:


📑 Citation

If you find TeleMem useful to your research or development, please cite our arXiv paper:

Chunliang Chen, Ming Guan, Xiao Lin, Jiaxu Li, Luxi Lin, Qiyi Wang, Xiangyu Chen, Jixiang Luo, Changzhi Sun, Dell Zhang, Xuelong Li. TeleMem: Building Long-Term and Multimodal Memory for Agentic AI. arXiv:2601.06037, 2026. https://arxiv.org/abs/2601.06037

bibtex
@article{chen2026telemem,  title   = {TeleMem: Building Long-Term and Multimodal Memory for Agentic AI},  author  = {Chen, Chunliang and Guan, Ming and Lin, Xiao and Li, Jiaxu and Lin, Luxi and Wang, Qiyi and Chen, Xiangyu and Luo, Jixiang and Sun, Changzhi and Zhang, Dell and Li, Xuelong},  journal = {arXiv preprint arXiv:2601.06037},  year    = {2026},  url     = {https://arxiv.org/abs/2601.06037}}

Citation metadata is also available in CITATION.cff (GitHub's "Cite this repository" button).


If you find this project helpful, please give it a ⭐️ — starring also keeps updates in your GitHub feed.

Made with ❤️ by Bloo-Mind AI Ltd and the Ubiquitous AGI team at TeleAI.

mcp-name: io.github.TeleAI-UAGI/telemem

來源:README.md,提交 97fd2b9

工具

8

add_memory

Add memory

Store a fact, preference, or conversation in TeleMem long-term memory. Provide `text` for a single statement or `messages` for conversation turns. Scoped by user_id/agent_id/run_id; defaults to the server's default user.

輸入參數textinferrun_iduser_idagent_idmessagesmetadata

search_memories

Search memories

Semantic search over TeleMem memories. Returns the matching memories as one consolidated text passage (TeleMem fuses related memories). Shared event memories (pseudo-user "events") are searched automatically.

輸入參數limitquery必填run_iduser_idagent_idthreshold

get_memories

List memories

List stored memories for a user/agent/run with their memory_ids. Use user_id "events" to list shared conversation-event memories.

輸入參數limitrun_iduser_idagent_id

get_memory

Get memory

Fetch a single memory by its memory_id.

輸入參數memory_id必填

update_memory

Update memory

Overwrite the text of an existing memory by memory_id.

輸入參數text必填metadatamemory_id必填

delete_memory

Delete memory

Delete a single memory by memory_id.

輸入參數memory_id必填

delete_all_memories

Delete all memories in scope

Delete every memory in the given scope. Destructive: requires an explicit user_id, agent_id, or run_id — the default user is never assumed.

輸入參數run_iduser_idagent_id

memory_history

Memory history

Show the change history (ADD/UPDATE/DELETE events) of a memory.

輸入參數memory_id必填

版本歷史

2
  1. v1.10.1最新Oct 23, 2026
  2. v1.10.0Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分