Guide for designing effective memory architectures in Letta agents. Use when users need help structuring memory blocks, choosing between memory types, or optimizing memory management patterns.
This skill guides the design of effective memory architectures for Letta agents, including memory block structure, memory type selection, and concurrency patterns.
Use this skill when users are:
Consult references/memory-types.md for detailed comparison. Quick guidance:
Core Memory (in-context):
Archival Memory (out-of-context):
Conversation History:
Core principle: One block per distinct functional unit.
Essential blocks:
persona: Agent identity, behavioral guidelines, capabilitieshuman: User information, preferences, contextAdd domain-specific blocks based on use case:
For customer support:
company_policies:
description: "Company policies and procedures. Reference when handling customer requests."
read_only: true
product_knowledge:
description: "Product features and common issues. Update when learning new solutions."
read_only: false
customer:
description: "Current customer's context and history. Update as you learn more about them."
read_only: false
For coding assistants:
project_context:
description: "Current project architecture and active tasks. Update as project evolves."
coding_standards:
description: "Team's coding standards and review checklist. Reference before code suggestions."
read_only: true
current_task:
description: "Active task and implementation progress. Update as work progresses."
See references/memory-patterns.md for more domain examples.
Labels:
brand_guidelines not brand guidelinescustomer_profile, project_contextDescriptions: Use instructional style for blocks the agent actively manages:
Good:
"Brand tone and style guidelines. Reference this when generating content to ensure consistency with brand identity."
Poor:
"Contains brand information"
Template for active blocks:
[What this block contains]. [When to reference it]. [When/how to update it].
Consult references/description-patterns.md for examples.
Character limits per block:
When approaching limits:
customer_profile → customer_business, customer_preferencesinteraction_history → recent_interactions, archive older to archival memorySee references/size-management.md for strategies.
When multiple agents share memory blocks or agent processes concurrent requests:
Safest operations:
memory_insert: Append-only, minimal race conditionsRisk of race conditions:
memory_replace: Target string may change before writememory_rethink: Last-writer-wins, no mergeBest practices:
Consult references/concurrency.md for patterns.
Before finalizing memory architecture:
Too few blocks:
# Bad: Everything in one block
agent_memory: "Agent is helpful. User is John..."
Split into focused blocks instead.
Too many blocks: Creating 10+ blocks when 3-4 would suffice. Start minimal, expand as needed.
Poor descriptions:
# Bad
data: "Contains data"
Provide actionable guidance instead.
Ignoring size limits: Letting blocks grow indefinitely until they hit limits. Monitor and manage proactively.
After architecture design: