command-center-server.mjs) — not libp2p. Nodes present x-node-token. |CC_FEDERATION=1 required. Default OFF. Host must also POST /api/federation/enable. |.env / CC_CONTROL_TOKEN via node API | Node tokens are issued, hashed credentials — never the host control token. Node responses never serialize env. |enabled flag; only owner can issue credentials. |revoked:true + token hash left in place so resolve fails; instant deny. |nodeId + optional tenantId; list endpoints owner-only. |Issued nodes get capabilities: ['telemetry_write','knowledge_submit'] (read-only *from host's perspective* — node may write its own telemetry, not read host secrets).
1. Owner: POST /api/federation/enable {enabled:true}
2. Owner: POST /api/federation/nodes/issue {name} → { nodeId, token } once
3. Node: POST /api/node/register header x-node-token → session ack
4. Node: POST /api/node/heartbeat / POST /api/node/telemetry
5. Owner: POST /api/federation/nodes/:id/revoke
State: state/federation.json + state/federation_quarantine.json under CC_STATE_DIR.