Hosted recall/save adapter backed by a mem0 server. mem0 owns extraction and ranking
server-side. Talks to the server over plain HTTP — no SDK peer dependency.
Setup
import { memoryMiddleware } from '@tanstack/ai-memory'
import { mem0 } from '@tanstack/ai-memory/mem0'
// Build per request from the server-validated session — never from req.body.
function memoryFor(session: { userId: string; threadId: string }) {
const memory = mem0({ user: session.userId }) // baseUrl defaults to MEM0_URL
return memoryMiddleware({ adapter: memory, scope: { threadId: session.threadId, userId: session.userId }, }) }
Requires a running mem0 server (self-hosted or hosted). Point it via `baseUrl` (or
`MEM0_URL`); pass `apiKey` (or `MEM0_ADMIN_API_KEY`) when secured.
## Options
- `user` — mem0 `user_id` (falls back to `scope.userId`, then `'demo-user'`).
- `baseUrl` — mem0 server URL (default `MEM0_URL` or `http://localhost:8000`).
- `apiKey` — bearer token (default `MEM0_ADMIN_API_KEY`).
- `rerank` (default `true`), `threshold` (default `0.1`) — search tuning.
**Scope fields:** requests send `user_id` and `run_id` (`scope.threadId`). `tenantId`
and `namespace` are not sent — encode multi-tenant isolation into `user` if needed.
`save` posts the `{ user, assistant }` turn to `/memories`; `recall` queries `/search`
and renders the results into the system prompt. mem0 exposes no LLM tools.