This guide provides a single config profile that explicitly enables all major v8 feature families in openclaw-engram.
Apply under:
plugins.entries.openclaw-engram.enabled = trueplugins.entries.openclaw-engram.config = { ... }
- Keep secrets in environment variables (
${OPENAI_API_KEY}), not hardcoded keys. - If you run many features at once, expect higher extraction/consolidation activity.
debug: trueis recommended while validating; disable later for quieter logs.- If you use
conversationIndexBackend: "faiss", installscripts/faiss_requirements.txtfirst and optionally setENGRAM_FAISS_ENABLE_ST=1for sentence-transformers embeddings. - If you prefer QMD for transcript recall, swap the FAISS fields for
conversationIndexBackend: "qmd"plusconversationIndexQmdCollection. procedural.enabledturns on issue #519 procedural memory (writes underprocedures/, recall injection, mining). The sample block above enables it; remove theproceduralobject or set"enabled": falseif you want this profile without procedural behavior. See procedural-memory.md.
After config changes:
launchctl kickstart -k gui/$(id -u)/ai.openclaw.gatewayRun all commands:
openclaw engram compat --strict
openclaw engram stats
openclaw engram conversation-index-health
openclaw engram conversation-index-inspect
openclaw engram graph-health
openclaw engram tier-status
openclaw engram policy-statusExpected:
compat --strict: exits0stats:QMD: availableconversation-index-health:status: "ok"when backend isqmdconversation-index-inspect: returns backend metadata and artifact state without mutating the indexgraph-health: JSON report without runtime command failuretier-status: returns migration telemetry JSONpolicy-status: returns runtime policy snapshot JSON
The config above uses QMD (default). To use an alternative backend, add:
{
"searchBackend": "orama" // or "lancedb", "meilisearch", "remote", "noop"
}See Search Backends for full options.
{ "openaiApiKey": "${OPENAI_API_KEY}", "qmdEnabled": true, "qmdCollection": "openclaw-engram-hot-facts", "qmdColdTierEnabled": true, "qmdColdCollection": "openclaw-engram-cold", "conversationIndexEnabled": true, "conversationIndexBackend": "faiss", "conversationIndexFaissPythonBin": "python3", "conversationIndexFaissModelId": "text-embedding-3-small", "conversationIndexFaissIndexDir": "state/conversation-index/faiss", "recallPlannerEnabled": true, "memoryBoxesEnabled": true, "traceWeaverEnabled": true, "episodeNoteModeEnabled": true, "queryAwareIndexingEnabled": true, "multiGraphMemoryEnabled": true, "graphRecallEnabled": true, "graphAssistShadowEvalEnabled": true, "temporalMemoryTreeEnabled": true, "lifecyclePolicyEnabled": true, "lifecycleFilterStaleEnabled": true, "lifecycleMetricsEnabled": true, "procedural": { "enabled": true, "proceduralMiningCronAutoRegister": false }, "proactiveExtractionEnabled": true, "contextCompressionActionsEnabled": true, "compressionGuidelineLearningEnabled": true, "compressionGuidelineSemanticRefinementEnabled": true, "identityEnabled": true, "identityContinuityEnabled": true, "continuityAuditEnabled": true, "continuityIncidentLoggingEnabled": true, "routingRulesEnabled": true, "sessionObserverEnabled": true, "sharedContextEnabled": true, "sharedCrossSignalSemanticEnabled": true, "compoundingEnabled": true, "compoundingInjectEnabled": true, "compoundingSemanticEnabled": true, "compoundingWeeklyCronEnabled": true, "qmdTierMigrationEnabled": true, "qmdTierAutoBackfillEnabled": true, "behaviorLoopAutoTuneEnabled": true, "debug": true }