Skip to main content
Version: 2026.08.10

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
GoalCommand
StatusRestart-GriffService.ps1 -Action status -Service all
Restart MCPRestart-GriffService.ps1 -Action restart -Service Brain-MCP
JSONadd -Json

Healthy output shows manager=schtask, taskActionOk=True, and healthy=True.

Live tasks​

Logical serviceScheduled taskPort
Brain MCP\GRIFF-Brain-MCP8788 (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.