Overview
Agent Memory is available through early access. You must explicitly request access before you can use it.
What Is Agent Memory
Agent Memory gives your AI agents persistent, per-user memory. Instead of starting every session from scratch, your agents can recall relevant memories from previous conversations, adapt responses based on past preferences, and build lasting context across sessions.
With Memory you can:
- Store conversation exchanges between users and agents in a searchable knowledge base
- Recall the most relevant past memories before generating a response
- Let the LLM itself decide when to remember, recall, or forget information
- Browse, search, and delete extracted memories from the platform UI
How It Works
The Memory solution has three layers:
- SDK — Lightweight .NET and Python libraries that integrate with your agent. They send conversation messages to the backend and retrieve relevant memories. Two integration styles are available: automatic middleware that recalls memories when the wrapped client or chain is invoked, and tool functions the LLM calls on demand.
- Backend — A .NET Web API (
memory-api) that stores conversations and extracted memories in an organization-specific knowledge base. End-user and agent identifiers scope storage and retrieval within that knowledge base. The backend exposes REST endpoints consumed both by the SDK and the platform UI. - Platform UI — The Memory section in the Progress Observability Platform web dashboard. Use it to monitor storage usage, browse conversations and extracted memories, manage API keys, and tune extraction settings.
Data flow: Your Agent (SDK) → Memory Backend (Storage & Extraction) → Knowledge Base → Platform UI (Browse & Manage)
Key Concepts
Learn key concepts and terminology used throughout the Memory platform.
Memory Item
A memory item is one stored piece of information. In the UI and APIs, the main content is represented by the memory item's text field.
Each memory item can also include metadata used for filtering and ranking:
categorystatusscore- identifiers linking the memory to its source conversation/resource
Category
category is a label on a memory item used for organization and filtering.
Categories organize memories by meaning, for example, by preference, profile, domain, or constraint. They improve retrieval quality when combined with search and status filters.
Status: active and outdated
activeidentifies a current memory that is eligible for retrieval by default.outdatedidentifies a historical memory that is excluded from retrieval unless explicitly requested.
When a new fact replaces an existing fact, such as a changed dietary preference, the backend marks the previous memory as outdated. Recall and search exclude outdated memories by default to avoid prioritizing superseded information.
For debugging, historical analysis, or audits, enable IncludeOutdated (.NET) or include_outdated (Python) on recall requests. Middleware, plugins, and tools use includeOutdatedByDefault or include_outdated_by_default. These options are optional and disabled by default; the application controls them, not the LLM.
Outdated results include their status and the replacement memory's ID in OutdatedById (.NET) or outdated_by_id (Python).
Score
score is a numeric value returned with a memory item and used for ranking/relevance during retrieval.
Higher score generally means the memory is a better match for the current context. Lower score usually means weaker relevance or confidence.