mem0

Mem0 Platform SDK for adding persistent memory to AI applications. TRIGGER when: user mentions "mem0", "MemoryClient", "memory layer", "remember user preferences", "persistent context", "personalization", or needs to add long-term memory to chatbots, agents, or AI apps. Covers Python SDK (mem0ai), TypeScript SDK (mem0ai), and framework integrations (LangChain, CrewAI, OpenAI Agents SDK, Pipecat, LlamaIndex, AutoGen, LangGraph). Also covers the open-source self-hosted Memory class. This is the DEFAULT mem0 skill for ambiguous queries. DO NOT TRIGGER when: user asks about CLI commands, terminal usage, or shell scripts (use mem0-cli), or Vercel AI SDK / @mem0/vercel-ai-provider / createMem0 (use mem0-vercel-ai-sdk).

Install
npx skills add 'https://github.com/mem0ai/mem0/tree/main/skills/mem0'
Download bundle ↓
main · 0df3e4bScanned 2026-09-17

Contributors

GitHub-linked commit authors for this SKILL.md at the saved revision. Co-authors and history before file renames are not included.

File history ↗
View on GitHub
← Back to SKILL.md

Python vs TypeScript SDK Differences

Quick-reference cheatsheet for developers working across both Mem0 SDKs.

Constructor

AspectPythonTypeScript
Import (Platform)from mem0 import MemoryClientimport MemoryClient from 'mem0ai'
Import (OSS)from mem0 import Memoryimport { Memory } from 'mem0ai/oss'
ConstructorMemoryClient(api_key="m0-xxx")new MemoryClient({ apiKey: 'm0-xxx' })
Required paramapi_key (positional or kwarg)apiKey (in options object)

Both read from MEM0_API_KEY env var if no key provided.

Method Naming

OperationPythonTypeScript
Addadd()add()
Searchsearch()search()
Getget()get()
Get allget_all()getAll()
Updateupdate()update()
Deletedelete()delete()
Delete alldelete_all()deleteAll()
Historyhistory()history()
Batch updatebatch_update()batchUpdate()
Batch deletebatch_delete()batchDelete()
List usersusers()users()
Delete usersdelete_users()deleteUsers()
Get projectproject.get()getProject()
Update projectproject.update()updateProject()
Create webhookcreate_webhook()createWebhook()
Get webhooksget_webhooks()getWebhooks()
Update webhookupdate_webhook()updateWebhook()
Delete webhookdelete_webhook()deleteWebhook()
Create exportcreate_memory_export()createMemoryExport()
Get exportget_memory_export()getMemoryExport()
Feedbackfeedback()feedback()

Rule: Python uses snake_case, TypeScript uses camelCase for method names.

Parameter Passing

# Python: kwargs
client.add(messages, user_id="alice", metadata={"source": "chat"})
client.search("query", filters={"user_id": "alice"}, top_k=5, rerank=True)
// TypeScript: options object with camelCase for top-level params, snake_case for filter keys
await client.add(messages, { userId: 'alice', metadata: { source: 'chat' } });
await client.search('query', { filters: { user_id: 'alice' }, topK: 5, rerank: true });

v3: Python uses snake_case everywhere. TypeScript uses camelCase for top-level params (userId, topK) but snake_case for filter keys (user_id, agent_id).

Architectural Differences

AspectPythonTypeScript
HTTP libraryhttpxaxios
Default timeout300s60s
Sync supportYes (MemoryClient)No (all async)
Async supportYes (AsyncMemoryClient)All methods are async
Project managementclient.project.* (separate class)client.getProject() / client.updateProject()
Context managerasync with AsyncMemoryClient()Not supported

Platform Features: Python-only

These methods exist in Python but not TypeScript:

MethodDescription
get_summary(filters)Get summary of memories
reset()Delete ALL data (users + memories)
project.create(name)Create a new project
project.delete()Delete current project
project.get_members()List project members
project.add_member(email, role)Add member to project
project.update_member(email, role)Change member role
project.remove_member(email)Remove member

Platform Features: TypeScript-only

MethodDescription
deleteUser(data)Convenience method for single entity deletion
ping()Health check endpoint

OSS Config Naming

Python config keyTypeScript config key
vector_storevectorStore
history_db_pathhistoryDbPath
custom_instructionscustomInstructions

OSS Scope Parameter Naming

PythonTypeScript
user_id="alice"userId: 'alice'
agent_id="bot"agentId: 'bot'
run_id="session"runId: 'session'

Entity ID Passing (v3)

MethodPythonTypeScript
add()Top-level: user_id="alice"Top-level: { userId: 'alice' }
search()In filters: filters={"user_id": "alice"}In filters: { filters: { user_id: 'alice' } }
get_all()In filters: filters={"user_id": "alice"}In filters: { filters: { user_id: 'alice' } }

Common Gotcha

When searching/filtering, both Python and TypeScript use snake_case for filter keys. TypeScript only uses camelCase for top-level method parameters:

# Python - snake_case in filters
results = client.search("query", filters={"user_id": "alice"})
// TypeScript - snake_case in filters, camelCase for top-level params
const results = await client.search('query', { filters: { user_id: 'alice' }, topK: 20 });
Referenced from SKILL.md