GAIA Agent Memory is a persistent knowledge system that gives your agent a second brain. It remembers facts, preferences, errors, and workflows across sessions — so every conversation picks up where the last one left off. All data stays local on your machine in a single SQLite file.Documentation Index
Fetch the complete documentation index at: https://amd-gaia.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
First time here? Complete the Setup guide first, then come back to enable memory.
Memory is currently integrated into the Chat Agent. Any agent built on the GAIA Agent base class can add memory via the
MemoryMixin — see the Memory SDK Reference for developer details.Memory is opt-in (beta) and disabled by default. This feature is still under active development — every new GAIA install ships with memory off, so you’ll see standard chat behavior until you turn it on. See Enable Memory below before trying any examples on this page.
Enable Memory
Memory is off by default. Turn it on once and it stays on for every futuregaia chat session on this machine.
Via the Agent UI (recommended)
- Launch the Agent UI:
gaia chat --ui - Click the Brain icon in the toolbar to open the Memory Dashboard.
- Click the Off toggle next to Memory; a confirmation modal appears. Click Enable Memory in the modal to confirm. The agent picks up the change on its next message — no restart needed.
Via the API (for headless / scripted setups)
~/.gaia/memory.db.
Once enabled, conversations are summarized into
~/.gaia/memory.db — a plaintext SQLite file (not encrypted). The Sensitive Data section below explains the sensitive flag for controlling system-prompt visibility; do not store passwords or tokens in agent memory.Try It Right Now
Five minutes after you enable memory (above). Here’s what a second brain feels like:How It Works
Agent memory operates on four principles:- Store automatically once enabled — conversations, tool calls, errors, and preferences are captured without manual effort
- Recall naturally — hybrid semantic+keyword search finds memories by meaning, not just exact words. The LLM decides when to search using its own tools (no forced pre-query step).
- Learn continuously — LLM extraction from every conversation, not just regex patterns. The agent sees what it already knows and decides what’s new, what’s changed, and what’s contradicted — like intelligent memory management.
- Be temporally aware — the agent knows the current time, what is coming up, what is overdue, and proactively surfaces time-sensitive items
~/.gaia/memory.db (SQLite with WAL mode for concurrent reads). No cloud services, no external dependencies.
Quick Start
Bootstrap your memory
Run the day-zero onboarding flow. The agent asks a few questions about you and optionally scans your system to discover projects, tools, and interests:You can run just the conversational part or just the system discovery:
Check memory status
See how much the agent knows and how the memory is structured:This shows counts by category (fact, preference, error, skill, note, reminder), context (work, personal, global), total conversations, tool call stats, and database size.
Start chatting
With memory enabled (see Enable Memory above), the agent injects relevant knowledge into its system prompt and uses memory tools during conversation:Try saying things like:
- “Remember that our project uses React 19 with the app router”
- “I prefer concise answers with code examples”
- “What do you know about me?”
- “What did we talk about last week?”
Memory Tools
The agent has 5 memory tools it can use during conversation. You do not call these directly — the LLM decides when to use them based on your conversation.remember
Stores a new fact, preference, error pattern, or skill in persistent memory.recall
Searches memory for relevant knowledge using hybrid semantic+keyword search — it finds concepts, not just exact keywords. If you say “frontend framework,” it matches memories about React, Vue, and Angular, even if those exact words aren’t in your query.time_from and time_to. The agent converts natural language dates to concrete time ranges using the current date it always knows:
update_memory
Modifies an existing memory entry. The agent usesrecall first to find the ID, then updates it.
forget
Removes a specific memory entry by ID.search_past_conversations
Searches across all past conversation sessions by keyword, time range, or both.Your Second Brain
Memory turns GAIA into a personal knowledge system that grows smarter with every conversation. Here are real things you can try right now.Daily Journal
Log your work at the end of the day. Recall it weeks later without digging through notes.Meeting Notes
Capture standup notes, and the agent automatically extracts per-person facts and deadlines.Research & Reading Notes
Save article summaries, then find them by concept — not just keywords.Personal Reminders
Set reminders with due dates. The agent surfaces them proactively — even if you’re talking about something else.Contact Profiles
Build knowledge about people across conversations. The agent links everything to entities.Error Learning
When a tool fails, the agent remembers the error pattern and avoids it next time — automatically.Knowledge Categories
Every memory entry belongs to one of six categories:| Category | What it stores | Example |
|---|---|---|
| fact | Things about you, your projects, your world | ”User’s project uses React 19 with app router” |
| preference | How you want the agent to behave | ”User prefers concise answers”, “Always use dark mode” |
| error | Tool error patterns to avoid in the future | ”pip install torch fails without —index-url on this machine” |
| skill | Learned workflows and multi-step patterns | ”To deploy: run tests, build, push to staging, verify, promote” |
| note | Free-form observations, journal entries, or meeting notes | ”Standup 2026-04-01: API migration complete” |
| reminder | Time-sensitive items to follow up on | ”Check if the PR was merged by Friday” (use with due_at) |
Context Scoping
Different areas of your life produce different knowledge. Without scoping, the agent mixes work deployment commands with personal dentist appointments. Contexts keep them separate.| Context | When it is active | What it contains |
|---|---|---|
global | Always included | Universal preferences, your name, timezone |
work | Work-related tasks | Colleagues, project details, work tools |
personal | Personal assistant mode | Appointments, health goals, personal contacts |
Custom (e.g., project-x) | User-defined per project | Project-specific facts, skills, errors |
global items plus items from the active context. You can switch contexts mid-session:
Sensitive Data
Some knowledge is private — email addresses, API tokens, health information, financial data. Thesensitive flag controls how this data is handled:
| Where | Normal (default) | Sensitive |
|---|---|---|
| System prompt | Included | Never included |
recall results | Returned | Returned (explicit query only) |
| Tool history args | Full args logged | Args redacted to keys only |
| Memory Dashboard | Normal display | Content blurred until clicked |
recall — it just will not be broadcast in the system prompt where it could leak into logs or debugging output.
Entity Linking
For managing contacts, apps, and services, the agent associates knowledge with specific entities using atype:name convention:
| Entity pattern | Example knowledge |
|---|---|
person:sarah_chen | ”Sarah Chen, VP Engineering, [email protected]” |
person:sarah_chen | ”Sarah prefers morning meetings” |
app:vscode | ”User prefers dark mode, 4-space tabs” |
service:gmail | ”User’s work email is [email protected]” |
project:gaia | ”Project uses Python 3.12, uv for package management” |
recall(entity="person:sarah_chen") to get her email and preferences.
Temporal Awareness
The agent always knows the current date and time. It can track commitments and deadlines using thedue_at field on memory entries.
How reminders work
- You mention something time-sensitive — the agent stores it with a
due_atdate - As the date approaches, the agent sees it in its per-turn context and proactively mentions it
- After mentioning it, the agent marks
reminded_atso it does not repeat itself - If the due date passes, the item appears as overdue until resolved
Accountability
The agent can hold you accountable to your own commitments:Intelligent Extraction
After each conversation turn (with memory enabled), the agent automatically decides what’s worth remembering — without you saying “remember.” This isn’t pattern matching; the LLM sees your existing memory alongside the new conversation and makes intelligent decisions:- ADD — new knowledge not already in memory
- UPDATE — a fact has changed (old version preserved with lineage)
- DELETE — information explicitly contradicted
How it works
You say “we switched from React to Vue.” The agent:- Searches existing memory, finds
"Project uses React 19"(stored last month) - Recognizes this is a correction, not a new fact
- Creates a new entry:
"Project uses Vue 3 (switched from React)" - Marks the old React entry as
superseded_bythe new one — preserving history
What gets extracted
The agent extracts information that would be useful in future conversations — facts, preferences, project details, people, deadlines. It skips greetings, task confirmations, and ephemeral details.Memory Dashboard
The Agent UI includes a full-page Memory Dashboard for viewing and managing everything the agent knows. Click the Brain icon in the toolbar to open it.What you can see
- Stats overview — total memories, sessions, tool calls, success rate, and embedding coverage
- Knowledge browser — filterable, sortable table of all memory entries with inline editing
- Tool performance — per-tool success rates, error history, average duration
- Upcoming and overdue — time-sensitive items due soon or past due
- Conversation history — searchable archive of all past sessions with consolidation status
- Superseded items — toggle to see fact history and how knowledge evolved over time
What you can do
- Create new memory entries manually (stored with high confidence)
- Edit any field on any memory entry — content, category, context, entity, sensitivity
- Delete entries the agent got wrong
- Toggle sensitive to hide or show private data
- Search across all knowledge using hybrid semantic+keyword search
- Filter by category, context, or entity
Maintenance actions
The dashboard also provides maintenance tools for keeping your memory healthy:- Consolidate — distill old conversation sessions into durable knowledge notes
- Rebuild Embeddings — re-embed all knowledge items and rebuild the search index
- Reconcile — scan for contradictory facts across sessions and resolve them automatically
To launch the Agent UI with the dashboard:
gaia chat --uiHow Memory Improves Over Time
Confidence scoring
Every memory entry has a confidence score from 0.0 to 1.0:| Source | Confidence | How created |
|---|---|---|
| LLM-extracted | 0.4 | Automatically captured from conversation |
| Discovery | 0.4 | Found during bootstrap system scan |
| Tool-stored | 0.5 | Agent explicitly called remember() |
| Error auto | 0.5 | Automatically stored from tool failure |
| Consolidation | 0.5 | Distilled from old conversation sessions |
| User-created | 0.8 | Manually added via the dashboard |
Confidence decay
Memories that are not accessed for 30+ days have their confidence multiplied by 0.9. This happens once per session start. Over time, stale knowledge naturally fades from the system prompt in favor of actively-used information.Fact lineage
When facts change, the old version is preserved with asuperseded_by link. You can see the full history of how a fact evolved in the dashboard’s superseded view.
Automatic error learning
When a tool call fails, the agent automatically stores the error pattern as knowledge. Next time, the system prompt includes “Known errors to avoid” so the agent can handle or avoid the same failure.Session consolidation
Conversations older than 14 days are automatically distilled into durable knowledge items. The LLM summarizes each old session and extracts facts worth preserving, then stores them as notes. The original conversations remain until the 90-day prune, but the extracted knowledge lives indefinitely. This means you never lose important context — even from conversations months ago.Background reconciliation
On startup, the agent scans for contradictory facts across sessions and resolves them automatically. If it finds two items that say conflicting things (e.g., “uses PostgreSQL” and “migrated to DynamoDB”), it supersedes the older one and boosts the newer one’s confidence. Reinforcing facts get a confidence boost too. You don’t need to do anything — the agent keeps its own knowledge consistent.Privacy
100% Local
All memory is stored in a single SQLite file at
~/.gaia/memory.db. Nothing is transmitted to any server or cloud service.User Control
You can view, edit, and delete any memory entry via the dashboard or CLI. The agent only knows what you approve.
Bootstrap Consent
System discovery scans are opt-in. The agent shows you what it found and asks for approval before storing anything.
Sensitive Flagging
Mark any entry as sensitive to exclude it from the system prompt. Browser history and email addresses are auto-flagged during bootstrap.
Deleting all memory
To reset discovery-sourced items while preserving your manual edits:CLI Reference
| Command | Description |
|---|---|
gaia memory bootstrap | Run full onboarding (conversation + discovery) |
gaia memory bootstrap --chat-only | Conversational onboarding only |
gaia memory bootstrap --discover | System discovery scan only |
gaia memory bootstrap --reset | Delete discovery items (with confirmation) |
gaia memory status | Show memory stats (counts, categories, contexts) |
Next Steps
Memory SDK Reference
MemoryMixin API, MemoryStore class, and code examples for adding memory to custom agents
Agent UI
Desktop interface with Memory Dashboard for visual knowledge management
Agent SDK
Chat SDK for building conversational agents programmatically
Build Your First Agent
Create a custom agent with tools and memory in minutes