All nodes/AI/Conversation Memory
Buffer Memory
Stores the full conversation history without limits. Connects to an AI Agent or LLM Response via link_memory. Storage scope: thread (between messages), session (within an execution) or call (one-off).
Type in the graph: buffer_memory
ExecStateful
An error branch can be enabled (expose_error_output) to handle failures on their own path.
Try it
An agent that remembers the whole conversation
Memory attaches to the AI Agent over link_memory — it has no Run input of its own.
- Execute + Data
- LLM
- Memory
Runs as pasted Before running, set: a model in the LLM node.
When to use it
Buffer Memory hands the agent the entire conversation: nothing is trimmed, nothing is compressed. Reach for it while the dialogue stays short and predictable — a two-turn helper bot, a step-by-step questionnaire, a graph you are still debugging. Once a thread lives for a while the context grows with it and every next turn costs more than the last: that is the moment to switch to Window Memory (a fixed tail) or Summary Memory (older turns compressed into text).
How it works
The node never runs on its own — it has no Run input. A consumer pulls it over
link_memory, and there is exactly one such consumer: the Memory port of the
AI Agent. LLM Response has no
memory input at all — there you enable its own “Use Chat History” option or feed it a
Chat History node.
After each turn the agent appends the whole round: the user message, the model’s replies, the tool calls and their results. So “twenty messages” for a tool-using agent is often two or three actual exchanges.
The store is keyed by node id + thread + memory type. Two consequences follow: two memory nodes in one graph do not share history, and swapping Buffer for Window in the same spot starts the history over — the old messages stay in the database, but under a different key.
The Scope field decides how long a record lives: thread survives across chat messages and
is stored in the database; session lasts one execution; call starts empty every time.
Common mistakes
- The node sits on the canvas unconnected. On its own it does nothing: draw the link from its Memory output to the agent’s Memory port.
- Expecting history where there is no chat thread. A webhook, a schedule or the manual
Run button has no thread, so
threadmemory falls back to the execution id — it behaves likesession. - Confusing memory with chat history. The chat panel shows what the channel persisted; agent memory is a separate store with its own key. Delete the node or change its id and the agent forgets, while the transcript in the panel stays exactly where it was.
- Turning on “Set history from input” just to read. The
messages_inport overwrites the store completely. To inspect the current state, enable “Messages output” instead.
Inputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Set historymessages_in | Execute + Dataexecute_data | messages | shown when overwrite_from_input = true |
Outputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Memoryoutput | Memorylink_memory | — | |
Messagesmessages_out | Datadata | messages | shown when expose_messages_output = true |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
Messages outputexpose_messages_output | boolean | false | Show a data output port that emits the current stored messages. |
Set history from inputoverwrite_from_input | boolean | false | Show a Messages (ED) input port whose firing fully overwrites the stored history, plus a 'History set' exec output that fires once the history is written. |
Scopescope | string | thread | thread: persists between chat messages · session: lives for one execution · call: fresh each time Options: |
Shared fields
Every node has these three — the platform adds them, not the node author.
expose_error_output— When enabled, show an execution output to connect nodes that run if this step fails.