Persistent memory for OpenClaw agents. Store decisions, preferences, and context that survive across sessions. Build knowledge graphs that compound over time. Hybrid search (BM25 + vector + graph) recalls what matters when you need it.
Persistent memory for OpenClaw agents. Store decisions, preferences, and context that survive across sessions. Build knowledge graphs that compound over time. Hybrid search (BM25 + vector + graph) recalls what matters when you need it.
Persistent memory that compounds. Your agent remembers conversations, learns preferences, connects ideas, and picks up exactly where it left off—across sessions, days, and channels.
Tools
Memory
Tool
Purpose
When to use
penfield_store
Save a memory
User shares preferences, you make a discovery, a decision is made, you learn something worth keeping
penfield_recall
Hybrid search (BM25 + vector + graph)
Need context before responding, resuming a topic, looking up prior decisions
penfield_search
Semantic search (higher vector weight)
Fuzzy concept search when you don't have exact terms
penfield_fetch
Get memory by ID
Following up on a specific memory from recall results
penfield_update_memory
Edit existing memory
Correcting, adding detail, changing importance or tags
Knowledge Graph
Tool
Purpose
When to use
penfield_connect
Link two memories
New info relates to existing knowledge, building understanding over time
penfield_explore
Traverse graph from a memory
Understanding how ideas connect, finding related context
Context & Analysis
Tool
Purpose
When to use
penfield_save_context
Checkpoint a session
Ending substantive work, preparing for handoff to another agent
Memory content quality determines whether Penfield is useful or useless. The difference is specificity and context.
Bad — vague, no context, unfindable later:
"User likes Python"
Good — specific, contextual, findable:
"[Preferences] User prefers Python over JavaScript for backend work.
Reason: frustrated by JS callback patterns and lack of type safety.
Values type hints and explicit error handling. Uses FastAPI for APIs."
What makes a memory findable:
Context prefix in brackets: [Preferences], [Project: API Redesign], [Investigation: Payment Bug], [Decision]
The "why" behind the "what" — rationale matters more than the fact itself
Specific details — names, numbers, dates, versions, not vague summaries
References to related memories — "This builds on [earlier finding about X]" or "Contradicts previous assumption that Y"
Memory Types
Use the correct type. The system uses these for filtering and analysis.
Type
Use for
Example
fact
Verified, durable information
"User's company runs Kubernetes on AWS EKS"
insight
Patterns or realizations
"Deployment failures correlate with Friday releases"
correction
Fixing prior understanding
"CORRECTION: The timeout isn't Redis — it's a hardcoded batch limit"
conversation
Session summaries, notable exchanges
"Discussed migration strategy. User leaning toward incremental approach"
reference
Source material, citations
"RFC 8628 defines Device Code Flow for OAuth on input-constrained devices"
task
Work items, action items
"TODO: Benchmark recall latency after index rebuild"
strategy
Approaches, methods, plans
"For user's codebase: always check types.ts first, it's the source of truth"
checkpoint
Milestone states
"Project at 80% — auth complete, UI remaining"
identity_core
Immutable identity facts
Set via personality config, rarely stored manually
personality_trait
Behavioral patterns
Set via personality config, rarely stored manually
relationship
Entity connections
"User works with Chad Schultz on cybersecurity content"
API — direct HTTP access at api.penfield.app for custom integrations.
Same memory, same knowledge graph, same account. The plugin is 4-5x faster (no MCP proxy layer), but everything stays in sync regardless of how you connect.