Skip to content

Releases: mem0ai/mem0

Mem0 Python SDK (v2.2.1)

Choose a tag to compare

@blazingretinol blazingretinol released this 25 Sep 17:35
94c3fe9

Bug Fixes:

  • Core: add() (Memory and AsyncMemory) no longer reports records the vector store rejected as successful ADD events. Only records that were actually inserted are written to history, entity-linked, and returned. If none of the extracted memories could be inserted, add() now raises VectorStoreError instead of returning memories that were never stored (#7066)
  • Core: Restore the context-manager protocol on Memory (with Memory() as m:) and AsyncMemory (async with AsyncMemory() as m:), which closes the instance on exit (#7354)
  • LLMs: The AWS Bedrock Anthropic path now returns the first Converse content block that carries text instead of always reading content[0]. Claude reasoning models can emit a reasoningContent block before the text block, which previously made the call fail with a KeyError (#6369)
  • Vector Stores: Turbopuffer filters now apply every operator (eq, ne, gt, gte, lt, lte, in, nin). Only gte and lte were read before, so any other operator was silently dropped and the query returned unfiltered results. An unsupported operator now raises ValueError (#6564)
  • Vector Stores: Turbopuffer search() scores now respect distance_metric. With euclidean_squared, the unbounded squared distance maps to 1 / (1 + distance) instead of 1 - distance, which went negative and inverted ranking for any distance above 1 (#6559)
  • Vector Stores: S3 Vectors search() scores are now metric-aware. With euclidean, the distance maps to 1 / (1 + distance) instead of max(0, 1 - distance), which collapsed most scores to 0 (#6547)

Mem0 Node SDK (v3.3.1)

Choose a tag to compare

@blazingretinol blazingretinol released this 25 Sep 17:36
94c3fe9

Bug Fixes:

  • Config (OSS): ConfigManager no longer injects OpenAI's default baseURL and model into non-OpenAI LLM providers. The defaults now apply only to openai and openai_structured, so a DeepSeek, xAI, or other provider config without an explicit baseURL or model falls back to that provider's own defaults and env vars (DEEPSEEK_API_BASE, XAI_API_BASE, ...) instead of pointing at OpenAI with an OpenAI model name (#7350)
  • Vector Stores: Turbopuffer filters now apply every operator (eq, ne, gt, gte, lt, lte, in, nin). Only the range operators were read before, so eq, ne, in, and nin were silently dropped. A "*" value now matches anything instead of nothing, an array value is treated as in, and an unsupported operator throws (#6578)
  • Vector Stores: Turbopuffer search() with euclidean_squared now maps the unbounded squared distance to 1 / (1 + distance) instead of 1 - distance, which went negative and inverted ranking for any distance above 1 (#6580)
  • Packaging: pg, @types/pg, and natural are now optional peer dependencies, and pg / @types/pg accept caret ranges instead of the exact 8.11.3 / 8.11.0 pins, so installing mem0ai no longer pulls in pg or conflicts with an app's own pg version. The PGVector store now imports pg only when it is used, so install it alongside mem0ai (npm install pg) if you use that store. @types/jest moved from peer dependencies to dev dependencies (#7450)

Mem0 Python SDK (v2.2.0)

Choose a tag to compare

@blazingretinol blazingretinol released this 23 Sep 19:03
47a69e1

New Features:

  • Client: Add User Profiles to MemoryClient and AsyncMemoryClient: get_profile(), generate_profile(), get_profile_settings(), update_profile_settings(), sample_profiles(), and get_profile_job(). A profile is a structured, always-current JSON summary of one user, shaped by a JSON Schema you configure per project and filled by an LLM from that user's memories. Generation is asynchronous. Every job POST carries an Idempotency-Key; to retry a lost request without starting a second job, pass the same idempotency_key on each attempt (#7340)

Bug Fixes:

  • Vector Stores: Guard against None timestamps in the Valkey vector store's insert() and update() paths. created_at and updated_at fields that were present in the payload but set to None previously passed the "created_at" not in payload / "updated_at" in payload checks and raised TypeError when datetime.fromisoformat() received None. Both paths now use .get() with a truthiness check so None values fall through to the default, matching the Redis provider's behavior (#6993)

Mem0 Node SDK (v3.3.0)

Choose a tag to compare

@blazingretinol blazingretinol released this 23 Sep 19:05
47a69e1

New Features:

  • Client: Add User Profiles to MemoryClient: getProfile(), generateProfile(), getProfileSettings(), updateProfileSettings(), sampleProfiles(), and getProfileJob(). A profile is a structured, always-current JSON summary of one user, shaped by a JSON Schema you configure per project and filled by an LLM from that user's memories. Generation is asynchronous. Every job POST carries an Idempotency-Key; to retry a lost request without starting a second job, pass the same idempotencyKey on each attempt (#7340)

Mem0 Pi Agent Plugin (v0.3.2)

Choose a tag to compare

@blazingretinol blazingretinol released this 23 Sep 19:12
47a69e1

Improvements:

  • Search: The memory policy, mem0_memory tool description, and prompt guidelines no longer ask the agent to search before answering anything that may depend on earlier context or to run several searches per question. They now ask for a search before repeating investigation or when earlier decisions, fixes, commands, or results may help (#7420)
  • Skills: context-loader makes one search instead of 2-4 parallel searches, and uses the search skill description from the other coding-agent plugins (#7420)
  • Automatic recall: Injected memories are introduced as "Mem0 found these relevant memories from earlier work in this repository:", the same heading as the Python plugins. The old heading called them a shallow first pass and told the agent to search again (#7420)

Mem0 OpenCode Plugin (v0.4.1)

Choose a tag to compare

@blazingretinol blazingretinol released this 23 Sep 19:09
47a69e1

Improvements:

  • Search: The search_memories tool description no longer asks the agent to search proactively or to run several searches for multi-part questions. It now asks for a search before repeating investigation or when earlier decisions, fixes, commands, or results may help, the same wording as the other coding-agent plugins (#7420)
  • Session context: Removed two system-context lines that told the agent to run 2 parallel searches before responding and 2-4 parallel searches for non-trivial tasks (#7420)
  • Skills: /mem0-search and /mem0-context-loader make one search_memories call instead of 2 and 2-4 parallel calls. /mem0-context-loader now uses the search skill description from the other coding-agent plugins instead of asking to load at every new task or context switch (#7420)

Mem0 OpenClaw Plugin (v1.2.1)

Choose a tag to compare

@blazingretinol blazingretinol released this 23 Sep 19:11
47a69e1

Improvements:

  • Search: The memory_search tool description no longer asks the agent to search proactively or to run several searches for multi-part questions. It now asks for a search before repeating investigation or when earlier decisions, fixes, commands, or results may help. Recall strategies (smart, always, manual) are unchanged (#7420)

Mem0 DeepSeek Plugin (v0.3.2)

Choose a tag to compare

@blazingretinol blazingretinol released this 23 Sep 19:13
47a69e1

Improvements:

  • Search: The search_memory tool description no longer asks the agent to search proactively before answering anything that may depend on earlier context. It now asks for a search before repeating investigation or when earlier decisions, fixes, commands, or results may help (#7420)
  • Automatic recall: Injected memories are introduced as "Mem0 found these relevant memories from earlier work:". The old heading called them a shallow first pass and told the agent to search again with mem0_memory, a tool DeepSeek does not have (#7420)

Mem0 Python SDK (v2.1.0)

Choose a tag to compare

@blazingretinol blazingretinol released this 18 Sep 11:11
19f7134

Improvements:

  • Client: Requests now carry three surface-identity headers so the platform can tell which product made a call. X-Mem0-Source names the surface and X-Application the host app it runs inside, both set-once so a wrapper that already declared its identity keeps it. X-Mem0-Client is append-only and carries name/version per layer, outermost first, so a plugin calling this SDK reports the whole chain rather than only the last speaker. MEM0_SOURCE, MEM0_APPLICATION and MEM0_CLIENT_STACK set them from the environment for wrappers that cannot pass options (#7326)
  • Client: The client stack is bounded by dropping whole entries rather than slicing characters, and this SDK's own entry is the reserved one. Truncating the joined string could sever an identifier mid-name and the platform parsed the fragment as a real client (#7326)

Vercel AI SDK Provider (v3.0.3)

Choose a tag to compare

@blazingretinol blazingretinol released this 18 Sep 11:23
19f7134

Improvements:

  • Client: Inherits the three surface-identity headers (X-Mem0-Source, X-Application, X-Mem0-Client) from the TypeScript SDK bump, so platform calls made through the Vercel AI SDK provider are now correctly attributed (#7326)