Spin up Mem0 with the Node SDK in just a few steps. You’ll install the package, initialize the client, add a memory, and confirm retrieval with a single search.
Prerequisites
- Node.js 18 or higher
- (Optional) OpenAI API key stored in your environment when you want to customize providers
Install and run your first memory
By default the Node SDK uses local-friendly settings (OpenAI gpt-4.1-nano-2025-04-14, text-embedding-3-small, in-memory vector store, and SQLite history). Swap components by passing a config as shown below.
Configure for production
import { Memory } from "mem0ai/oss";
const memory = new Memory({
version: "v1.1",
embedder: {
provider: "openai",
config: {
apiKey: process.env.OPENAI_API_KEY || "",
model: "text-embedding-3-small"
}
},
vectorStore: {
provider: "memory",
config: {
collectionName: "memories",
dimension: 1536
}
},
llm: {
provider: "openai",
config: {
apiKey: process.env.OPENAI_API_KEY || "",
model: "gpt-4-turbo-preview"
}
},
historyDbPath: "memory.db"
});
Manage memories (optional)
const allMemories = await memory.getAll({ userId: "alice" });
console.log(allMemories);
// Audit history
const history = await memory.history("892db2ae-06d9-49e5-8b3e-585ef9b85b8e");
console.log(history);
// Delete specific or scoped memories
await memory.delete("892db2ae-06d9-49e5-8b3e-585ef9b85b8e");
await memory.deleteAll({ userId: "alice" });
// Reset everything
await memory.reset();
Use a custom history store
The Node SDK supports Supabase (or other providers) when you need serverless-friendly history storage.
import { Memory } from "mem0ai/oss";
const memory = new Memory({
historyStore: {
provider: "supabase",
config: {
supabaseUrl: process.env.SUPABASE_URL || "",
supabaseKey: process.env.SUPABASE_KEY || "",
tableName: "memory_history"
}
}
});
Create the Supabase table with:
create table memory_history (
id text primary key,
memory_id text not null,
previous_value text,
new_value text,
action text not null,
created_at timestamp with time zone default timezone('utc', now()),
updated_at timestamp with time zone,
is_deleted integer default 0
);
Configuration parameters
Mem0 offers granular configuration across vector stores, LLMs, embedders, and history stores.
| Parameter | Description | Default |
|---|---|---|
provider | Vector store provider (e.g., "memory") | "memory" |
host | Host address | "localhost" |
port | Port number | undefined |
| Parameter | Description | Provider |
|---|---|---|
provider | LLM provider (e.g., "openai", "anthropic") | All |
model | Model to use | All |
temperature | Temperature value | All |
apiKey | API key | All |
maxTokens | Max tokens to generate | All |
topP | Probability threshold | All |
topK | Token count to keep | All |
openaiBaseUrl | Base URL override | OpenAI |
| Parameter | Description | Default |
|---|---|---|
provider | Graph store provider (e.g., "neo4j") | "neo4j" |
url | Connection URL | process.env.NEO4J_URL |
username | Username | process.env.NEO4J_USERNAME |
password | Password | process.env.NEO4J_PASSWORD |
| Parameter | Description | Default |
|---|---|---|
provider | Embedding provider | "openai" |
model | Embedding model | "text-embedding-3-small" |
apiKey | API key | undefined |
| Parameter | Description | Default |
|---|---|---|
historyDbPath | Path to history database | "{mem0_dir}/history.db" |
version | API version | "v1.0" |
customPrompt | Custom processing prompt | undefined |
| Parameter | Description | Default |
|---|---|---|
provider | History provider | "sqlite" |
config | Provider configuration | undefined |
disableHistory | Disable history store | false |
const config = {
version: "v1.1",
embedder: {
provider: "openai",
config: {
apiKey: process.env.OPENAI_API_KEY || "",
model: "text-embedding-3-small"
}
},
vectorStore: {
provider: "memory",
config: {
collectionName: "memories",
dimension: 1536
}
},
llm: {
provider: "openai",
config: {
apiKey: process.env.OPENAI_API_KEY || "",
model: "gpt-4-turbo-preview"
}
},
historyStore: {
provider: "supabase",
config: {
supabaseUrl: process.env.SUPABASE_URL || "",
supabaseKey: process.env.SUPABASE_KEY || "",
tableName: "memories"
}
},
disableHistory: false,
customPrompt: "I'm a virtual assistant. I'm here to help you with your queries."
};
What’s next?
Explore Memory Operations
Review CRUD patterns, filters, and advanced retrieval across the OSS stack.
Customize Configuration
Swap in your preferred LLM, vector store, and history provider for production use.
Automate Node Workflows
See a full Node-based workflow that layers Mem0 memories onto tool-calling agents.