Doramagic Project Pack · Human Manual
MemOS
Self-evolving memory OS for LLM & AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings
MemOS Overview and Architecture
Related topics: Core Memory System: MemCube, Textual/Activation/Parametric Memory, Scheduler and Retrieval, Deployment, Configuration, Evaluation, and Operations
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Related Pages
Related topics: Core Memory System: MemCube, Textual/Activation/Parametric Memory, Scheduler and Retrieval, Deployment, Configuration, Evaluation, and Operations
MemOS Overview and Architecture
Purpose and Scope
MemOS is a Memory Operating System for LLMs and AI agents. It unifies the store/retrieve/manage loop for long-term memory and enables context-aware, personalized interactions with knowledge bases, multi-modal memory, tool memory, and enterprise-grade optimizations. According to README.md, MemOS positions itself around five pillars:
- Unified Memory API — a single API to add, retrieve, edit, and delete memory, structured as a graph (inspectable and editable, not a black-box embedding store).
- Multi-Modal Memory — native support for text, images, tool traces, and personas, retrieved and reasoned together.
- Multi-Cube Knowledge Base Management — composable memory cubes with isolation, controlled sharing, and dynamic composition across users, projects, and agents.
- Asynchronous Ingestion via MemScheduler — millisecond-level latency for production stability under high concurrency.
- Memory Feedback & Correction — natural-language feedback to refine, supplement, or replace existing memories.
The project ships a benchmarked advantage on LoCoMo (75.80), LongMemEval (+40.43%), PrefEval-10 (+2568%), and PersonaMem (+40.75%) versus baseline, with ~35.24% token savings (README.md).
Core Architecture
MemOS is delivered as a monorepo with three production tracks that share a common conceptual model: the Python MemOS core, the local TypeScript plugin (memos-local-plugin), and the OpenClaw gateway plugin (memos-local-openclaw-plugin).
graph TB
subgraph "Cloud Track"
CloudAPI[MemOS Cloud API<br/>memos.openmem.net]
end
subgraph "Local Track"
CorePy[MemOS Core · Python<br/>src/memos/*]
Cube[MemCube<br/>composable KB units]
PluginMgr[Plugin Manager<br/>entry-point discovery]
end
subgraph "Local Plugin · TypeScript"
L1[L1 Traces<br/>episodes + tags]
L2[L2 Policies<br/>cross-task induction]
L3[L3 World Model<br/>abstractions]
Skill[Skill Crystallization<br/>Tier-1 retrieval]
Retrieval[Hybrid Retrieval<br/>vec + FTS5 + pattern]
Feedback[Feedback + Decision Repair]
end
subgraph "Agent Adapters"
OpenClaw[memos-local-openclaw<br/>OpenClaw lifecycle hooks]
Hermes[Hermes Agent adapter]
end
CloudAPI --> CorePy
CorePy --> Cube
CorePy --> PluginMgr
PluginMgr -.registers.-> Dream[dream plugin]
OpenClaw --> L1
OpenClaw --> L2
OpenClaw --> L3
OpenClaw --> Skill
OpenClaw --> Retrieval
Hermes --> L1
Retrieval --> FeedbackPython Core and Plugin System
The Python core lives under src/memos/. The plugin framework is described in src/memos/plugins/README.md and consists of:
base.py—MemOSPluginbase classmanager.py— discovery, loading, and initializationhooks.py/hook_defs.py— hook registration and core hook constantscomponent_bootstrap.py— runtime context bootstrap helpers
Plugins are discovered through a Python entry-point group (memos.plugins); the built-in dream plugin is registered as memos.dream:CommunityDreamPlugin. At startup, PluginManager loads installed entry points, keeps the highest-priority implementation when multiple providers expose the same logical name, and initializes enabled plugins. Source: src/memos/plugins/README.md.
Local Plugin (`memos-local-plugin`)
The local track is a Node/TypeScript package declared in apps/memos-local-plugin/package.json as @memtensor/memos-local-plugin v2.0.x. Its description names the architecture: "Reflect2Evolve memory plugin: layered L1/L2/L3 memory, reflection-weighted value backprop, cross-task policy induction, skill crystallization, three-tier retrieval. Adapters for OpenClaw and Hermes Agent via a shared algorithm core."
The retrieval module implements a three-channel hybrid recall (per apps/memos-local-plugin/core/retrieval/README.md):
| Channel | Source | Purpose |
|---|---|---|
vec_summary / vec_action | cosine on traces.vec_* | Semantic recall on what was said and what tools were called |
vec (skills, world model) | cosine | Tier-1 / Tier-3 semantic recall |
fts | FTS5 trigram MATCH | Keyword-precise hits, English + CJK ≥ 3 chars |
pattern | LIKE %term% | CJK bigrams and 2-char ASCII that fall below the trigram window |
structural | instr(error_signatures_json, ...) | Verbatim error-signature replay |
Per-channel results are fused with a Reciprocal Rank Fusion (RRF) score: 1 / (k + rank_i + 1). A hit confirmed by both vector and FTS channels gets a noticeably higher RRF, plugging the single-channel-false-positive hole of pure cosine retrieval. An adaptive relevance floor drops candidates below topRelevance · relativeThresholdFloor (default 0.4) before a smart-seed MMR diversifies the result set. Source: apps/memos-local-plugin/core/retrieval/README.md.
The LLM layer (apps/memos-local-plugin/core/llm/README.md) exposes five real providers behind a single LlmClient facade: openai_compatible, anthropic, gemini, bedrock, and host (delegates to the OpenClaw host). A sixth sentinel, local_only, always throws LLM_UNAVAILABLE to explicitly disable LLM calls. All providers share the same surface for text, parsed JSON, and streaming output.
Memory Layers
The local plugin organizes memory into three layers, each with its own directory and lifecycle:
- L1 — Traces. Per apps/memos-local-plugin/core/memory/l1/README.md, L1 is "storage + a few cheap write-time enrichments" (tags, error signatures). Every finalized episode produces ≥ 1 L1 trace regardless of reward or capture success, so the timeline is never empty.
- L2 — Policies and L3 — World Model are algorithm-heavy: each owns a subscriber, an inducer, and a lifecycle. The L2 policy boundary carries an inline
@repair {json}tag so the skill packager picks up feedback-derived guidance during the next crystallization (apps/memos-local-plugin/core/feedback/README.md). - Skills. Crystallized, prompt-ready procedures. Per apps/memos-local-plugin/core/skill/README.md,
applyFeedbackis the single state-transition function:trial.passmoves a probationary skill to active,trial.failretires it,user.positiverevives a retired skill, anduser.negativepushes it back to retired. Reliability is tracked with a Beta posterior(passed+1)/(attempts+2).
Agent Adapters and OpenClaw Integration
The OpenClaw-facing plugin (apps/memos-local-openclaw/package.json, v1.0.9-beta) is declared as a memory extension with installDependencies: true and ships a memos-memory-guide skill. A separate openwork-memos-integration app demonstrates desktop usage.
Deployment Options
README.md lists four deployment modes: Cloud API (hosted at memos.openmem.net), Self-Hosted (Docker), Quick Mode (lightweight), and Full Mode (complete). Runnable examples for each module live under examples/ and span embedders, LLMs, chunkers, rerankers, graph databases, textual memory helpers, the dream pipeline, and MemCube load/dump flows (examples/README.md).
Community-Relevant Concerns
Several active discussions map directly onto the architecture above:
- Multi-agent isolation (issues #1361, #1318):
patternSearchhistorically lacked anownerFilter, letting one agent read another's short CJK queries. The currentmemory_searchtool must therefore enforce an owner scope, and the hybrid channels (FTS5 + pattern) are precisely the surface where the bug surfaced. - CJK search quality (issue #1961): The built-in FTS5 tokenizer cannot match 2-character Chinese words, so the
patternchannel exists as aLIKEfallback for CJK bigrams; see the channel table above. A configurable FTS5 tokenizer is the proposed fix to widen that window. - Local providers (issue #1231): Users want native
ollamasupport inmemos-local-openclawfor both embedding and summarization, complementing the existingopenai_compatibleprovider in apps/memos-local-plugin/core/llm/README.md. - Self-hosted Cloud API (issue #1433): The OpenClaw plugin currently targets the managed Cloud; exposing a self-hosted MemOS API endpoint is an open feature request.
See Also
- MemOS Plugin System (
src/memos/plugins/README.md) - Retrieval Algorithms (
apps/memos-local-plugin/core/retrieval/README.md) - L1 Traces (
apps/memos-local-plugin/core/memory/l1/README.md) - Skill Crystallization (
apps/memos-local-plugin/core/skill/README.md) - Feedback & Decision Repair (
apps/memos-local-plugin/core/feedback/README.md) - LLM Layer (
apps/memos-local-plugin/core/llm/README.md) - Examples Index (
examples/README.md)
Source: https://github.com/MemTensor/MemOS / Human Manual
Core Memory System: MemCube, Textual/Activation/Parametric Memory, Scheduler and Retrieval
Related topics: MemOS Overview and Architecture, Local Plugins: memos-local-plugin and memos-local-openclaw for Hermes/OpenClaw, Deployment, Configuration, Evaluation, and Operations
Continue reading this section for the full explanation and source context.
Related Pages
Related topics: MemOS Overview and Architecture, Local Plugins: memos-local-plugin and memos-local-openclaw for Hermes/OpenClaw, Deployment, Configuration, Evaluation, and Operations
Core Memory System: MemCube, Textual/Activation/Parametric Memory, Scheduler and Retrieval
Overview
MemOS (Memory Operating System) is an open-source memory layer for LLM applications. The core memory system exposes a single, graph-structured API for adding, retrieving, editing, and deleting memory, treating memory as an inspectable resource rather than a black-box embedding store. Source: README.md:31-40.
The system is organized around three orthogonal axes:
- Memory container:
MemCubeand the newSingleCubeView/CompositeCubeViewfacades. - Memory type: textual (graph + tree), activation (KV cache), and parametric (LoRA adapters).
- Lifecycle infrastructure:
MemSchedulerfor async ingestion and a pipeline-based retriever with hooks for context rendering.
flowchart TB
User[User / Agent] --> API[MemOS API Layer]
API --> View{SingleCubeView<br/>or CompositeCubeView}
View --> TextMem[Textual Memory<br/>graph + tree]
View --> ActMem[Activation Memory<br/>KV cache]
View --> ParaMem[Parametric Memory<br/>LoRA]
API --> Sched[MemScheduler<br/>Redis Streams + queues]
Sched --> Ingest[Async Ingestion Workers]
API --> Retr[Retrieval Pipeline]
Retr --> Hooks[Search Pipeline Hooks]
Retr --> Context[Rendered Context]
TextMem -. feedback .-> FB[Feedback Bus]
FB --> SchedMemCube: The Composable Memory Container
MemCube is the unit of memory packaging in MemOS. A MemCube is a typed configuration object — for example memos.configs.mem_cube.GeneralMemCubeConfig — that bundles textual, activation, and parametric memory into one addressable artifact. Source: examples/data/mem_cube_2/README.md:1-1.
The legacy load path is GeneralMemCube.init_from_dir(<path>), but the current best practice is to initialize the server with init_server() from memos.api.handlers, then operate on cubes through SingleCubeView (one cube) or CompositeCubeView (multiple cubes combined). The View layer unifies the API, normalizes the result format with cube_id tracking, and integrates cleanly with the MemOS Server. Source: examples/mem_cube/_deprecated/README.md:11-31.
Multi-cube management is a first-class feature: knowledge bases can be isolated, shared, and composed dynamically across users, projects, and agents. The examples/mem_cube/ directory demonstrates load/dump patterns and the lazy/remote cube resolvers. Source: examples/README.md:9-10.
Three Memory Types
MemOS distinguishes three memory substrates, each tuned for a different access pattern:
| Type | Substrate | Use case | Search style |
|---|---|---|---|
| Textual | Graph + plaintext tree | Long-term facts, preferences, conversations | Hybrid FTS5 + vector; graph traversal |
| Activation | KV cache (prefix-prefilled state) | Fast LLM warm-start, prompt continuation | Direct concatenation via concat_cache |
| Parametric | LoRA adapters (MemReader) | Distilled skill/knowledge baked into weights | Adapter loading at inference |
Textual memory is the inspectable backbone — exposed as a graph and editable through the unified API, not hidden behind embeddings. Source: README.md:31-32.
Activation memory stores KV-cache fragments so the model can resume near-instantly from prior context; the concat_cache method stitches them back together. Source: README.md:88-96.
Parametric memory materializes extracted knowledge as LoRA adapters via MemReader, giving a deployable model delta that does not need retrieval at inference. Source: README.md:7-12.
In the local-plugin stack, these are mirrored by a four-layer algorithm core: L1 trace (step-level grounded records), L2 policy (sub-task strategies), L3 world model (compressed environmental cognition), and crystallized Skills. Source: apps/memos-local-plugin/README.md:11-19.
MemScheduler: Asynchronous Ingestion
MemScheduler runs memory operations asynchronously to keep write latency in the millisecond range under production concurrency. The implementation is built on Redis Streams with isolated queues, supports task priority, auto-recovery, and quota-based scheduling. Source: README.md:18-21.
Scheduler tasks can be observed through a stage log (added in v2.0.15) and can target any of the three memory types. As of v2.0.15, the default LLM used by the scheduler was switched to general_llm for broader model compatibility. Source: release notes for v2.0.10–v2.0.15.
The examples/mem_scheduler/ folder contains Redis-backed asynchronous memory workflow examples. Source: examples/README.md:13-13.
Retrieval & Search Pipeline
The retrieval layer is a pipeline of stages that can be extended with hooks. The most recent refactor (v2.0.20, PR #1924) added search pipeline hooks for context rendering, allowing custom stages to run before the final context is injected into the LLM. Source: Release v2.0.20.
The default stages combine FTS5 keyword search with vector similarity and graph traversal over textual memory; they can be augmented with web search (e.g., BochaAISearchRetriever), which became part of the standard pipeline in v1.0.0. Source: README.md:88-96.
Known limitations that influence the retriever:
- The default FTS5 tokenizer drops 2-character CJK tokens and mixed ASCII+CJK tokens below its trigram window, which motivated a configurable tokenizer feature request (#1961).
- In the local plugin's
memory_searchtool,patternSearchhistorically did not apply anownerFilter, which caused memory-isolation leaks across agents in multi-agent setups (#1361) and a hardcodedagent:maindefault (#1318). Both have been patched in later releases and should be reviewed when deploying multi-agent topologies.
Configuration & Extensibility
MemOS exposes its plugin framework under src/memos/plugins/, with MemOSPlugin as the base class, PluginManager handling discovery via the memos.plugins entry-point group, and hooks.py / hook_defs.py providing the Hook runtime. The built-in dream plugin is a reference implementation registered as memos.dream:CommunityDreamPlugin. Source: src/memos/plugins/README.md:8-39.
For LLM access inside the local-plugin algorithm core, a LlmClient facade wraps five real providers (openai_compatible, anthropic, gemini, bedrock, host) plus a local_only sentinel that throws LLM_UNAVAILABLE. All algorithm steps — reflection, reward, induction, decision-repair, skill crystallization — go through this facade. Source: apps/memos-local-plugin/core/llm/README.md:1-21.
Feedback flows through a dedicated SkillEventBus and a FeedbackEventBus, with Beta-posterior eta updates driving skill lifecycle transitions (probationary → active → retired). Source: apps/memos-local-plugin/core/skill/README.md:21-39 and apps/memos-local-plugin/core/feedback/README.md:11-22.
See Also
- README.md — project overview, deployment options, and release history.
- src/memos/plugins/README.md — plugin architecture and Hook runtime.
- examples/README.md — runnable examples for
mem_cube,mem_scheduler,mem_reader,mem_chat, andmem_mcp. - apps/memos-local-plugin/README.md — Reflect2Evolve layered memory (L1/L2/L3 + Skills).
- Release v2.0.20 — search pipeline hooks for context rendering.
Source: https://github.com/MemTensor/MemOS / Human Manual
Local Plugins: memos-local-plugin and memos-local-openclaw for Hermes/OpenClaw
Related topics: MemOS Overview and Architecture, Core Memory System: MemCube, Textual/Activation/Parametric Memory, Scheduler and Retrieval
Continue reading this section for the full explanation and source context.
Related Pages
Related topics: MemOS Overview and Architecture, Core Memory System: MemCube, Textual/Activation/Parametric Memory, Scheduler and Retrieval
Local Plugins: memos-local-plugin and memos-local-openclaw for Hermes/OpenClaw
1. Overview and Scope
MemOS ships two distinct "local" memory plugins aimed at agent runtimes that need on-device, self-contained memory without a cloud dependency:
- memos-local-plugin (v2.x) — a unified, adapter-driven memory core that powers both OpenClaw and Hermes Agent. Its npm package is named
@memtensor/memos-local-plugin, and the project tagline is "Reflect2Evolve memory plugin: layered L1/L2/L3 memory, reflection-weighted value backprop, cross-task policy induction, skill crystallization, three-tier retrieval." Source: apps/memos-local-plugin/package.json. - memos-local-openclaw-plugin (v1.x) — a dedicated OpenClaw-only plugin that advertises "full-write, hybrid-recall, progressive retrieval" and is published as
@memtensor/memos-local-openclaw-plugin. Source: apps/memos-local-openclaw/package.json.
Both are positioned under the broader MemOS v2.0 "Stardust" release line and its follow-up local-plugin releases that emphasize 100% local operation, hybrid FTS5 + vector retrieval, smart deduplication, and tiered skill evolution. Source: README.md.
The two plugins are not interchangeable. The local-plugin is a cross-runtime algorithm core that talks to OpenClaw and Hermes through thin adapters over stdio JSON-RPC 2.0. The local-openclaw-plugin is a single-runtime OpenClaw extension with its own retrieval, embedding, and viewer stack. The README of the root project frames them as siblings: "One core powers self-evolving memory across L1 traces, L2 policies, L3 world models, and crystallized Skills." Source: README.md.
2. Architecture: Shared Core Plus Thin Adapters
The newer memos-local-plugin centralizes the algorithm in a TypeScript core and exposes it to agents through two adapters. The Hermes adapter is documented in detail:
"Hermes is a Python-based agent. The core ofmemos-local-pluginis written in TypeScript and runs on Node.js. This adapter bridges the two … The Python side is stateless — everyMemoryProvidermethod is a thin proxy that translates to a JSON-RPC call. All algorithm logic (L1/L2/L3, skills, retrieval, feedback, decision repair) lives in the shared TS core." Source: apps/memos-local-plugin/adapters/hermes/README.md.
The bridge exposes a clear protocol surface: session.open, turn.start, turn.end, events.notify, and logs.forward are the documented JSON-RPC methods. The OpenClaw side mirrors this pattern but speaks the OpenClaw lifecycle hooks directly instead of Python's MemoryProvider. Source: apps/memos-local-plugin/adapters/hermes/README.md.
flowchart LR
subgraph Agents
H[Hermes Agent<br/>Python]
O[OpenClaw<br/>Gateway]
end
subgraph Local Plugin Core
TS[memos-local-plugin<br/>TypeScript core<br/>L1/L2/L3 + Skills]
BR[node bridge.cts<br/>JSON-RPC 2.0]
end
subgraph Storage
SQL[(SQLite + FTS5<br/>traces / policies /<br/>skills / world model)]
end
H -- stdio JSON-RPC --> BR
O -- openclaw hooks --> TS
BR --> TS
TS <--> SQLThe memos-local-openclaw-plugin is a simpler shape: it is declared in its own package.json as a Node module whose entry is index.ts, ships its own skill/memos-memory-guide, and registers itself as the OpenClaw plugin id memos-local-openclaw-plugin. Source: apps/memos-local-openclaw/package.json.
3. Memory Layers and Algorithms
The memos-local-plugin core organizes memory into three layers, plus a crystallized "Skill" tier:
- L1 traces — episodic records of user/assistant turns and tool calls. The retrieval layer indexes two vector columns per trace:
vec_summary(semantic recall on what was said) andvec_action(semantic recall on the agent's action/tool sequence). Source: apps/memos-local-plugin/core/retrieval/README.md. - L2 policies — inductive guidance distilled from traces. The skill module documents that policies carry repair guidance inline via a compact
@repair {json}tag insidepolicy.boundary, which the skill packager picks up on the next crystallization. Source: apps/memos-local-plugin/core/skill/README.md. - L3 world model — a longer-horizon model that participates in Tier-3 vector retrieval via
world_model.vec. Source: apps/memos-local-plugin/core/retrieval/README.md. - Skills — crystallized procedures. Each
SkillRowcontainsprocedureJson, aninvocationGuidefor the system prompt, a learnedetavalue, avecembedding, andsourcePolicyIds. Lifecycle is driven byapplySkillFeedback, with state transitions such asprobationary → activeontrial.passandany → retiredwhenηfalls belowretireEta. Source: apps/memos-local-plugin/core/skill/README.md.
The core/feedback module adds a decision_repairs table that anchors repairs by context_hash and stores preference / anti_pattern guidance, with a validated flag gating downstream use. Source: apps/memos-local-plugin/core/feedback/README.md.
4. Retrieval: Hybrid Channels with Reciprocal Rank Fusion
The retrieval layer fuses multiple channels into a single ranking:
| Channel | Source | Purpose |
|---|---|---|
vec_summary | traces cosine | Semantic recall on conversation content |
vec_action | traces cosine | Semantic recall on tool / action sequences |
vec | skills, world_model cosine | Tier-1 / Tier-3 semantic recall |
fts | FTS5 trigram MATCH | Keyword-precise hits, English + CJK ≥ 3 chars |
pattern | LIKE %term% (CJK bigrams + 2-char ASCII) | Short Chinese names/verbs below the trigram window |
structural | instr(error_signatures_json, ...) | Verbatim error-signature replay |
The ranker applies Reciprocal Rank Fusion: a row confirmed by both vector and FTS gets a noticeably higher RRF than either channel alone. After RRF, an adaptive relevance threshold drops every candidate below topRelevance · relativeThresholdFloor (default 0.4). Source: apps/memos-local-plugin/core/retrieval/README.md.
A known limitation surfaced by the community is that the built-in FTS5 tokenizer is weak for CJK: 2-character Chinese words fall below the 3-character trigram minimum, and mixed ASCII+CJK tokens misbehave. The community is tracking a "configurable FTS5 tokenizer for better CJK search" enhancement. Source: community issue #1961 (referenced in the conversation context).
5. LLM Layer and Configuration
The core/llm module exposes one LlmClient facade with five real providers (openai_compatible, anthropic, gemini, bedrock, host) plus two sentinels (local_only always throws LLM_UNAVAILABLE). The openai_compatible provider supports both native JSON mode (json_object) and SSE streaming, and works with OpenAI, Azure, Zhipu, SiliconFlow, and Bailian. Source: apps/memos-local-plugin/core/llm/README.md.
Every LLM-dependent algorithm step — reflection, reward scoring, induction, decision-repair, and skill crystallization — must go through this facade; providers are not exported outside core/llm. Source: apps/memos-local-plugin/core/llm/README.md.
6. Community Considerations and Known Gaps
Several community threads target these plugins directly:
- Multi-agent isolation — Issue #1361 reports that
patternSearchinmemos-local-openclaw-pluginv4.x was missing anownerFilter, leaking memories across agents; this was partially addressed in v2.0.13 by scoping sharing state byhubInstanceIdand fixing owner defaults. Sources: release notes for v2.0.13 and v2.0.12. - Hardcoded owner — Issue #1318 flagged that
memory_searchdefaulted the owner toagent:maininstead of the current agent, and issue #1433 requests self-hosted MemOS API support in the OpenClaw plugin. - Local LLM providers — Issue #1231 requests native
ollamaprovider support for embedding and summarizer inmemos-local-openclawto enable truly local deployments. - Hermes coverage — Issue #1472 requests a dedicated Hermes Agent MCP plugin, while the current Hermes coverage comes from the JSON-RPC bridge in
adapters/hermes/.
Both plugins share the same MemOS plugin discovery mechanism used by the core server: plugins register under the memos.plugins entry-point group and are loaded by PluginManager at startup. Source: src/memos/plugins/README.md.
See Also
- Plugin System (core)
- Memory Layers and Reflect2Evolve
- Hybrid Retrieval (FTS5 + Vector)
- LLM Provider Abstraction
Source: https://github.com/MemTensor/MemOS / Human Manual
Deployment, Configuration, Evaluation, and Operations
Related topics: MemOS Overview and Architecture, Core Memory System: MemCube, Textual/Activation/Parametric Memory, Scheduler and Retrieval, Local Plugins: memos-local-plugin and memos-loc...
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Related Pages
Related topics: MemOS Overview and Architecture, Core Memory System: MemCube, Textual/Activation/Parametric Memory, Scheduler and Retrieval, Local Plugins: memos-local-plugin and memos-local-openclaw for Hermes/OpenClaw
Deployment, Configuration, Evaluation, and Operations
Overview
MemOS is a memory operating system for large language models. Beyond its core memory APIs, the project ships a complete operational surface — multiple deployment modes, a layered configuration system, pluggable LLM and embedding providers, a desktop integration, and a local plugin aimed at agent runtimes. This page covers how those pieces fit together for operators and integrators. Source: README.md
Deployment Options
MemOS supports four primary deployment paths:
| Option | Description |
|---|---|
| Cloud API | Hosted service at memos.openmem.net with dashboard key management |
| Self-Hosted | Local/private deployment via Docker Compose |
| Quick Mode | Lightweight in-process deployment for development |
| Full Mode | Complete stack including scheduler, knowledge base, and graph memory |
Source: README.md
The Cloud path issues API keys through the MemOS dashboard, while the self-hosted path installs from docker/requirements.txt and sources a .env file based on docker/.env.example or docker/.env.example-full. The recent addition of memos-local-plugin 2.0 and the Hermes Agent local plugin means operators can now also deploy a fully local memory runtime with no cloud dependency. Source: README.md
Desktop Integration
The apps/openwork-memos-integration workspace packages MemOS into a desktop agent ("Openwork") distributed as a macOS .dmg. It uses a pnpm monorepo with Next.js, React 19, and Node ≥ 20.0.0, exposing the local-first memory features through a desktop UI. Source: apps/openwork-memos-integration/README.md, apps/openwork-memos-integration/package.json
Configuration
Local Plugin Config System
The memos-local-plugin ships a YAML-driven config layer split across reader.ts, writer.ts, and index.ts. Notable behaviors:
- First boot with no config file logs a warning and uses defaults so the agent's first turn still works.
- Schema drift after upgrade keeps unknown keys verbatim and warns on removed keys, giving forward compatibility.
- The writer always re-applies
chmod 600after writes so the file never becomes world-readable. GET /api/configredacts secret fields before returning to the browser; only the on-disk YAML holds raw values.
Source: apps/memos-local-plugin/core/config/README.md
Retrieval Knobs
Every retrieval parameter lives under algorithm.retrieval.* in config.yaml. The user-facing template exposes only tier1TopK, tier2TopK, and tier3TopK; deeper settings (RRF weights, MMR seed, adaptive threshold floor, channel mix) are documented in docs/CONFIG-ADVANCED.md and default to safe values. Source: apps/memos-local-plugin/core/retrieval/README.md
Environment Variables
.env.example-full was added in v2.0.15 alongside a corrected .env.example to make first-run configuration less error-prone. Both are kept in the docker/ directory at the project root. Source: README.md
LLM Provider Matrix
The local plugin's LLM layer (core/llm/) is a single LlmClient facade backed by five real providers and two sentinels:
| Provider | Native JSON | Native Stream | Notes |
|---|---|---|---|
openai_compatible | yes (json_object) | yes (SSE) | OpenAI, Azure, Zhipu, SiliconFlow, Bailian |
anthropic | hint-based | yes (SSE) | Messages API |
gemini | yes (responseMimeType) | yes (SSE) | Google generateContent |
bedrock | hint-based | no | Converse API; SigV4 is caller's responsibility |
host | hint-based | faked | Delegates to host agent (OpenClaw) via HostLlmBridge |
local_only | — | — | Always throws LLM_UNAVAILABLE; explicit disable |
Source: apps/memos-local-plugin/core/llm/README.md
The core MemOS server separately supports openai, azure, qwen, deepseek, ollama, and huggingface as chat model providers via MOS_CHAT_MODEL_PROVIDER. Community request #1231 tracks adding native ollama support to memos-local-openclaw for fully local embeddings and summarization. Source: README.md
flowchart LR
A[User / Agent] --> B[MemOS API]
B --> C{Deployment Mode}
C -->|Cloud| D[memos.openmem.net]
C -->|Self-Hosted| E[Docker Compose]
C -->|Local Plugin| F[memos-local-plugin]
F --> G[LlmClient]
G --> H1[openai_compatible]
G --> H2[anthropic]
G --> H3[gemini]
G --> H4[bedrock]
G --> H5[host bridge]
F --> I[YAML Config + chmod 600]
F --> J[SQLite + FTS5]
I --> K[algorithm.retrieval.*]Operations
Build, Test, and Install Scripts
The local plugin defines a complete dev workflow in its package.json:
build— TypeScript compile + runtime asset copybuild:viewer— Vite viewer bundledev—tsc --watchfor the TS layerbridge/bridge:daemon— local bridge entry pointstest,test:unit,test:integration,test:e2e— Vitest suitespostinstall—node scripts/postinstall.cjsruns after install
Source: apps/memos-local-plugin/package.json
The desktop integration uses pnpm workspaces with dev, build, build:desktop, lint, typecheck, and clean scripts, pinning [email protected]. Source: apps/openwork-memos-integration/package.json
Windows Installation
v2.0.17 enhanced the Windows installation experience for the local plugin, addressing a Windows path bug that surfaced in v2.0.11 (fix: fix windows dir error). The .ps1 install script and the package's install.sh / install.ps1 assets are shipped to support both POSIX and Windows shells. Source: README.md, apps/memos-local-plugin/package.json
Evaluation Surface
LongMemEval is mentioned as the canonical evaluation harness, originally introduced alongside the v1.0.0 MemCube release. v2.0.19 added Chinese translations for the evaluation documentation. The feedback module exposes a testable pipeline (runRepair) with cooldown / skip / attach paths exercised by tests/unit/feedback/feedback.integration.test.ts, making it the de facto regression target for "did the memory update correctly?" semantics. Source: README.md, apps/memos-local-plugin/core/feedback/README.md
Known Operational Risks
Community-reported issues highlight several operational concerns operators should plan for:
- Multi-agent memory isolation —
patternSearchpreviously lacked anownerFilter, leading to cross-agent leakage inmemos-local-openclaw-plugin v4.x(Issue #1361, fixed inv2.0.12viascope sharing state by hubInstanceId). - Hardcoded owner default —
memory_searchdefaulted toagent:maininstead of the current agent (Issue #1318). - CJK search quality — FTS5's default trigram tokenizer misses 2-char Chinese words; a configurable tokenizer is tracked in Issue #1961.
- Self-hosted API parity — Issue #1433 requests self-hosted MemOS API support inside the OpenClaw plugin.
Source: community context (issues #1361, #1318, #1961, #1433)
See Also
- README.md — project overview, deployment table, LLM provider list
- apps/memos-local-plugin/core/config/README.md — config layer semantics and security guarantees
- apps/memos-local-plugin/core/llm/README.md — provider matrix for the local plugin
- apps/memos-local-plugin/core/retrieval/README.md — retrieval configuration surface
- apps/memos-local-plugin/core/feedback/README.md — feedback pipeline and test layout
- apps/openwork-memos-integration/README.md — desktop deployment
Source: https://github.com/MemTensor/MemOS / Human Manual
Doramagic Pitfall Log
Source-linked risks stay visible on the manual page so the preview does not read like a recommendation.
May increase setup, validation, or first-run risk for the user.
May increase setup, validation, or first-run risk for the user.
May increase setup, validation, or first-run risk for the user.
May increase setup, validation, or first-run risk for the user.
Doramagic Pitfall Log
Found 10 structured pitfall item(s), including 0 high/blocking item(s). Top priority: Installation risk - Installation risk requires verification.
1. Installation risk: Installation risk requires verification
- Severity: medium
- Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: community_evidence:github | https://github.com/MemTensor/MemOS/issues/1950
2. Configuration risk: Configuration risk requires verification
- Severity: medium
- Finding: Project evidence flags a configuration risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: capability.host_targets | https://github.com/MemTensor/MemOS
3. Configuration risk: Configuration risk requires verification
- Severity: medium
- Finding: Project evidence flags a configuration risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: community_evidence:github | https://github.com/MemTensor/MemOS/issues/1966
4. Capability evidence risk: Capability evidence risk requires verification
- Severity: medium
- Finding: README/documentation is current enough for a first validation pass.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: capability.assumptions | https://github.com/MemTensor/MemOS
5. Maintenance risk: Maintenance risk requires verification
- Severity: medium
- Finding: Project evidence flags a maintenance risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: evidence.maintainer_signals | https://github.com/MemTensor/MemOS
6. Security or permission risk: Security or permission risk requires verification
- Severity: medium
- Finding: no_demo
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: downstream_validation.risk_items | https://github.com/MemTensor/MemOS
7. Security or permission risk: Security or permission risk requires verification
- Severity: medium
- Finding: no_demo
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: risks.scoring_risks | https://github.com/MemTensor/MemOS
8. Security or permission risk: Security or permission risk requires verification
- Severity: medium
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: community_evidence:github | https://github.com/MemTensor/MemOS/issues/1961
9. Maintenance risk: Maintenance risk requires verification
- Severity: low
- Finding: issue_or_pr_quality=unknown。
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: evidence.maintainer_signals | https://github.com/MemTensor/MemOS
10. Maintenance risk: Maintenance risk requires verification
- Severity: low
- Finding: release_recency=unknown。
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: evidence.maintainer_signals | https://github.com/MemTensor/MemOS
Source: Doramagic discovery, validation, and Project Pack records
Community Discussion Evidence
These external discussion links are review inputs, not standalone proof that the project is production-ready.
Count of project-level external discussion links exposed on this manual page.
Open the linked issues or discussions before treating the pack as ready for your environment.
Community Discussion Evidence
Doramagic exposes project-level community discussion separately from official documentation. Review these links before using MemOS with real data or production workflows.
- bug: ghost trace in episode.trace_ids_json causes infinite rescore loop - github / github_issue
- feat: support configurable FTS5 tokenizer for better CJK search - github / github_issue
- fix: - github / github_issue
- Release v2.0.20 - github / github_release
- Release v2.0.19 - github / github_release
- Release v2.0.17 - github / github_release
- Release v2.0.16 - github / github_release
- Release v2.0.15 - github / github_release
- Release v2.0.14 - github / github_release
- Release v2.0.13 - github / github_release
- Release v2.0.12 - github / github_release
- Release v2.0.11 - github / github_release
Source: Project Pack community evidence and pitfall evidence