---
title: "Configure the OSS Stack"
description: "Configure Mem0 OSS in Python or TypeScript with your own LLM, embedder, and vector store."
icon: "sliders"
---
Mem0 OSS works out of the box with OpenAI defaults. Point it at your own LLM, embedder, and vector store by passing a config when you create `Memory`. The Python SDK also supports a reranker and graph memory.
**Prerequisites**
- Python 3.10+ (`pip`) or Node.js 18+ (`npm`)
- A running vector store such as Qdrant or Postgres + pgvector (Python's default Qdrant and Node's in-memory store need nothing extra)
- API keys for your chosen LLM and embedder providers
New to Mem0 OSS? Run the Python or Node.js quickstart first, then come back to swap in your own providers.
## Install dependencies
```bash pip
pip install mem0ai
```
```bash npm
npm install mem0ai
```
Using Qdrant as your vector store? Install its Python client (the Node SDK talks to Qdrant over REST) and run the server locally:
```bash
pip install qdrant-client # Python only
docker run -p 6333:6333 qdrant/qdrant
```
## Define your configuration
Each component takes a `provider` and a `config`. Keys are `snake_case` in Python and `camelCase` in TypeScript. Pass the config when you create `Memory`:
```python Python
from mem0 import Memory
config = {
"vector_store": {
"provider": "qdrant",
"config": {"host": "localhost", "port": 6333},
},
"llm": {
"provider": "openai",
"config": {"model": "gpt-5-mini", "temperature": 0.1},
},
"embedder": {
"provider": "openai",
"config": {"model": "text-embedding-3-small"},
},
"reranker": {
"provider": "cohere",
"config": {"model": "rerank-v3.5"},
},
}
memory = Memory.from_config(config)
```
```ts Node.js
import { Memory } from "mem0ai/oss";
const memory = new Memory({
llm: {
provider: "openai",
config: { apiKey: process.env.OPENAI_API_KEY || "", model: "gpt-5-mini", temperature: 0.1 },
},
embedder: {
provider: "openai",
config: { apiKey: process.env.OPENAI_API_KEY || "", model: "text-embedding-3-small" },
},
vectorStore: {
provider: "qdrant",
config: { host: "localhost", port: 6333, collectionName: "memories" },
},
});
```
Set your provider keys as environment variables:
```bash
export OPENAI_API_KEY="..."
export COHERE_API_KEY="..." # Python reranker only
```
The TypeScript OSS SDK configures the LLM, embedder, vector store, and history store. Reranker and graph memory are Python-only today.
Prefer a config file? Load YAML into Python's `from_config`:
```python
import yaml
from mem0 import Memory
with open("config.yaml") as f:
config = yaml.safe_load(f)
memory = Memory.from_config(config)
```
Verify it works: add a memory and search it back. `memory.add(...)` followed by `memory.search(...)` should populate your vector store and return the memory as a top hit.
## Available providers
Change the `provider` string to switch backends. The most common options:
| Component | Python | TypeScript |
| --- | --- | --- |
| LLM | `openai`, `anthropic`, `gemini`, `groq`, `ollama`, `aws_bedrock`, `azure_openai`, `litellm` | `openai`, `anthropic`, `gemini`, `groq`, `ollama`, `aws_bedrock`, `azure_openai`, `mistral`, `deepseek` |
| Embedder | `openai`, `gemini`, `azure_openai`, `ollama`, `huggingface`, `vertexai`, `aws_bedrock` | `openai`, `gemini`, `azure_openai`, `ollama` |
| Vector store | `qdrant`, `pgvector`, `chroma`, `pinecone`, `redis`, `weaviate`, `milvus`, `elasticsearch` | `memory`, `qdrant`, `pgvector`, `redis`, `supabase`, `azure-ai-search`, `vectorize`, `milvus` |
See the full catalog in Components.
## Tune component settings
Name collections explicitly in production (`collection_name` / `collectionName`) to isolate tenants and enable per-tenant retention policies.
Keep extraction temperature at or below 0.2 so memories stay deterministic. Raise it only when you see facts being missed.
Limit `top_k` to 10 to 20 results. Sending more adds latency without meaningful gains.
Mixing managed and self-hosted components? Make sure every outbound provider call has a secure network path. Managed rerankers and embedders often require outbound internet even if your vector store is on-prem.
## Quick recovery
- Qdrant connection errors: confirm port `6333` is exposed and the API key (if set) matches.
- Empty search results: verify the embedder model name. A mismatch causes dimension errors.
- `Unknown reranker` (Python): upgrade the SDK with `pip install --upgrade mem0ai` to load the latest provider registry.
- `Cannot find module` (Node): import from the OSS entry point, `import { Memory } from "mem0ai/oss"`, not `"mem0ai"`.