← All reportsPublic report

mem0ai/mem0

Universal memory layer for AI Agents

64k stars Python View on GitHubprofiled 11d ago
Try GitZoid
121PRs this week
32Contributors
314Deps scanned
18Issues found
01 · Repo overview

How mem0 is put together

Mem0 is a multi-language monorepo providing a memory layer for AI agents. The primary artifact is the Python SDK (mem0ai, built with Hatchling) whose Memory class orchestrates fact extraction via pluggable LLM providers (mem0/llms), embeddings (mem0/embeddings), and storage in pluggable vector stores (Qdrant by default, many others via optional extras). A TypeScript SDK (mem0-ts, dual CJS/ESM via tsup) mirrors this for Node, split into a hosted-platform client and an 'oss' entry point. A self-hosted FastAPI server (server/) wraps the Python library behind a REST API with its own Postgres-backed auth layer (JWT access/refresh tokens, bcrypt-hashed API keys, optional ADMIN_API_KEY), Alembic migrations, Docker Compose deployment, and per-IP rate limiting. Supporting packages include Node and Python CLIs, editor/agent integrations, and reusable 'skills' for AI coding assistants.

Languages

PythonTypeScriptJavaScript

Frameworks

FastAPIPydanticSQLAlchemyAlembicJestts-jestVitesttsupCommander

Datastores

PostgreSQL (self-hosted server app DB)Qdrant (default vector store)Redis/Valkey (optional vector store)Elasticsearch/OpenSearch (optional)MongoDB (optional)SQLite (better-sqlite3, optional TS peer)

Infrastructure

Docker (server/Dockerfile, dev.Dockerfile)docker-compose.yaml stack with Postgres serviceUvicorn ASGI serverAlembic DB migrationsMakefile bootstrap (server/Makefile)Pre-commit hooks (.pre-commit-config.yaml)

Major components

Python SDK core (mem0/)

Implements the Memory API (add/search), configuration objects, prompt templates, exceptions, and the hosted-platform client (mem0/client).

LLM provider adapters (mem0/llms)

Wraps OpenAI, Anthropic, Azure OpenAI, AWS Bedrock, and other LLM providers behind a common interface for memory extraction.

Embedding provider adapters (mem0/embeddings)

Wraps OpenAI, Gemini, HuggingFace, Ollama, FastEmbed, VertexAI, Together, and mock embedders behind a common interface.

Vector store integrations

Optional-dependency adapters for Qdrant, Chroma, Pinecone, Weaviate, Milvus, Redis, Elasticsearch, Supabase/pgvector, Cassandra, MongoDB, and other stores (declared via the 'vector-stores' extra).

TypeScript SDK (mem0-ts)

Node/browser SDK with a platform client (src/client) and OSS implementation (src/oss), built to dual CJS/ESM with tsup and tested with Jest unit plus serial integration suites.

Self-hosted server (server/)

FastAPI REST API exposing memory operations over the mem0ai library, with Postgres-backed users/API keys, JWT sessions, error classification, telemetry, and rate limiting.

CLIs (cli/node, cli/python)

@mem0/cli (Node/Commander) and mem0-cli (Python) for agent signup, adding and searching memories from the terminal.

Integrations & skills (integrations/, skills/)

Plugins for n8n, Zapier, Vercel AI SDK, DeepSeek, Strands, OpenClaw, plus agent 'skills' packages and marketplace manifests for Claude/Codex/Cursor/Kimi.

Over the past month, Mem0's development has centered on expanding its ecosystem of integrations — shipping native plugins for DeepSeek, Strands, Kimi Code, n8n, and Zapier — while steadily hardening the core product with security patches, bug fixes across vector stores and SDKs, and a wave of documentation cleanups. The team also invested in developer experience, adding CLI improvements like version commands and platform option parity, plus new features such as agent-scoped custom instructions and Qdrant keyword search. The overall arc shows a project maturing its integration surface and reliability while keeping docs and API accuracy in close step with the code.

Week by week

2026-08-24A quieter week focused on polishing integrations: Mem0 shipped as a native DeepSeek Harness plugin, renamed existing plugins for clarity, and cleaned up documentation links.latest6 changes

Feature

DeepSeek Harness plugin

Mem0 can now be used as a native plugin inside the DeepSeek Harness environment.

Docs

Vercel Marketplace integration page

Added documentation explaining how to use Mem0 through Vercel's managed marketplace.

Refactor

Plugin renames

Renamed the dsh-mem0 plugin to deepseek-plugin and strands-mem0 to mem0-strands for clearer naming.

