# macOS Menu Bar Companion Foundation Checklist **Date:** 2026-02-16 **Scope:** Close the OpenClaw "macOS menu bar app" gap with a gateway-side companion status foundation. ## Goal Add a practical companion-node status surface so a macOS menu bar app can report heartbeat/platform metadata and operators can inspect active companion state. ## Implemented - Added node status protocol parser: - `parseNodeStatusSetParams()` - Added node status RPC: - `node.status.set` - Extended node connection state: - `status` payload (`platform`, `appVersion`, `deviceName`, `statusText`, `batteryPct`, `powerSource`, `reportedAt`) - Added operator node snapshot endpoint: - `system.nodes` - Wired gateway runtime callbacks for node snapshot listing and status persistence. - Updated node method authorization scopes: - `companion` role can call `node.status.set` - observer/automation remain read-only for node scoped methods. ## Docs Updated - `README.md` — node method list now includes `node.status.set` and `system.nodes`. - `docs/api/PROTOCOL.md` — added request docs for `node.status.set` and `system.nodes`. ## Tests - `src/gateway/protocol.test.ts` - status parser valid/invalid coverage. - `src/gateway/handlers/node.test.ts` - status update persistence behavior. - `src/gateway/handlers/handlers.test.ts` - `system.nodes` empty + filtered responses. - `src/gateway/server.test.ts` - end-to-end `node.status.set` + `system.nodes` flow. - `src/gateway/auth.test.ts` - role-scope denial for `node.status.set` where not permitted. ## Validation Run ```bash pnpm test:run src/gateway/protocol.test.ts src/gateway/auth.test.ts src/gateway/handlers/node.test.ts src/gateway/handlers/handlers.test.ts src/gateway/server.test.ts pnpm typecheck pnpm build ```