Data Center
The datacenter command group manages replicated notes and provides cluster inspection, shared guest-ID recovery, and address-recovery tools. Most commands contact the running Sylve daemon through its local console socket. The exception is cluster recover-ip, which operates on a stopped node.
Manage Data Center notes
Section titled “Manage Data Center notes”List or read replicated notes with direct commands:
doas sylve datacenter notes listdoas sylve datacenter notes get --id 4Create, update, or delete a note with explicit flags:
doas sylve datacenter notes add --title "Maintenance" --content "Rack work on Friday"doas sylve datacenter notes update --id 4 --title "Maintenance" --content "Rack work at 20:00"doas sylve datacenter notes delete --id 4The interactive console uses positional values instead:
datacenter notes listdatacenter notes get 4datacenter notes add "Maintenance" "Rack work on Friday"datacenter notes update 4 "Maintenance" "Rack work at 20:00"datacenter notes delete 4These are the same notes shown under Data Center → Notes. Mutations are committed through the cluster leader and therefore require working quorum.
Inspect cluster state
Section titled “Inspect cluster state”Show the local member’s cluster, consensus, and lifecycle state:
doas sylve datacenter cluster statusList the authoritative Raft membership, including addresses, suffrage (voting role), Sylve versions and build commits, and the current leader:
doas sylve datacenter cluster membersThe VERSION column includes the reported build commit when available, for example 0.3.0 - 21a5f0f. If the commit is missing or reported as unknown, only the version is shown. Comparing commits helps identify different builds that report the same version, particularly when using tip builds.
Use --json with either direct command when a script needs structured output. The same read-only commands work inside the console:
datacenter cluster statusdatacenter cluster membersstatus exposes active join, leave, and readdress phases. Check it before repeating a recovery command after a timeout. A timeout does not prove that the earlier operation failed.
Inspect and reclaim shared guest IDs
Section titled “Inspect and reclaim shared guest IDs”VM RIDs and Jail CTIDs share one cluster-wide range from 1 through 9999. Sylve records each claimed ID in replicated cluster state so two nodes cannot create different guests with the same numeric identity.
List the current claims before investigating an ID conflict:
doas sylve datacenter cluster guest-ids listAdd --json for structured output. The interactive console form is:
datacenter cluster guest-ids listAfter a cooperative leave that keeps guests on the departing node, the surviving cluster releases that node’s claims once membership removal completes. Those numbers become available to other members. The departed node still has its local guests; if it later rejoins, every current guest ID must be free in the cluster. A reused number blocks the join, including when one side is a VM RID and the other is a jail CTID.
Use reclaim only when a claim is orphaned and the VM or jail no longer exists anywhere in the cluster:
doas sylve datacenter cluster guest-ids reclaim --id 505The normal reclaim requires a clean inventory from the cluster and is rejected if the ID is registered on any reporting node or involved in an active operation. It also requires working cluster consensus. A cooperative leave already releases its guest IDs; manual reclaim remains relevant for claims left by other removal paths, such as force removal. Current-voter inventory cannot inspect a departed machine, so verify its runtime and storage separately before manually reclaiming one of its IDs.
If a voter is permanently unavailable, externally fence that node first. Then acknowledge the risk by repeating the exact guest ID:
doas sylve datacenter cluster guest-ids reclaim \ --id 505 \ --force \ --confirm 505The same flags work in the interactive console:
datacenter cluster guest-ids reclaim --id 505datacenter cluster guest-ids reclaim --id 505 --force --confirm 505Change a healthy member’s cluster IP
Section titled “Change a healthy member’s cluster IP”Use readdress while the old cluster address still works and the cluster has quorum:
doas sylve datacenter cluster readdress \ --new-ip 192.0.2.24 \ --allow-disruptionThe new address must be an IPv4 address assigned locally, must not already belong to another member, and must be able to bind Sylve’s cluster ports. The local member must be a voter, every participating member must run the same Sylve version, and no join, leave, state-repair, or conflicting mutation may be active. If the member is the leader, Sylve first transfers leadership to another voter.
The command commits the new Raft address and requests a Sylve restart. Expect the web interface, console socket, and cluster connectivity to be interrupted. Update the host’s network configuration before running the command so the new IP remains assigned after reboot.
Inside the interactive console, use the same flags:
datacenter cluster readdress --new-ip 192.0.2.24 --allow-disruptionRecover a member whose old IP is unavailable
Section titled “Recover a member whose old IP is unavailable”Use this two-stage procedure only when a clustered node can no longer start on or reach its recorded IP.
-
Stop Sylve on the affected node and ensure its new IPv4 address is configured locally.
-
Run the offline recovery command on that node:
Terminal window doas service sylve stopdoas sylve datacenter cluster recover-ip \--new-ip 192.0.2.24 \--allow-disruption -
Start Sylve on the recovered node. Keep it isolated from workloads until membership is repaired.
-
Copy the printed Node ID and repair command. Run the repair from a healthy cluster member with working quorum:
Terminal window doas sylve datacenter cluster repair-address \--node-id 550e8400-e29b-41d4-a716-446655440000 \--new-ip 192.0.2.24 \--allow-disruption -
Run
cluster statusandcluster membersto confirm the new address, leader, and membership.
recover-ip is a direct CLI command only because it requires the daemon and its console socket to be stopped. It updates the affected node’s local recovery state but does not rewrite Raft membership. repair-address verifies the recovered node’s identity at its new address before committing the membership change. It cannot bypass missing quorum.