Skip to main content
The Memory Crystal OpenClaw plugin supports several configuration options defined in openclaw.plugin.json. You set these in your OpenClaw config under the plugin’s config block.

Setting plugin options

In ~/.openclaw/openclaw.json, add a config object under the crystal-memory plugin entry:
{
  "plugins": {
    "entries": {
      "crystal-memory": {
        "enabled": true,
        "config": {
          "apiKey": "your-api-key-here",
          "defaultRecallMode": "project",
          "defaultRecallLimit": 10,
          "channelScope": "your-team"
        }
      }
    }
  }
}
Never edit ~/.openclaw/openclaw.json while OpenClaw is running. Apply changes outside the runtime, validate with jq empty ~/.openclaw/openclaw.json, then restart the gateway.

Options reference

OptionTypeDefaultDescription
apiKeystringYour Memory Crystal API key. Equivalent to the MEMORY_CRYSTAL_API_KEY environment variable.
convexUrlstringhttps://your-deployment.convex.siteYour Convex backend URL. Override this for self-hosted deployments.
defaultRecallModestringgeneralDefault recall mode for this agent. See recall modes below.
defaultRecallLimitnumber8Number of memories returned per recall query. Range: 1–20.
channelScopestringNamespace prefix for isolating memory by tenant, client, or agent. See channel scoping below.
localSummaryInjectionbooleantrueWhen enabled, relevant summaries from the local store are injected into the context window based on the current query.
localSummaryMaxTokensnumber2000Maximum tokens to spend on injected local summaries. Range: 0–8000.

Recall modes

The defaultRecallMode option controls which memory stores and categories are prioritized during recall. The plugin selects the best mode automatically in most cases, but you can set a default that matches your agent’s primary use.
ModeBest for
generalOpen-ended queries across all memory (default)
decisionPre-change safety checks — surfaces decisions, lessons, and rules
projectActive feature work — pulls goals, workflows, and dependencies
peopleOwnership and relationship context
workflowProcedures, runbooks, and how-to memory
conversationRecent session continuity

Channel scoping

channelScope adds a namespace prefix to all memory operations for this plugin instance. When set, all API calls are namespaced as {channelScope}:{peerId}. This is useful when:
  • Multi-tenant applications — isolate one customer’s memories from another’s
  • Multiple agent lanes — run separate agents with their own memory spaces
  • Client isolation — keep per-client context from bleeding across engagements
For example, setting channelScope to "coach" means all memories for this agent are stored and retrieved under the coach: namespace.
{
  "config": {
    "channelScope": "coach"
  }
}
You can also override the channel scope at runtime using the crystal_set_scope tool without changing the config.