All nodes/AI/Conversation Memory
Summary Memory
Stores the conversation history, automatically compressing older messages via LLM summarization. The LLM can be taken from the connected agent or set separately via link_llm.
Type in the graph: summary_memory
ExecStateful
An error branch can be enabled (expose_error_output) to handle failures on their own path.
Try it
An agent with a self-compressing history
Memory attaches over link_memory and summarises with the agent's own model by default.
- Execute + Data
- LLM
- Memory
Runs as pasted Before running, set: a model in the LLM node.
When to use it
Summary Memory is for conversations that run long and cannot simply be cut short: a consultation, a guided selection, a ticket followed over days. The node accumulates history like Buffer Memory, but on overflow it does not drop the old part the way Window Memory does — it sends it to a model and replaces it with a single summary. The price is an extra LLM call: of the three memories, only this one spends money by itself.
How it works
The threshold is “Max Messages Before Summary” (20 by default). Once the store holds that many messages or more, everything except the last “Recent Messages to Keep Raw” (6 by default) goes to the model in one request, and the result replaces them with a text summary. The previous summary is included in that request, so it is extended rather than rewritten from scratch. In the agent’s context the summary arrives as a separate message ahead of the stored turns.
“LLM Source” decides where the model comes from. from_parent (the default) reuses the
model of the connected agent and needs no extra port. external reveals an LLM input:
attach your own LLM node there, usually with a cheaper model — the
summary is not written by the model that answers the user.
Compression runs synchronously, before the agent starts answering, and is capped at 45 seconds. If the request overruns or fails, the run does not fail: the un-compressed history goes to the model and a warning is written to the logs.
Common mistakes
- Leaving “LLM Source” on
externalwith no LLM node attached. Below the threshold everything looks fine; at the threshold compression simply does not happen, the history keeps growing, and nothing in the interface says so. - Looking for the summary in the workflow output. It lives in the memory store and goes into the agent’s context. The node exposes only the Memory link outward, plus the current messages when “Messages output” is enabled.
- Forgetting that “Set history from input” clears the summary along with the messages: it described the previous conversation and would be wrong after an overwrite.
- 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.
Inputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
LLMllm | LLMlink_llm | — | LLM config node used for summarization shown when llm_source ≠ "from_parent" |
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. |
LLM Sourcellm_source | string | from_parent | from_parent uses LLM of connected ai_agent; external uses link_llm Options: |
Max Messages Before Summarymax_messages_before_summary | integer | 20 | When total messages exceed this, older ones are summarized |
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. |
Recent Messages to Keep Rawrecent_messages_to_keep | integer | 6 | Number of latest messages kept verbatim after summarization |
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.