Persistent Memory in
n8n with the Kronvex Node
n8n workflows forget everything between runs. The official n8n-nodes-kronvex community node gives your AI agents a persistent memory layer — install it in two clicks, store and recall context without writing a single line of code.
Why n8n agents forget between runs
n8n's built-in "Window Buffer Memory" node keeps context alive for the duration of a single workflow execution. The moment the run ends — triggered by a webhook, a scheduled cron, or a manual test — that memory is discarded. The next execution starts from a blank slate and has no knowledge of what any user said before.
For one-shot automations this doesn't matter. But for anything that interacts with the same user over time — support bots, sales follow-ups, onboarding sequences, research assistants — it is a fundamental limitation. Kronvex stores memories in a persistent, semantically searchable database hosted in the EU, and the Kronvex Memory node makes this available directly inside n8n with zero configuration overhead.
Install the community node
Community nodes are installed directly from the n8n interface. No terminal, no npm, no Docker rebuild required.
n8n-nodes-kronvexN8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true is set in your environment variables. Cloud n8n instances support community nodes natively.
Set up Kronvex credentials
You need a Kronvex API key and an Agent ID before you can use the node. Both are available for free from the Kronvex dashboard — no credit card required.
kv-) in the API Key field and click SaveThe credential is now available to all Kronvex Memory nodes in your instance. Use one credential for all your workflows — or create separate credentials for dev and production environments.
Core workflow: AI agent with persistent memory
The minimal pattern for a persistent AI agent in n8n is three nodes. Here is how to configure each one.
Node 1 — Trigger (Webhook or Chat)
Use a Webhook node (for API integrations) or the built-in n8n Chat Trigger. The trigger should output at minimum a userId (or sessionId) and the current userMessage. These two fields are what Kronvex will use to scope and search memories.
Node 2 — Kronvex Memory: Inject Context
Add a Kronvex Memory node immediately after the trigger. Set it up as follows:
| Field | Value |
|---|---|
| Credential | Select your Kronvex API credential |
| Resource | Memory |
| Operation | Inject Context |
| Agent ID | Your Agent ID from the dashboard |
| Message | {{ $json.userMessage }} |
| Session ID | {{ $json.userId }} |
This node returns a context string — a pre-formatted block of the most relevant past memories for this user and this message, ready to be inserted directly into an LLM system prompt.
Node 3 — AI Agent
Add an AI Agent node (or an OpenAI node). In the system prompt, reference the context output from the previous node:
You are a helpful assistant with access to the user's history. {{ $('Kronvex Memory').item.json.context }} Use the context above to personalise your response. If no context is available, proceed normally.
Node 4 — Kronvex Memory: Remember
After the AI Agent responds, add a final Kronvex Memory node to persist the new information:
| Field | Value |
|---|---|
| Resource | Memory |
| Operation | Remember |
| Agent ID | Your Agent ID |
| Memory Content | {{ $('AI Agent').item.json.output }} |
| Memory Type | episodic |
| Session ID | {{ $('Webhook').item.json.userId }} |
You can add a second Remember node in parallel to also store the user's original message with memory_type = episodic. Both messages will be retrievable in future runs.
Use case: sales intelligence workflow
Here is a more complete example. Your sales team receives a new prospect's LinkedIn profile via a webhook. The workflow checks what Kronvex already knows about this company, generates targeted research questions, and stores the new findings for future reference.
prospectName, company, linkedinUrl{{ $json.company }}, top_k: 8. Returns existing intel on this company from past interactions.semantic memory with session_id = companyThe next time your team encounters the same company, step 2 will immediately surface everything from previous calls, emails and research — scoped to that company's session ID. No spreadsheet hunting required.
Recall vs Inject Context — when to use which
The node exposes two operations for retrieving memories:
| Use when | You need to inspect or filter individual memories (scores, types, timestamps) |
|---|---|
| Returns | An array of memory objects, each with content, memory_type, score, created_at |
| Typical access | {{ $json.memories[0].content }} |
| Use when | You want to pipe directly into a system prompt with no extra formatting |
|---|---|
| Returns | A single context string, pre-formatted with headers and memory content |
| Typical access | {{ $json.context }} |
Node reference — all operations
Memory resource
| Field | Description |
|---|---|
| Agent ID | UUID of the Kronvex agent that owns this memory |
| Memory Content | Text to store (summary, fact, conversation excerpt…) |
| Memory Type | episodic (events), semantic (facts), procedural (patterns) |
| Session ID | Optional — scope to a user or conversation (email, UUID, etc.) |
| TTL Days | Optional — auto-expire the memory after N days |
| Field | Description |
|---|---|
| Agent ID | UUID of the agent to search |
| Query | Natural language search query (semantic similarity) |
| Top K | Number of memories to return (default 5) |
| Memory Type | Optional filter — return only episodic, semantic, or procedural |
| Threshold | Optional — minimum relevance score 0–1 (default 0.3) |
| Field | Description |
|---|---|
| Agent ID | UUID of the agent |
| Message | The current user message — used for semantic search |
| Session ID | Optional — scopes the search to a user's memories |
| Operation | Description |
|---|---|
| List | Returns all memories for an agent, with optional type and session filters |
| Delete | Deletes a specific memory by ID (Agent ID + Memory ID required) |
Agent resource
| Operation | Description |
|---|---|
| List | Returns all agents attached to your API key |
| Create | Creates a new agent — fields: Name, Description |
| Delete | Deletes an agent and all its memories permanently (Agent ID required) |
Tips and best practices
Session ID — the most important parameter
Without a session_id, all users of your workflow share the same memory pool. A support bot that forgets session scoping will hallucinate context from other users' conversations. Always pass a stable user identifier — email address, Supabase user ID, phone number — as the session ID on every Remember and Recall call.
Memory types for better signal
Use memory types to improve retrieval quality. Store what happened as episodic, store facts as semantic, store recurring patterns as procedural. You can then filter by type in Recall to retrieve only the kind of information relevant to a given step in your workflow.
TTL for transient context
Not every memory needs to live forever. Use the TTL Days parameter to auto-expire short-lived context — support ticket details after 30 days, session summaries after 7 days, temporary user preferences after 90 days. This keeps your memory store lean and retrieval scores high.
Error handling — never break your workflow
Enable Continue on Fail on your Inject Context and Recall nodes. If the Kronvex API is temporarily unreachable, your workflow should still complete — just with an empty context. The AI Agent will respond without memory context rather than the whole workflow failing.
- One agent per environment — create separate Kronvex agents for dev, staging, and production so test data never pollutes production memories
- Summarise before storing — for long AI outputs, add a summarisation step before Remember to keep memory content concise and retrieval fast
- GDPR compliance — all data is stored in the EU (Frankfurt). For deletion requests, use the Agent → Delete operation or the List + Delete Memory operations to wipe a user's session
- Parallel recall — n8n supports parallel branches. Run your Inject Context node in parallel with other setup nodes; Kronvex recall typically completes in under 40ms
Add persistent memory to your n8n workflows
Free plan — 100 memories, 1 agent. No credit card. Operational in under 5 minutes.
Get your free API key →