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.

Summary MemoryS
LLMMemory
Set historyMessages

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.

Entry
LLM
Summary MemoryS
AI Agent
Exit
  • Execute + Data
  • LLM
  • Memory
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

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 external with 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 thread memory falls back to the execution id — it behaves like session.

Inputs

PortWirePayloadNotes
LLMllmLLMlink_llm

LLM config node used for summarization

shown when llm_source ≠ "from_parent"

Set historymessages_inExecute + Dataexecute_datamessages

shown when overwrite_from_input = true

Outputs

PortWirePayloadNotes
MemoryoutputMemorylink_memory
Messagesmessages_outDatadatamessages

shown when expose_messages_output = true

Configuration

FieldTypeDefaultDescription
Messages outputexpose_messages_outputbooleanfalse

Show a data output port that emits the current stored messages.

LLM Sourcellm_sourcestringfrom_parent

from_parent uses LLM of connected ai_agent; external uses link_llm

Options: from_parent — From parent agent, external — External (link_llm)

Max Messages Before Summarymax_messages_before_summaryinteger20

When total messages exceed this, older ones are summarized

Set history from inputoverwrite_from_inputbooleanfalse

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_keepinteger6

Number of latest messages kept verbatim after summarization

Scopescopestringthread

thread: persists between chat messages · session: lives for one execution · call: fresh each time

Options: thread — Thread, call — Call, session — Session

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.