# MACP OpenClaw Plugin This plugin registers a new OpenClaw ACP runtime backend named `macp`. When OpenClaw calls `sessions_spawn(runtime: "macp")`, the plugin now writes the prompt to a brief file, queues a MACP controller task in `.mosaic/orchestrator/tasks.json`, triggers `mosaic-orchestrator-run --once`, polls `.mosaic/orchestrator/results/.json`, and streams the resulting output back as ACP runtime events. ## Current behavior - Supports ACP `mode: "oneshot"` only - Accepts any `agentId` and maps it to the queued MACP task `runtime` - Defaults queued tasks to `dispatch: "yolo"` and `runtime: "codex"` when no override is provided - Rejects persistent ACP sessions - Keeps `src/pi-bridge.ts` for future `dispatch: "pi"` support ## Install in OpenClaw Add the plugin entry to your OpenClaw config: ```json { "plugins": ["~/src/mosaic-mono-v1/plugins/macp/src/index.ts"] } ``` ## Optional config ```json { "plugins": [ { "source": "~/src/mosaic-mono-v1/plugins/macp/src/index.ts", "config": { "defaultModel": "openai/gpt-5-mini", "systemPrompt": "You are Pi running via MACP.", "timeoutMs": 300000, "logDir": "~/.openclaw/state/macp", "repoRoot": "~/src/mosaic-mono-v1", "orchDir": "~/src/mosaic-mono-v1/.mosaic/orchestrator", "defaultDispatch": "yolo", "defaultRuntime": "codex" } } ] } ``` ## Runtime flow 1. OpenClaw ensures a oneshot `macp` session and preserves the requested `agentId`. 2. `runTurn` writes the turn prompt to `~/.mosaic/macp-oc/-.md`. 3. The plugin appends a pending MACP task to the configured orchestrator queue. 4. The plugin triggers `~/.config/mosaic/bin/mosaic-orchestrator-run --once` in the configured repo root. 5. The plugin polls for `.mosaic/orchestrator/results/.json` and streams the result back to OpenClaw. ## Verification ```bash pnpm --filter @mosaicstack/oc-macp-plugin typecheck || npx tsc --noEmit -p plugins/macp/tsconfig.json pnpm prettier --write "plugins/macp/**/*.{ts,json,md}" pnpm format:check ```