diff --git a/openclaw/openclaw.plugin.json b/openclaw/openclaw.plugin.json index 6c52b962..ce0de1db 100644 --- a/openclaw/openclaw.plugin.json +++ b/openclaw/openclaw.plugin.json @@ -27,6 +27,11 @@ "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", diff --git a/openclaw/src/index.ts b/openclaw/src/index.ts index 7e4ac304..1f3f232d 100644 --- a/openclaw/src/index.ts +++ b/openclaw/src/index.ts @@ -183,6 +183,7 @@ interface ClaudeMemPluginConfig { syncMemoryFileExclude?: string[]; project?: string; workerPort?: number; + workerHost?: string; observationFeed?: { enabled?: boolean; channel?: string; @@ -198,6 +199,7 @@ interface ClaudeMemPluginConfig { const MAX_SSE_BUFFER_SIZE = 1024 * 1024; // 1MB const DEFAULT_WORKER_PORT = 37777; +const DEFAULT_WORKER_HOST = "127.0.0.1"; // Emoji pool for deterministic auto-assignment to unknown agents. // Uses a hash of the agentId to pick a consistent emoji — no persistent state needed. @@ -256,8 +258,10 @@ function buildGetSourceLabel( // Worker HTTP Client // ============================================================================ +let _workerHost = DEFAULT_WORKER_HOST; + function workerBaseUrl(port: number): string { - return `http://127.0.0.1:${port}`; + return `http://${_workerHost}:${port}`; } async function workerPost( @@ -533,6 +537,7 @@ async function connectToSSEStream( export default function claudeMemPlugin(api: OpenClawPluginApi): void { const userConfig = (api.pluginConfig || {}) as ClaudeMemPluginConfig; const workerPort = userConfig.workerPort || DEFAULT_WORKER_PORT; + _workerHost = userConfig.workerHost || DEFAULT_WORKER_HOST; const baseProjectName = userConfig.project || "openclaw"; const getSourceLabel = buildGetSourceLabel(userConfig.observationFeed?.emojis); @@ -1047,5 +1052,5 @@ export default function claudeMemPlugin(api: OpenClawPluginApi): void { }, }); - api.logger.info(`[claude-mem] OpenClaw plugin loaded — v1.0.0 (worker: 127.0.0.1:${workerPort})`); + api.logger.info(`[claude-mem] OpenClaw plugin loaded — v1.0.0 (worker: ${_workerHost}:${workerPort})`); }