Refactor

Stricter config validation

Replaced a custom validation setup with Pydantic's built-in strict mode so invalid configurations are rejected automatically.

Chore

Version bumps and changelogs

Released updated SDK, CLI, and plugin versions with new changelog entries for Strands, DeepSeek Harness, and Kimi.

Docs

Documentation link repairs

Fixed dead links in skills READMEs and redirected five broken API reference paths to their correct pages.

2026-08-17Mem0 launched as a native Strands MemoryStore while a large batch of fixes landed, including patching 17 high or critical security vulnerabilities and repairing widespread documentation issues.6 changes

Feature

Strands MemoryStore integration

Mem0 now works as a native memory store inside the Strands framework.

Fix

Security vulnerability patches

Resolved 17 high and critical security vulnerabilities flagged by Vanta and Dependabot across five code workspaces.

Fix

Python SDK fixes

Fixed Hugging Face authentication, procedural memory content handling, and automatic pip installation behind proxies.

Fix

Editor plugin bug-bash fixes

Addressed bugs in the Cursor, Codex, and Antigravity plugins plus a Claude.ai documentation page.

Docs

Search filter grammar documented

Added documentation explaining how search filters actually work, replacing guesswork with real syntax.

Docs

Docs accuracy sweep

Corrected the platform vs open-source comparison, memory-type status, Claude Desktop setup, CrewAI guide, and eight broken doc paths.

2026-08-10The busiest week of the month: a new Kimi Code plugin shipped alongside two dozen fixes spanning vector stores, SDKs, and the CLI, plus extensive documentation corrections.6 changes

Feature

Kimi Code plugin

Mem0 is now available as a plugin for Kimi Code with MCP support, skills, and automatic memory capture.

Feature

CLI version command

Added a version subcommand to the CLI and documented the --filter JSON format.

Fix

Provider configuration fixes

AWS Bedrock now resolves application inference profile ARNs correctly, and vLLM respects the VLLM_BASE_URL setting instead of defaulting to localhost.

Fix

TypeScript store fixes

Redis and Valkey stores now return properly formatted entity IDs, and prototype keys no longer break embedding lookups.

Fix

Client pagination fix

The get_all function now honors the page_size setting even when no specific page is requested.

Docs

Documentation corrections batch

Fixed wrong code snippets, dead links, mislabeled integration tags, and claims about memory decay that contradicted the actual SDK behavior.

2026-08-03Oracle AI Vector Search support arrived for TypeScript alongside agent-scoped custom instructions, a Dream feature page, and a 26-vulnerability security patch release.6 changes

Feature

Oracle AI Vector Search store

Added Oracle AI Vector Search as a supported vector store in the TypeScript open-source SDK, with performance tuning to reduce database round trips.

Feature

Agent-scoped custom instructions

The SDK and docs now expose agent_custom_instructions so agents can control how their memories are extracted.

Docs

Dream feature page

Added a marketing-style page describing the new Dream feature, with SEO metadata cleanup.

Fix

Security vulnerability patches

Patched 8 high and 18 medium severity vulnerabilities across four code workspaces.

Fix

Memory scoping fixes

Metadata passed to add() no longer accidentally changes a memory's identity scope, keeping user and agent separation intact.

Feature

CLI platform parity

The Python and Node command-line tools now offer the same set of Platform-related options.

2026-07-27Two major no-code integrations launched — an n8n community node and a Zapier app — while OpenMemory was removed from the monorepo and 89 security vulnerabilities were patched.6 changes

Feature

n8n community node

Mem0 is now available as a node in the n8n automation platform, released via continuous delivery for npm provenance.

Feature

Zapier app

Launched a Mem0 app on Zapier so users can connect Mem0 to thousands of other services without code.

Fix

Security vulnerability patches

Patched 32 high and 57 medium severity vulnerabilities across six code workspaces.

Chore

OpenMemory removed from monorepo

The OpenMemory project was split out of the main repository to simplify maintenance.

Fix

delete_all pagination fix

Deleting all memories now works through every page of results instead of stopping after the first batch.

Feature

Qdrant keyword search

Added server-side BM25 keyword search and filter indexes to the TypeScript Qdrant vector store for faster text matching.

03 · Security check

Dependencies and code review

314 dependencies scanned

Dependency advisories

Security Watch

18 vulnerable packages (50 advisories) across 314 scanned dependencies.

criticalcritical · pypi

chromadb 1.5.9

4 advisories.

