> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Session memory

> A rolling per-conversation buffer that folds into a summary once the window fills.

**Session memory** is a rolling buffer that accumulates per conversation, automatically. The Agent doesn't do anything explicit: every chat message goes in, and older turns get folded into a running summary once the window fills.

## When to use it

* Chat-style Agents: for the "we talked about X earlier" continuity
* Multi-turn tasks: decisions made in an earlier turn need to stick for later ones
* Short-lived conversation history: mostly cleaned up when the session ends

For long-lived facts or team knowledge, use [Wiki](/build/memory/wiki) or [Index](/build/memory/index), not Session.

## Creating one

**Memory → New space → Session (chat)** creates one immediately.

## The detail page

* **Conversations** tab: list of conversations (scopes) on the left. Pick one and the right pane shows two blocks:
  * **Rolling summary** older turns folded into a summary. If the summary itself was re-summarised, an `L1` / `L2` badge shows the recursive depth.
  * **Recent turns** the verbatim tail still intact, in chronological order.
* **Settings** tab: covered below.

Session has **no Log tab** the conversation itself is this space's log. The Conversations tab is **read-only**; you don't delete or edit conversations from here.

## What you configure in Settings

**Basics** rename the space.

**Flow binding** bind to a specific Flow, or leave unbound and attach per-Agent.

**Scope** which request parameters partition conversations. Session memory typically uses `flow_id + thread_id`. See [Scoping](/build/memory/scoping).

**Access** (optional) partition key + required-permissions gate.

### Session buffer

The Session-only section that controls how conversations are stored and kept.

* **Store** the storage backend:
  * `redis`: hot and volatile. Fast, lost on restart. For short conversations
  * `postgres`: durable. Survives beyond the session
  * `both` (default): Redis for fast reads, Postgres for durability
* **Recent window** how much of the recent tail stays verbatim (before summarising):
  * **Basis**: `turns` or `tokens`
  * **Size**: how many to keep
* **Summarize** when on, older turns are folded into a rolling summary before the window overflows.
  * **Trigger** fraction of the window budget (0–1, default 0.8 = triggers at 80% full)
  * **Recursive summary** if the summary itself overflows, summarise the summary. For very long conversations
* **Trigger message** (optional) a short note dropped in the conversation when a summary fires. E.g. *"Earlier context summarized."*

### Summarizer

Appears when Summarize is on. Configures the agent that produces the rolling summary.

* **Model** the model that runs the summary. Pick from workspace providers. Blank uses a low-cost default.
* **Summarize prompt** (optional) customise how the summary is written. Example: *"Keep every decision and open question; drop chitchat."*

Unlike Wiki/Index, Session has **no policy prompt, multimodal, or background-writes options** Session doesn't curate facts; it just summarises.

## Attaching to an Agent

In the flow builder, open the Agent, go to the **Memory** tab, and click **Add memory**. Session typically scopes by `thread_id`, so make sure the trigger (API/webhook) passes `threadId`. The same `threadId` continues the same conversation.

## How conversations get written

Nothing to do: every turn's user input, Agent response, and tool calls land in this space automatically. Summarisation kicks in when the window fills per the settings above.

## Cleaning up conversations

Session isn't designed for long-term data, so Wiki/Index concepts like supersede, importance decay, and per-item delete don't apply. If Store is `redis` (or the Redis layer of `both`), sessions clear naturally when they end or Redis restarts. For anything held in `postgres`, use admin tools or [`nora memory`](/cli/memory) to clean up by scope.
