{ "id": "synthesis-agent", "name": "SynthesisAgent", "description": "Manages long-lived interactive Claude Code processes per OpenClaw session; bridges OpenClaw events <-> SynthesisAgent.ClaudePlugin", "activation": { "onStartup": true }, "commandAliases": [ { "name": "synthesis" } ], "configSchema": { "type": "object", "additionalProperties": false, "properties": { "bridgePort": { "type": "number", "default": 18801, "description": "TCP port the bridge WebSocket server binds on (127.0.0.1)" }, "bridgeToken": { "type": "string", "default": "synthesis-local", "description": "Shared secret each ClaudePlugin instance must present in its hello frame" }, "claudePluginRef": { "type": "string", "default": "plugin:synthesis-claude@local", "description": "The --channels argument passed to claude on spawn" }, "permissionMode": { "type": "string", "default": "acceptEdits", "description": "Claude Code permission mode for spawned sessions" }, "idleKillMs": { "type": "number", "default": 3600000, "description": "Idle time after which a session's claude process is killed; next message resumes it" }, "maxProcesses": { "type": "number", "default": 16, "description": "Hard cap on concurrent claude processes; new sessions beyond this evict the oldest idle one" }, "mappingDbPath": { "type": "string", "default": "~/.openclaw/synthesis/sessions.json", "description": "Where openclaw_session <-> claude_session UUID mapping is persisted" } } } }