Files
claude-mem/openclaw/openclaw.plugin.json
zengyuzhi fe8c65a8cd feat(openclaw): add workerHost config for Docker deployments
When the OpenClaw gateway runs in Docker and the claude-mem worker runs
on the host, localhost:37777 is unreachable from inside the container.

Add a workerHost config option (default: 127.0.0.1) so users can set it
to host.docker.internal for Docker-based deployments.

Changes:
- Add workerHost to ClaudeMemPluginConfig interface
- Read workerHost from plugin config in plugin entry point
- Update workerBaseUrl to use configurable host
- Add workerHost to openclaw.plugin.json config schema
- Update startup log to show configured host
2026-03-25 14:40:33 +08:00

98 lines
3.8 KiB
JSON

{
"id": "claude-mem",
"name": "Claude-Mem (Persistent Memory)",
"description": "Official OpenClaw plugin for Claude-Mem. Records observations from embedded runner sessions and streams them to messaging channels.",
"kind": "memory",
"version": "10.4.1",
"author": "thedotmack",
"homepage": "https://claude-mem.com",
"skills": ["skills/make-plan", "skills/do"],
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"syncMemoryFile": {
"type": "boolean",
"default": true,
"description": "Inject observation context into the agent system prompt via before_prompt_build hook. When true, agents receive cross-session context without MEMORY.md being overwritten."
},
"syncMemoryFileExclude": {
"type": "array",
"items": { "type": "string" },
"default": [],
"description": "Agent IDs excluded from automatic context injection (observations are still recorded, only prompt injection is skipped)"
},
"workerPort": {
"type": "number",
"default": 37777,
"description": "Port for Claude-Mem worker service"
},
"workerHost": {
"type": "string",
"default": "127.0.0.1",
"description": "Hostname for Claude-Mem worker service. Set to host.docker.internal when the gateway runs in Docker and the worker runs on the host."
},
"project": {
"type": "string",
"default": "openclaw",
"description": "Project name for scoping observations in the memory database"
},
"observationFeed": {
"type": "object",
"description": "Live observation feed — streams observations to any OpenClaw channel in real-time",
"properties": {
"enabled": {
"type": "boolean",
"default": false,
"description": "Enable live observation feed to messaging channels"
},
"channel": {
"type": "string",
"description": "Channel type: telegram, discord, signal, slack, whatsapp, line"
},
"to": {
"type": "string",
"description": "Target chat/user ID to send observations to"
},
"botToken": {
"type": "string",
"description": "Optional dedicated Telegram bot token for the feed (bypasses gateway channel)"
},
"emojis": {
"type": "object",
"description": "Emoji personalization for the observation feed. Each agent gets a unique emoji automatically — customize here to override.",
"properties": {
"primary": {
"type": "string",
"default": "🦞",
"description": "Emoji for the main OpenClaw gateway (project='openclaw')"
},
"claudeCode": {
"type": "string",
"default": "⌨️",
"description": "Emoji for Claude Code sessions (non-OpenClaw)"
},
"claudeCodeLabel": {
"type": "string",
"default": "Claude Code Session",
"description": "Display label prefix for Claude Code sessions in the feed (project identifier is appended automatically)"
},
"default": {
"type": "string",
"default": "🦀",
"description": "Fallback emoji when no match is found"
},
"agents": {
"type": "object",
"default": {},
"description": "Pin specific emojis to agent IDs (e.g. {\"devops\": \"🔧\"}). Agents not listed here get auto-assigned emojis.",
"additionalProperties": { "type": "string" }
}
}
}
}
}
}
}
}