Add user-scoped memory
Agent Studio memory lets an agent retain useful context for a user across conversations. Configure memory in Agent Studio first, then give DocSearch a secure user token so Agent Studio can isolate each user's data.
Read the Agent Studio memory overview before enabling memory in production.
Generate a secure user token
Generate the JWT on your backend after authenticating the user. Follow the Agent Studio user authentication guide for the required claims, signing algorithm, and key ID.
Protect the token flow:
- Never generate the token in browser code.
- Never expose the Algolia secret key used to sign it.
- Use a stable, non-sensitive user identifier in the JWT
subclaim. - Set an expiration and refresh expired tokens.
- Serve the token only over HTTPS.
- Don't put sensitive user data in JWT claims. JWT payloads aren't encrypted.
Pass the token to DocSearch
Fetch a token from your backend and pass it as memory.userToken:
const response = await fetch('/api/agent-studio-token', {
credentials: 'include',
});
const { userToken } = await response.json();
docsearch({
container: '#docsearch',
appId: 'YOUR_APPLICATION_ID',
apiKey: 'YOUR_SEARCH_API_KEY',
indices: ['docs'],
askAi: {
agentId: 'YOUR_AGENT_ID',
memory: {
enabled: true,
userToken,
},
},
});
Use the same askAi.memory object with React's DocSearchAI.
When userToken is present, DocSearch sends it in the X-Algolia-Secure-User-Token request header. When it's absent, DocSearch omits the header. Don't use unscoped memory for a multi-user application.
memory.enabled
type: boolean| optional
Controls whether DocSearch displays Agent Studio's built-in memory tool activity:
algolia_memorizedisplays that information was saved.algolia_ponderandalgolia_memory_searchdisplay that memory was used.- Memory tool errors aren't displayed.
The default is false.
This option doesn't enable memory in Agent Studio and doesn't create a user identity. Configure the feature on the agent and pass userToken for user isolation. DocSearch sends userToken when provided even if enabled is false.
A custom entry in askAi.tools with the same memory tool name replaces the built-in memory rendering.
See the JavaScript package reference or React package reference for the Memory configuration type.