{
  "_comment": "TEMPLATE for backend:\"service\" (conventions §18; docs/PORTABILITY.md). Use this only when bypassing the scheduler; `dev-loop run` injects the workspace MCP config for you. Recommended install: `npm i -g @dyzsasd/dev-loop`, then use command:\"dev-loop\", args:[\"serve\"]. The hub needs Node >=23.6 for node:sqlite; if PATH's node is older, set DEVLOOP_NODE=/absolute/path/to/node and the packaged CLI will re-exec through it. The ${VAR} values are expanded by Claude Code at config-parse time from each pane's launching shell, so a per-pane `DEVLOOP_ACTOR` attributes writes to the right agent. Keep these single-level (`${VAR:-literal}`) — do NOT nest `${...}` inside a default (DL-44). DEVLOOP_PROJECT defaults to EMPTY (`:-`): when unset the hub auto-resolves the project from the spawned process's cwd (DL-13). To pin one explicitly, export DEVLOOP_PROJECT. For a 1.x workspace, export DEVLOOP_HUB_DB=/absolute/workspace/.dev-loop/hub.db when launching manually; the legacy default is ~/.dev-loop/hub.db. Source-checkout fallback for plugin developers: command:\"node\", args:[\"/abs/path/to/dev-loop/hub/src/server.ts\"].",
  "_shim": "OPT-IN daemon transport (DL-55): a 100% `serve` drop-in — the shim proxies ALL 27 server.ts tools through the ONE running daemon's loopback op-API instead of each pane opening hub.db directly (identity rides env → X-Devloop-Actor header). Use args:[\"shim\"] instead of [\"serve\"] (or point a source checkout at hub/src/shim.ts). REQUIRES the workspace hub daemon up (`dev-loop hub ensure`; raw `dev-loop daemon up` is for debugging) and settings_json.hub.transport=\"daemon\" (DL-43).",
  "mcpServers": {
    "dev-loop-hub": {
      "type": "stdio",
      "command": "dev-loop",
      "args": ["serve"],
      "env": {
        "DEVLOOP_ACTOR": "${DEVLOOP_ACTOR:-operator}",
        "DEVLOOP_PROJECT": "${DEVLOOP_PROJECT:-}"
      }
    }
  }
}