How it can be abusedIf you run a Chroma database server alongside this project to store agent memories, an attacker who can reach that server over the network could run their own code on it, or read, change, or wipe any tenant's stored memories without proper authorization. This affects anyone self-hosting the stack with Chroma as the vector store; it does not affect users of other backends like Qdrant.

  • highGHSA-2wm9-hf6c-p5crChromaDB allows any authenticated users to arbitrarily read, write, update, or delete data in any tenant's collection
  • criticalGHSA-36p7-vc44-83pfChromaDB has a code injection vulnerability
  • criticalGHSA-f4j7-r4q5-qw2cChromaDB Python project has a pre-authentication code injection vulnerability
  • highGHSA-xph7-9rjv-w5frChromaDB's SimpleRBACAuthorizationProvider doesn't check which tenant, database, or collection a permission applies to
criticalcritical · pypifixed in 1.84.0

litellm 1.83.7

5 advisories. Fixed in 1.84.0.

How it can be abusedThese are attacks against the LiteLLM proxy server itself, like tricking it with a fake host header or escalating your own user role to get keys for restricted routes. Mem0 only uses LiteLLM as a client library to call LLM providers and never runs that proxy server, so nobody deploying Mem0 is exposed.

  • criticalGHSA-4xpc-pv4p-pm3wLiteLLM: Authentication Bypass via Host Header Injection
  • highGHSA-7488-6r32-c95qLiteLLM: MCP Authentication Bypass via OAuth2 Passthrough Fallback
  • highGHSA-qrc4-49gv-mv9mLiteLLM allows an authenticated internal_user to create API keys with access to routes that their role does not permit
  • highGHSA-wpfp-gwwc-vwq6LiteLLM allows a user to modify their own user_role via the /user/update endpoint
  • highGHSA-wxxx-gvqv-xp7pLiteLLM has a sandbox escape in custom-code guardrail
warninghigh · pypifixed in 3.14.3

aiohttp 3.13.5

1 advisory. Fixed in 3.14.3.

How it can be abusedThe Python SDK and self-hosted server use aiohttp to talk to LLM providers and vector stores, so they parse HTTP responses from outside services. A malicious or compromised endpoint, or anyone able to intercept that traffic, could send a malformed chunked response to crash the process or leak bits of memory, affecting anyone running the server or an agent using the library.

  • highGHSA-cq5v-8q36-5273AIOHTTP: Out-of-bounds heap read in C HTTP response parser error path (malformed chunked response)
warninghigh · pypifixed in 1.38.0

azure-core 1.35.0

1 advisory. Fixed in 1.38.0.

How it can be abusedMem0 uses azure-core when talking to Azure AI services for LLM calls and embeddings, and the flaw lets maliciously crafted data received over the network be turned into running code. Anyone running Mem0 with Azure as their model or embedding provider could be at risk if an attacker can insert themselves between the app and the Azure endpoint, such as via a compromised network or a misconfigured custom service URL.

warninghigh · pypifixed in 48.0.1

cryptography 45.0.5

4 advisories. Fixed in 48.0.1.

How it can be abusedAn attacker on the network could exploit flaws in the bundled crypto code to decrypt captured encrypted messages or stall certificate verification, but only if this project actually used those specific features like decrypting PKCS#7 envelopes or verifying unusual certificates. Here the library is only a background dependency for token and key handling in the self-hosted server's login layer, which does not use the vulnerable paths, so mainly self-hosted operators running that server are nominally exposed rather than SDK users.

  • highGHSA-537c-gmf6-5ccfVulnerable OpenSSL included in cryptography wheels
  • highGHSA-g6cj-pr64-35w5cryptography: PKCS#7 EnvelopedData decryption exposes a Bleichenbacher oracle through distinguishable errors and timing
  • highGHSA-jwv3-5hgf-82wwpython-cryptography: Duplicate self-signed intermediates can cause exponential path-building
  • highGHSA-r6ph-v2qm-q3c2cryptography Vulnerable to a Subgroup Attack Due to Missing Subgroup Validation for SECT Curves
warninghigh · pypifixed in 1.133.0

google-cloud-aiplatform 1.71.1

1 advisory. Fixed in 1.133.0.

How it can be abusedWhen this library runs Vertex AI jobs it can upload code and data to a Google Cloud Storage bucket whose name is guessed from your project number. An attacker who learns that name and creates the bucket first receives whatever the job uploads, which here could include memory text, embeddings, or credentials from anyone running mem0 with the Vertex AI option enabled.

  • highGHSA-wh2j-26j7-9728Google Cloud Vertex AI has a a vulnerability involving predictable bucket naming
