Restart a Brain Service
Canonical source: 00_MISSION_CONTROL/runbooks/brain-services/RUNBOOK_Brain_Service_Restart.md
:::danger Use the service-ops tool Live Brain runs as a SYSTEM scheduled task. Use the service-ops tool so restart, port cleanup, and health checks stay consistent. :::
One command
pwsh -NoProfile -File B:\GRIFF_WARM\AI_AGENT_PLATFORM\00_MISSION_CONTROL\service-ops\Restart-GriffService.ps1 -Action restart -Service all
| Goal | Command |
|---|---|
| Status | Restart-GriffService.ps1 -Action status -Service all |
| Restart MCP | Restart-GriffService.ps1 -Action restart -Service Brain-MCP |
| JSON | add -Json |
Healthy output shows manager=schtask, taskActionOk=True, and healthy=True.
Live tasks
| Logical service | Scheduled task | Port |
|---|---|---|
| Brain MCP | \GRIFF-Brain-MCP | 8788 (the ONLY Brain surface) |
:::note Port 8787 is retired for Brain use
The separate GRIFF-Brain-HTTP REST listener was retired on 2026-07-16
(single-port directive, BRAIN_PORT_ROUTE_CONTRACT.json). The scheduled task
still exists but is Disabled by design. Port 8787 is now owned by the Agent
OS Framework (Cloudflare OS build) — a listener there is expected and is not
Brain. The rule is brain_must_not_own: check who owns 8787, not whether it
is occupied.
:::
The tool ends the task, clears orphaned port holders, starts it again, checks health, and writes a receipt under 06_SESSION_EVIDENCE/receipts/.
True checks
# Same-process diagnostic (since 1.2.0.dev18)
Invoke-RestMethod http://127.0.0.1:8788/health
# Deeper probe: MCP initialize handshake on /mcp
$body = '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"health-check","version":"1.0"}}}'
Invoke-WebRequest -Uri http://127.0.0.1:8788/mcp -Method Post -Body $body -ContentType "application/json" -Headers @{Accept="application/json, text/event-stream"}
Expected: /health answers with the service name and version; the MCP
initialize handshake returns a serverInfo block for griffai-memory. Read the
served package_version from the runtime (verified 2026-08-10: 1.2.0.dev40)
rather than hard-coding a version, and do not hard-code corpus counts. After a
restart, run the governed staged gate before calling the service healthy.
Do not disturb
Restarting Brain does not authorize broad migrations, VACUUM, WAL checkpoint, Qdrant image cutover or changing ingest/OMNI policy. The event-driven ingest watcher is the live primary lane and its CUDA embedding work is separate from a Brain service restart.