Skip to content
SHC Docs

Cluster API

Cluster membership, mesh (Nebula), lighthouse, certificate, and node lifecycle operations. The routes are split across several router files under modules/cluster/ (ce module; ee overlays in modules/cluster/) and mounted on one chi sub-router by buildRouter in router.go.

Hand-maintained notes against modules/cluster/*_router.go (ce module). Route inventory (generated): routes.md. Response models (generated): response-models/cluster.md.

MethodPathSource
POST/api/method/shc.cluster.tokentoken_router.go
GET/api/method/shc.cluster.statusnodes_router.go
GET/api/method/shc.cluster.nodesnodes_router.go
GET/api/method/shc.node.lsnodes_router.go
GET/api/method/shc.node.statusnodes_router.go
GET/api/method/shc.cluster.pingadmin_router.go
POST/api/method/shc.cluster.repairadmin_router.go
DELETE/api/method/shc.cluster.rmadmin_router.go
GET/api/method/shc.cluster.logsadmin_router.go
POST/api/method/shc.cluster.leavelifecycle_router.go
POST/api/method/shc.cluster.drainlifecycle_router.go
POST/api/method/shc.cluster.forgetlifecycle_router.go
POST/api/method/shc.cluster.force_leaderlifecycle_router.go
GET/api/method/shc.cluster.certs.listcerts_router.go
POST/api/method/shc.cluster.certs.rotatecerts_router.go
POST/api/method/shc.cluster.certs.rotate_nowcerts_router.go
POST/api/method/shc.cluster.mesh.enablemesh_router.go
POST/api/method/shc.cluster.mesh.disablemesh_router.go
GET/api/method/shc.cluster.mesh.statusmesh_router.go
GET/api/method/shc.cluster.mesh.diagnosemesh_router.go
POST/api/method/shc.cluster.lighthouse.addlighthouse_router.go
GET/api/method/shc.cluster.lighthouse.lslighthouse_router.go
DELETE/api/method/shc.cluster.lighthouse.rmlighthouse_router.go

These run on the mTLS-or-LAN-token-secured internal listener, not the public API. Used for enrollment and peer certificate exchange.

MethodPathPurposeSource
POST/internal/enrollNode enrollment (join)router.go
GET/internal/certs/infoCert infocerts_internal_router.go
POST/internal/certs/installCert installcerts_internal_router.go
POST/internal/certs/renewCert renewcerts_internal_router.go
POST/internal/certs/rotateCert rotatecerts_internal_router.go
  • summary: mint a cluster join token.
  • summary: per-node TCP probe of every registered member.
  • query params: node, count, timeout
  • summary: sweep unreachable / stale members (tidy). --force (force_leader) is the destructive escalation when a removal would break quorum.
  • body: { dry_run, verbose, yes } (all optional)
  • summary: remove a node from the cluster.
  • query params: node (required), force
  • summary: tail a daemon log file.
  • query params: service (required, bare filename), node, lines

enable / disable orchestrate Nebula across all nodes and return a MeshClusterResult (per-node rows + cluster-level success). status returns installed/running state per node; diagnose adds per-peer reachability probes.