Files
Jarvis 31008ef7ff
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
fix: update Gitea org references from mosaic/ to mosaicstack/
- Update all package.json repo URLs (mosaic/mosaic-stack → mosaicstack/mosaic-stack)
- Update npm registry URLs (/api/packages/mosaic/npm → /api/packages/mosaicstack/npm)
- Update woodpecker publish destinations
- Update tools/install.sh registry and repo base URLs
2026-04-04 22:31:20 -05:00
..

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/<task-id>.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:

{
  "plugins": ["~/src/mosaic-mono-v1/plugins/macp/src/index.ts"]
}

Optional config

{
  "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/<session>-<request>.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/<task-id>.json and streams the result back to OpenClaw.

Verification

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