Memory
Persistent agent memory that works across sessions
The --memory flag and memory command enable persistent memory for agents, allowing them to remember context across sessions.
Quick Start
Show Memories
praisonai memory show
Use Memory Flag
# Enable memory for agent
praisonai "count to 5" --memory
Usage
Enable Memory
# Enable memory for agent (persists across sessions)
praisonai "My name is John" --memory
# Memory with user isolation
praisonai "Remember my preferences" --memory --user-id user123Expected Output:
🧠 Memory enabled
╭─ Agent Info ─────────────────────────────────────────────────────────────────╮
│ 👤 Agent: DirectAgent │
│ Role: Assistant │
│ Memory: Enabled (user: user123) │
╰──────────────────────────────────────────────────────────────────────────────╯
╭────────────────────────────────── Response ──────────────────────────────────╮
│ Nice to meet you, John! I'll remember your name for future conversations. │
╰──────────────────────────────────────────────────────────────────────────────╯
💾 Memory saved: name="John"Memory Commands
Show Memory
# Show 10 most recent memories (default)
praisonai memory show
# Change how many are shown
praisonai memory show --limit 25
praisonai memory show -l 25
# Isolate by user
praisonai memory show --user-id user123Output:
╭─ Memory Statistics ──────────────────────────────────────────────────────────╮
│ Short-term: 5 items │
│ Long-term: 12 items │
│ Entities: 3 items │
│ Episodic: 8 items │
╰──────────────────────────────────────────────────────────────────────────────╯List Memories
memory list is an alias for memory show — same output, added for parity with tools list, session list, and config list.
# List memories (default: 10 most recent)
praisonai memory list
# Show a specific number
praisonai memory list --limit 25
# Isolate by user
praisonai memory list --user-id user123 --limit 5memory show and memory list accept the same flags:
| Flag | Type | Default | Description |
|---|---|---|---|
--user-id | str | None | User ID for memory isolation |
--limit, -l | int | 10 | Number of memories to show |
Add Memory
praisonai memory add "User prefers Python"Search Memory
praisonai memory search "Python"Clear Memory
# Clear short-term memory (the default target)
praisonai memory clear
# Clear everything
praisonai memory clear allmemory clear and memory clear all prompt for confirmation, matching the memory learn clear sibling command’s flow:
$ praisonai memory clear all </dev/null
Clear ALL memories? This cannot be undone. [y/N]: Cancelled. # EXIT=1, memory intact
$ praisonai memory clear all --force
✅ All memory cleared # EXIT=0| Target | Clears | Notes |
|---|---|---|
short | Short-term memory only | Default when no target is given |
all | Everything | Now a valid target argument and works end-to-end |
| Flag | Short | Description |
|---|---|---|
--force | -f | Skip the confirmation prompt (required for scripts/CI) |
--user-id | Scope the clear to a single user’s memories |
An unknown target (anything other than short/all) exits 2; aborting the prompt exits 1 with nothing cleared.
Session Management
# Save session
praisonai memory save my_session
# Resume session
praisonai memory resume my_session
# List saved sessions
praisonai memory sessionsCheckpoints
# Create checkpoint
praisonai memory checkpoint
# Restore checkpoint
praisonai memory restore <checkpoint_id>
# List checkpoints
praisonai memory checkpointsHelp
praisonai memory helpMemory Types
| Type | Description | Persistence |
|---|---|---|
| Short-term | Rolling buffer of recent context | Auto-expires |
| Long-term | Important facts sorted by importance | Persistent |
| Entity | People, places, organizations | Persistent |
| Episodic | Date-based interaction history | Persistent |
How It Works
- Capture: Agent extracts important information from conversations
- Categorize: Information is sorted into memory types
- Store: Memories are persisted to storage
- Inject: Relevant memories are injected into future conversations
Storage Options
| Option | Dependencies | Description |
|---|---|---|
memory=True | None | File-based JSON storage (default) |
memory="file" | None | Explicit file-based storage |
memory="sqlite" | Built-in | SQLite with indexing |
memory="chromadb" | chromadb | Vector/semantic search |
Programmatic Usage
from praisonaiagents import Agent
from praisonaiagents import FileMemory
# Enable memory with a single parameter
agent = Agent(
name="Personal Assistant",
instructions="You are a helpful assistant that remembers user preferences.",
memory={"user_id": "user123"} # Enables memory with user isolation
)
# Memory is automatically injected into conversations
result = agent.start("My name is John and I prefer Python")
# Agent will remember this for future conversationsAdvanced Features
from praisonaiagents import FileMemory
memory = FileMemory(memory={"user_id": "user123"})
# Session Save/Resume
memory.save_session("project_session", conversation_history=[...])
memory.resume_session("project_session")
# Context Compression
memory.compress(llm_func=lambda p: agent.chat(p), max_items=10)
# Checkpointing
memory.create_checkpoint("before_refactor", include_files=["main.py"])
memory.restore_checkpoint("before_refactor", restore_files=True)
# Slash Commands
memory.handle_command("/memory show")
memory.handle_command("/memory save my_session")Best Practices
| Do | Don’t |
|---|---|
| Use user isolation for multi-user apps | Share memory across users |
| Clear short-term memory regularly | Let memory grow unbounded |
| Use checkpoints before major changes | Skip backups |
| Search before adding duplicates | Add redundant memories |