warninghigh · pypifixed in 0.32.0

httplib2 0.22.0

1 advisory. Fixed in 0.32.0.

How it can be abusedIf this library is used to fetch HTTP responses, a malicious or compromised server could reply with a tiny gzip file that expands to gigabytes when read, exhausting memory and crashing the process. In Mem0 the affected code would be anything making outbound calls through it, so operators running the self-hosted server or apps using the Python SDK could be knocked offline.

  • highGHSA-j5g9-f88f-gfj3httplib2: Decompression Bomb Denial of Service via Unbounded gzip/deflate Response Handling
warninghigh · pypifixed in 1.2.22

langchain-core 0.3.86

1 advisory. Fixed in 1.2.22.

How it can be abusedThe flaw lives in old prompt-loading helpers that read files from disk based on a path they are given. An attacker who can control that path, for example by supplying a crafted prompt file to an app that loads user-submitted prompts, could trick the app into reading files outside the intended folder and leak secrets like API keys. In this repo the package is only pulled in for optional LangChain integrations and the vulnerable loaders are not used in the core memory pipeline, so mainly downstream apps that both depend on mem0's LangChain glue and load untrusted prompt files are exposed.

  • highGHSA-qh6h-p6c9-ff54LangChain Core has Path Traversal vulnerabilites in legacy `load_prompt` functions
warninghigh · pypifixed in 0.8.0

langsmith 0.3.45

2 advisories. Fixed in 0.8.0.

How it can be abusedIf a developer enables the optional LangSmith tracing integration and pulls a prompt from the shared LangSmith hub, a malicious prompt manifest could run code or read files on their machine or on the self-hosted API server. This affects only users who opt into LangSmith; teams using default Qdrant storage without LangSmith are not exposed.

  • highGHSA-3644-q5cj-c5c7LangSmith SDK: Public prompt pull deserializes untrusted manifests without trust boundary warning
  • highGHSA-f4xh-w4cj-qxq8LangSmith SDK TracingMiddleware: Arbitrary server-side file read
warninghigh · pypifixed in 3.10.0

nltk 3.9.4

6 advisories. Fixed in 3.10.0.

How it can be abusedThese flaws let an attacker read arbitrary files on the server or crash it with crafted input, but only if the app loads NLTK corpora or data files using names or URLs that come from users. Mem0 does not use NLTK in its core memory pipeline, so only deployments that separately wire NLTK into user-facing code are exposed.

  • highGHSA-6hm5-jgcp-p838Natural Language Toolkit (NLTK): Path Traversal in NKJPCorpusReader leads to Arbitrary File Read and bypasses the nltk.pathsec sandbox (ENFORCE=True)
  • highGHSA-fg7f-2386-8897Natural Language Toolkit (NLTK): ReDoS in NLTK ReviewsCorpusReader FEATURES regex
  • highGHSA-m42h-3232-vpv3nltk: Arbitrary File Read via Path Traversal in nltk.data.load() through Percent-Encoded Sequences
  • highGHSA-p4gq-832x-fm9vNatural Language Toolkit (NLTK): URL-Encoded Path Traversal in nltk.data.load() Allows Arbitrary Local File Read
  • highGHSA-qvv7-cg9c-w4x3Natural Language Toolkit (NLTK): DNS-rebinding SSRF filter bypass in nltk.pathsec.urlopen (nltk.download / nltk.data.load) defeats ENFORCE mode
  • highGHSA-xh95-f55m-82fwNatural Language Toolkit (NLTK) has path traversal in FramenetCorpusReader.frame() that allows arbitrary XML file read, bypassing the nltk.pathsec sandbox (ENFORCE=True)
warninghigh · pypifixed in 3.11.6

orjson 3.10.16

1 advisory. Fixed in 3.11.6.

How it can be abusedThe self-hosted FastAPI server uses orjson to parse incoming JSON request bodies. An attacker can send a request with thousands of nested brackets, which orjson does not guard against, crashing the worker process and taking down the memory API for everyone using that deployment.

warninghigh · pypifixed in 12.3.0

pillow 12.2.0

10 advisories. Fixed in 12.3.0.

