Memory is a store of short notes that an agent writes for itself and reads back in later conversations. An agent saves a project fact, a decision you approved, or a reference to an asset it generated. The next time you chat, it can find that note again without you repeating yourself.
Quick Access: Open the app menu in the sidebar and choose Memory to see everything the agent has saved.
What a memory holds
Each memory is one row with these fields.
| Field | What it holds |
|---|---|
| Kind | note, fact, preference, decision, or resource. An unknown value is saved as note. |
| Title | An optional short label |
| Content | The note itself, required |
| Resources | Optional typed references to things the note is about |
| Thread | The conversation the memory was saved in. Empty when it was saved outside a chat. |
| Created and updated times | Set by the store |
A resource reference has a type and an id, plus an optional uri and label. Known types are asset, workflow, collection, node, job, timeline, script, storyboard, image_document, thread, url, and other. Any other type string is also accepted.
Asset references are checked against your asset library. NodeTool fills in the asset:// URI and the asset name, and drops any reference to an asset it cannot find. The tool result reports the dropped references. Other types are stored as given.
How agents save and recall
Agents use five tools. They are always part of the built-in tool set, so you do not turn them on.
| Tool | What it does |
|---|---|
memory_save |
Saves a new memory. Takes content (required), title, kind, and resources. Returns the new memory_id. |
memory_list |
Lists memories, newest first. Takes limit (default 100, maximum 200), thread, and kinds. |
memory_search |
Finds memories by keyword. A memory matches only when every word in query appears in its title or content, ignoring case. Takes limit (default 25, maximum 200), thread, and kinds. |
memory_update |
Changes a memory by memory_id. Only the fields passed change. Passing resources replaces the whole list. |
memory_delete |
Deletes a memory by memory_id. |
For memory_list and memory_search, thread is either all (the default) or current. all reads every memory in your account. current narrows the result to the conversation the agent is running in. Each result item includes from_current_thread, so the agent can tell where a note came from.
Every tool needs a signed-in user. Without one the call returns “No user context; cannot access memory.”
What the agent sees at the start of a turn
At the start of each chat turn, NodeTool adds a <memory> block to the message. It contains the memories saved in the current conversation, up to 100, with their resource references. For memories saved in other conversations, it adds only a count and a hint to use memory_search or memory_list. The block is built from your 400 newest memories, so an older memory may not be counted. The agent reaches older or cross-conversation notes by calling the tools.
The block is marked as user data. The agent is told to use it as reference and not to follow instructions written inside a note.
The block is added for chat turns that belong to a thread. A memory saved by a run with no thread has an empty thread field, so it does not appear in any conversation’s block. The agent can still find it with memory_list or memory_search.
The Memory page
Open the app menu in the sidebar and choose Memory. The page opens as a tab titled Memory.
- List. Each memory is a card with its kind, title, creation time, content, and resources. Image assets show as thumbnails. Other resources show as chips such as
workflow: <id>. The page loads up to 200 memories. - Search. The Search memories box runs the same keyword match as
memory_search. Every word you type must appear in the memory. - Filter. When the results hold more than one kind, chips appear above the list. Select a kind to narrow the list, or All to reset.
- Open the source conversation. Hover over a card and click the conversation icon (Open the conversation this came from).
- Delete. Hover over a card, click the delete icon, and confirm in the Delete memory dialog. Deleting cannot be undone.
The page does not edit memories. To change a note, ask the agent to update it, and it calls memory_update.
An empty page reads “Nothing remembered yet.” Memories appear as agents save them while they work.
Scope and storage
Memory belongs to your user account, not to a conversation. A memory saved in one chat is readable from every other chat. Other accounts never see it. The thread field records where a note came from and works as a filter only.
Memories are rows in the NodeTool database. Deleting a chat thread also deletes the memories that were saved in it. Memories with no thread are not affected.
How it differs from run memory
NodeTool has a second, unrelated store also called memory. Agent Memory System describes context.memory, a scratch space shared by the steps of one workflow run through the list_shared, read_shared, and share_result tools. It is cleared when the run ends and is never shown on the Memory page.
| Durable memory (this page) | Run memory | |
|---|---|---|
| Lifetime | Until deleted | One run |
| Scope | Your account, all conversations | One run and its steps |
| Tools | memory_save, memory_list, memory_search, memory_update, memory_delete |
list_shared, read_shared, share_result |
| Visible to you | Memory page | Not shown |