From 49df324d993e88e3614cbef2e3413080fb7aa9b7 Mon Sep 17 00:00:00 2001 From: kartik-mem0 Date: Tue, 11 Aug 2026 20:18:49 +0530 Subject: [PATCH] docs: refresh references stale since the v3 pipeline landed Commit a488e1904 deleted mem0/graphs/ and mem0-ts/src/oss/src/graphs/ when the v3 pipeline landed, and 3f717e545 reframed the docs as Platform-only, but the agent-facing context files were never updated. Agents reading them still believe OSS graph memory exists and propose graph_store config that cannot work. - AGENTS.md: drop graphs/ from the directory map and dependency tree, correct the provider table (4 categories, not 5; LLMs 24->18, vector stores 30->25, embeddings 15->12), and rewrite the Graph Memory section as Platform-only - skills: replace the OSS graph-memory prompt example and stop indexing /open-source/features/graph-memory, which 404s; also fix four other SECTION_MAP paths that no longer resolve - mem0/exceptions.py: DependencyError example referenced kuzu/graph_store - tests/test_telemetry.py: drop four mock_memory.config.graph_store lines; graph_store is not a MemoryConfig field and telemetry never reads it - CONTRIBUTING.md: add the three missing release tag prefixes (opencode-v*, pi-agent-v*, n8n-nodes-mem0-v*) and note Zapier deploys off-registry --- AGENTS.md | 22 +++++++++---------- CONTRIBUTING.md | 7 ++++++ .../mem0-plugin/skills/mem0/README.md | 4 ++-- .../skills/mem0/scripts/mem0_doc_search.py | 9 ++++---- mem0/exceptions.py | 4 ++-- skills/mem0/README.md | 4 ++-- skills/mem0/scripts/mem0_doc_search.py | 9 ++++---- tests/test_telemetry.py | 4 ---- 8 files changed, 32 insertions(+), 31 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 384a92c0b..502c27b8b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -18,7 +18,7 @@ This is a **polyglot monorepo** containing Python and TypeScript packages, CLIs, | Directory | Description | |-----------|-------------| -| `mem0/` | Core Python SDK (`mem0ai` on PyPI) — memory, LLMs, embeddings, vector stores, graphs, rerankers | +| `mem0/` | Core Python SDK (`mem0ai` on PyPI) — memory, LLMs, embeddings, vector stores, rerankers | | `mem0-ts/` | TypeScript SDK (`mem0ai` on npm) — client + OSS memory | | `cli/python/` | Python CLI (`mem0-cli` on PyPI) — Typer-based, entry point `mem0` | | `cli/node/` | Node CLI (`@mem0/cli` on npm) — Commander-based, entry point `mem0` | @@ -46,8 +46,7 @@ mem0 (Python SDK) mem0-ts (TypeScript SDK) ├── mem0/llms/ └── src/oss/ (Memory — self-hosted) ├── mem0/embeddings/ ├── src/llms/ ├── mem0/vector_stores/ ├── src/embeddings/ -├── mem0/graphs/ ├── src/vector_stores/ -└── mem0/reranker/ └── src/graphs/ +└── mem0/reranker/ └── src/vector_stores/ cli/python/ ──▶ mem0ai (optional, for OSS mode) cli/node/ ──▶ mem0ai (npm, for API calls) @@ -304,7 +303,7 @@ python -m benchmarks.beam.run --project-name my-test --backend cloud --mem0-api- ### Python Conventions -- **Provider pattern:** All providers (LLMs, embeddings, vector stores, graphs, rerankers) inherit from a `base.py` abstract class in their directory. Config classes live in `configs.py`. +- **Provider pattern:** All providers (LLMs, embeddings, vector stores, rerankers) inherit from a `base.py` abstract class in their directory. Config classes live in `configs.py`. - **Pydantic v2** for all data models and configuration. - **Ruff** is the single linting and formatting tool — no black, no flake8. - Root SDK: line length **120** @@ -337,23 +336,24 @@ cd && pnpm run typecheck # or: tsc --noEmit ### Provider Pattern -The SDK uses a consistent plugin architecture across 5 categories. Each category has a `base.py` abstract class and concrete provider implementations: +The SDK uses a consistent plugin architecture across 4 categories. Each category has a `base.py` abstract class and concrete provider implementations: | Category | Count | Examples | |----------|-------|---------| -| **LLMs** | 24 | OpenAI, Anthropic, AWS Bedrock, Azure OpenAI, Gemini, Groq, Ollama, Together, DeepSeek, vLLM, LiteLLM, LM Studio, xAI | -| **Vector Stores** | 30 | Qdrant, Pinecone, Chroma, Weaviate, Milvus, MongoDB, Redis, Elasticsearch, pgvector, Supabase, Faiss, S3 Vectors | -| **Embeddings** | 15 | OpenAI, Azure OpenAI, Gemini, HuggingFace, FastEmbed, Together, AWS Bedrock, Ollama, Vertex AI | -| **Graph Stores** | 4 | Neo4j, Memgraph, Kuzu, Apache AGE | +| **LLMs** | 18 | OpenAI, Anthropic, AWS Bedrock, Azure OpenAI, Gemini, Groq, Ollama, Together, DeepSeek, vLLM, LiteLLM, LM Studio, xAI | +| **Vector Stores** | 25 | Qdrant, Pinecone, Chroma, Weaviate, Milvus, MongoDB, Redis, Elasticsearch, pgvector, Supabase, Faiss, S3 Vectors | +| **Embeddings** | 12 | OpenAI, Azure OpenAI, Gemini, HuggingFace, FastEmbed, Together, AWS Bedrock, Ollama, Vertex AI | | **Rerankers** | 5 | Cohere, HuggingFace, LLM-based, Sentence Transformer, Zero Entropy | ### Two Usage Modes Self-hosted `Memory` / `AsyncMemory` classes and hosted-platform `MemoryClient` — both in Python and TypeScript. -### Graph Memory +### Graph Memory (Platform only) -Optional layer on top of vector memory for relationship-aware retrieval. Configured via the `graph` section of `MemoryConfig`. +**Removed from the OSS SDKs.** `mem0/graphs/` and `mem0-ts/src/oss/src/graphs/` were deleted in `a488e1904` when the v3 pipeline landed; relationship-aware retrieval in OSS is now handled by entity extraction inside the v3 pipeline itself. There is no `graph_store` key in `MemoryConfig` and no `enable_graph` flag in the OSS SDKs. + +Graph memory remains a hosted Platform feature. Do not add `graph_store` config, Neo4j/Memgraph/Kuzu/Apache AGE providers, or graph examples to OSS code, docs, or skills. See `3f717e545` for the docs framing. ### MCP Integration diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 88d1ca568..005e83180 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -161,6 +161,13 @@ is created with the correct tag prefix. | `@mem0/cli` (Node CLI) | npm | `cli-node-v*` | `cli-node-v0.1.2` | | `@mem0/vercel-ai-provider` | npm | `vercel-ai-v*` | `vercel-ai-v2.0.6` | | `@mem0/openclaw-mem0` | npm | `openclaw-v*` | `openclaw-v1.0.1` | +| `@mem0/opencode-plugin` | npm | `opencode-v*` | `opencode-v1.0.1` | +| `@mem0/pi-agent-plugin` | npm | `pi-agent-v*` | `pi-agent-v1.0.1` | +| `@mem0/n8n-nodes-mem0` | npm | `n8n-nodes-mem0-v*` | `n8n-nodes-mem0-v1.0.1` | + +The Zapier app (`integrations/zapier-mem0`) deploys to Zapier's own platform rather +than a package registry, so it has no release tag. Deploy it manually with +`gh workflow run zapier-mem0-cd.yml --ref main`. ### How to Release diff --git a/integrations/mem0-plugin/skills/mem0/README.md b/integrations/mem0-plugin/skills/mem0/README.md index 4ed29d162..c6e15e959 100644 --- a/integrations/mem0-plugin/skills/mem0/README.md +++ b/integrations/mem0-plugin/skills/mem0/README.md @@ -40,7 +40,7 @@ After installing, just ask Claude: - "Add memory to my chatbot" - "Help me search user memories with filters" - "Integrate mem0 with my LangChain app" -- "Add graph memory to track entity relationships" +- "Migrate my app from mem0 v2 to v3" ## What's Inside @@ -56,7 +56,7 @@ skills/mem0/ ├── sdk-guide.md # All SDK methods (Python + TypeScript) ├── api-reference.md # REST endpoints, filters, memory object ├── architecture.md # Processing pipeline, lifecycle, scoping, performance - ├── features.md # Retrieval, graph, categories, MCP, webhooks, multimodal + ├── features.md # Retrieval, entity linking, categories, MCP, webhooks, multimodal ├── integration-patterns.md # LangChain, CrewAI, Vercel AI, LangGraph, LlamaIndex, etc. └── use-cases.md # 7 real-world patterns with Python + TypeScript code ``` diff --git a/integrations/mem0-plugin/skills/mem0/scripts/mem0_doc_search.py b/integrations/mem0-plugin/skills/mem0/scripts/mem0_doc_search.py index a04c89afb..09405dea0 100755 --- a/integrations/mem0-plugin/skills/mem0/scripts/mem0_doc_search.py +++ b/integrations/mem0-plugin/skills/mem0/scripts/mem0_doc_search.py @@ -36,9 +36,8 @@ SECTION_MAP = { "platform": [ "/platform/overview", "/platform/quickstart", - "/platform/features", "/platform/features/graph-memory", - "/platform/features/selective-memory", + "/platform/features/advanced-retrieval", "/platform/features/custom-categories", "/platform/features/v2-memory-filters", "/platform/features/async-client", @@ -57,10 +56,10 @@ SECTION_MAP = { "/open-source/overview", "/open-source/python-quickstart", "/open-source/node-quickstart", - "/open-source/features", - "/open-source/features/graph-memory", + "/open-source/features/overview", "/open-source/features/rest-api", - "/open-source/configure-components", + "/open-source/features/metadata-filtering", + "/open-source/configuration", ], "sdks": [ "/sdks/python", diff --git a/mem0/exceptions.py b/mem0/exceptions.py index 0ff1ba2b2..cdbe17849 100644 --- a/mem0/exceptions.py +++ b/mem0/exceptions.py @@ -393,8 +393,8 @@ class DependencyError(MemoryError): raise DependencyError( message="Required dependency missing", error_code="DEPS_001", - details={"package": "kuzu", "feature": "graph_store"}, - suggestion="Please install the required dependencies: pip install kuzu" + details={"package": "chromadb", "feature": "vector_store"}, + suggestion="Please install the required dependencies: pip install chromadb" ) """ def __init__(self, message: str, error_code: str = "DEPS_001", details: dict = None, diff --git a/skills/mem0/README.md b/skills/mem0/README.md index b6692ffc4..bf34739bd 100644 --- a/skills/mem0/README.md +++ b/skills/mem0/README.md @@ -54,7 +54,7 @@ After installing, just ask Claude: - "Add memory to my chatbot" - "Help me search user memories with filters" - "Integrate mem0 with my LangChain app" -- "Add graph memory to track entity relationships" +- "Migrate my app from mem0 v2 to v3" ## What's Inside @@ -74,7 +74,7 @@ skills/mem0/ ├── sdk-guide.md # All SDK methods (Python + TypeScript) ├── api-reference.md # REST endpoints, filters, memory object ├── architecture.md # Processing pipeline, lifecycle, scoping, performance - ├── features.md # Retrieval, graph, categories, MCP, webhooks, multimodal + ├── features.md # Retrieval, entity linking, categories, MCP, webhooks, multimodal ├── integration-patterns.md # LangChain, CrewAI, OpenAI Agents, LangGraph, LlamaIndex, etc. └── use-cases.md # 7 real-world patterns with Python + TypeScript code ``` diff --git a/skills/mem0/scripts/mem0_doc_search.py b/skills/mem0/scripts/mem0_doc_search.py index a04c89afb..09405dea0 100755 --- a/skills/mem0/scripts/mem0_doc_search.py +++ b/skills/mem0/scripts/mem0_doc_search.py @@ -36,9 +36,8 @@ SECTION_MAP = { "platform": [ "/platform/overview", "/platform/quickstart", - "/platform/features", "/platform/features/graph-memory", - "/platform/features/selective-memory", + "/platform/features/advanced-retrieval", "/platform/features/custom-categories", "/platform/features/v2-memory-filters", "/platform/features/async-client", @@ -57,10 +56,10 @@ SECTION_MAP = { "/open-source/overview", "/open-source/python-quickstart", "/open-source/node-quickstart", - "/open-source/features", - "/open-source/features/graph-memory", + "/open-source/features/overview", "/open-source/features/rest-api", - "/open-source/configure-components", + "/open-source/features/metadata-filtering", + "/open-source/configuration", ], "sdks": [ "/sdks/python", diff --git a/tests/test_telemetry.py b/tests/test_telemetry.py index fb7001a62..a9449abc8 100644 --- a/tests/test_telemetry.py +++ b/tests/test_telemetry.py @@ -83,7 +83,6 @@ class TestTelemetryEnabled: mock_at = MagicMock() with patch.object(telemetry_module, "_oss_telemetry_instance", mock_at): mock_memory = MagicMock() - mock_memory.config.graph_store.config = None mock_memory.api_version = "v1" telemetry_module.capture_event("test.event", mock_memory) mock_at.capture_event.assert_called_once() @@ -223,7 +222,6 @@ class TestTelemetrySingleton: with patch("mem0.memory.telemetry.get_or_create_user_id", return_value="u"): with patch("atexit.register"): mock_memory = MagicMock() - mock_memory.config.graph_store.config = None mock_memory.api_version = "v1" telemetry_module.capture_event("e1", mock_memory) @@ -242,7 +240,6 @@ class TestTelemetrySingleton: with patch("mem0.memory.telemetry.get_or_create_user_id", return_value="u"): with patch("atexit.register"): mock_memory = MagicMock() - mock_memory.config.graph_store.config = None mock_memory.api_version = "v1" for i in range(50): @@ -421,7 +418,6 @@ class TestTelemetryNullUserIdHandling: with patch.object(telemetry_module, "_oss_telemetry_instance", mock_at): mock_memory = MagicMock() - mock_memory.config.graph_store.config = None mock_memory.api_version = "v1" # This should not raise, even when telemetry fails