How it can be abusedAn attacker who can submit an image to the self-hosted server, such as through the API when adding memories with attached screenshots or photos, could send a crafted file that exhausts memory and crashes the service, or in some cases corrupts memory while Pillow decodes it. Anyone running the self-hosted FastAPI server or processing untrusted images through the Python SDK is affected.

  • highGHSA-45hq-cxwh-f6vcPillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` — bomb protection bypass via font loading
  • highGHSA-5x94-69rx-g8h2Pillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`
  • highGHSA-62p4-gmf7-7g93Pillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA files)
  • highGHSA-6r8x-57c9-28j4Pillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow
  • highGHSA-8v84-f9pq-wr9xPillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_check()` — bomb protection bypass via PCF font loading
  • highGHSA-9hw9-ch79-4vh6Pillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode mismatch
  • highGHSA-jjj6-mw9f-p565Pillow: Decompression Bomb DoS via PdfParser.PdfStream.decode()
  • highGHSA-phj9-mv4w-65pmPillow `GdImageFile._open()`: image dimensions accepted without `_decompression_bomb_check()`
  • highGHSA-vjc4-5qp5-m44jPillow JPEG2000 tiled decode retains a growing scratch buffer and can be used for denial of service
  • highGHSA-xj96-63gp-2gmrPillow: Heap out-of-bounds write in `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`
warninghigh · pypifixed in 0.6.2

pyasn1 0.6.1

5 advisories. Fixed in 0.6.2.

How it can be abusedAn attacker who can send crafted encoded data to anything in this project that decodes it with pyasn1 could hang the process with tiny malicious inputs, since the decoder chokes on certain values and burns CPU indefinitely. In practice this mostly matters for the self-hosted server and any deployment that parses such data; the core SDK does not decode ASN.1 itself, so most users are only exposed if a dependency pulls pyasn1 in.

warninghigh · pypifixed in 2.13.0

pyjwt 2.12.1

1 advisory. Fixed in 2.13.0.

How it can be abusedAnyone running the self-hosted REST API server relies on PyJWT to verify login tokens. If the server were set up to accept both symmetric secrets and public keys when checking tokens, an attacker who knows a public key could sign their own fake access token and get in as any user without knowing the real secret.

  • highGHSA-xgmm-8j9v-c9wxPyJWT: Public-key JWK accepted as HMAC secret enables forged HS256 tokens when mixed families are allowed
warninghigh · pypifixed in 78.1.1

setuptools 78.1.0

1 advisory. Fixed in 78.1.1.

How it can be abusedThis flaw lives in setuptools' old package-download code, which is only used when installing packages from custom URLs. An attacker would need to trick a developer or CI job into installing a malicious package URL during setup, letting them write files anywhere on the machine. Since Mem0 uses setuptools only as a build tool and never downloads packages this way at runtime, real-world exposure is minimal.

  • highGHSA-5rjg-fvgr-3xxfsetuptools has a path traversal vulnerability in PackageIndex.download that leads to Arbitrary File Write
warninghigh · pypifixed in 5.5.0

transformers 5.3.0

1 advisory. Fixed in 5.5.0.

How it can be abusedAn attacker who can get a victim to load a maliciously crafted LightGlue vision model file could have arbitrary code run on that machine. This only matters if the project actually loads such models locally, which a memory-layer SDK like this one does not do in its normal operation.

  • highGHSA-fgcw-684q-jj6rhuggingface/transformers: Arbitrary Code Execution During Model Initialization in the LightGlue Model Loading Path
warninghigh · pypifixed in 5.12.1

ujson 5.12.0

1 advisory. Fixed in 5.12.1.

How it can be abusedIf the server or SDK serializes data with ujson and a write fails partway through, memory is leaked each time, so an attacker who can repeatedly cause failed writes could slowly exhaust server memory and crash it. This mainly affects anyone running the self-hosted FastAPI server; the core Python and TypeScript libraries barely use ujson at all.

warninghigh · pypifixed in 2.6.0

urllib3 2.3.0

4 advisories. Fixed in 2.6.0.

How it can be abusedAny code path that fetches from an HTTP endpoint using this library, such as the self-hosted server calling out to LLM providers or the Python SDK talking to the hosted platform, can be tricked by a malicious or compromised remote server into downloading huge amounts of data disguised as highly compressed redirects, exhausting memory and hanging the process. This affects anyone running the FastAPI server, the Python CLI, or apps built on mem0ai that make outbound HTTP requests.

  • highGHSA-2xpw-w6gg-jr37urllib3 streaming API improperly handles highly compressed data
  • highGHSA-38jv-5279-wg99Decompression-bomb safeguards bypassed when following HTTP redirects (streaming API)
  • highGHSA-gm62-xv2j-4w53urllib3 allows an unbounded number of links in the decompression chain
  • highGHSA-qccp-gfcp-xxvcurllib3: Sensitive headers forwarded across origins in proxied low-level redirects

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required