Changelog
Unreleased
0.1.0 — 2026-09-14
First tagged release. Daemon, Go SDK (github.com/odurgut/clusdr/sdk + …/api), and Python clusdr share this version.
Added
- Daemon CLI:
init,start,status,join,promote,members,leader,watch,publish,locks,leases,certs show,config validate,version - Runtime gRPC
clusdr.v1alpha1: Health, Membership, Watch, Events, Locks, Leases, Join, Control, Heartbeat - Raft membership, locks, leases; presence lease
presence.<id> - mTLS from cluster CA; join token;
CLUSDR_TLS=disabled - Go SDK
github.com/odurgut/clusdr/sdk(Local,Dial) - Python SDK
pip install clusdr clusdr-bench(election / events / members / locks) — source-only, not a release artifact- Docker image
odurgut/clusdrand single-node compose file - Observer nodes:
clusdr join --observer(Raft non-voter).Member.roleisvoterorobserver clusdr promote [node-id]turns an observer into a voter- Observer daemons reject Lock / TryLock / Unlock / Renew; leases still work
- Operator install: Linux amd64/arm64 via
curl -fsSL https://clusdr.io/install.sh | sh, Docker Hubodurgut/clusdr
Changed
- Raft defaults: 150ms heartbeat and election, 75ms leader lease
- Documentation reorganized into a six-page guide, concepts, SDKs, and reference
clusdr certs showreadsca.crt/node.crtso it works while the daemon holdsstate.db- Default control socket is
$HOME/.clusdr/clusdr.sock(or/var/lib/clusdr/clusdr.sockwhenHOMEis unset)