clusdr
A runtime for the cluster. An SDK for the app.
Application SDK for the local Clusdr daemon. This package does not join the cluster.
your process ──► clusdr on this host ──► the rest of the cluster
Not a database, queue, or Kubernetes. Wire API is v1alpha1. TLS is on by default.
Install
pip install clusdr
CPython 3.10+. Same version train as the daemon.
A running daemon on this host is required:
curl -fsSL https://clusdr.io/install.sh | sh
Linux amd64/arm64, or Docker Hub durguto/clusdr. Then clusdr init and clusdr start --bootstrap. Guide: first member.
Use
local() dials CLUSDR_GRPC_ADDR or 127.0.0.1:7947, waits on Health, then you own the connection.
from clusdr import local
with local() as c:
members = c.members()
leader = c.leader()
c.publish("deployment", {"sha": "abc"})
lk = c.lock("scheduler", ttl=15)
try:
_ = lk.token
finally:
c.unlock("scheduler")
for event in c.watch():
# member.join, leader.changed, custom.deployment, …
...
dial(addr) is for tests and operators. Apps use local().
ttl is seconds. Leaving with (or close()) stops Watch, unlocks, and revokes what this process still holds. Failures raise ClusdrError.
Full surface: Python SDK.
TLS
On unless insecure=True or CLUSDR_TLS=disabled. PEMs (ca.crt, node.crt, node.key) come from data_dir, CLUSDR_DATA_DIR, or ~/.clusdr. Missing files are an error; this client does not skip-verify.
Not in this package
- Join, promote, or configure the cluster (CLI)
- Watch topic filters
- Async /
asyncio - Talking to a remote node's Runtime API as the normal path — put a daemon on that host
Links
- Docs: clusdr.io · Python SDK · from your app
- Daemon: github.com/durguto/clusdr
- This repo: github.com/durguto/clusdr-python
Apache-2.0. Contributor checkout (editable + proto regen): CONTRIBUTING.md.
Metadata
Release files for clusdr 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| clusdr-0.1.1.tar.gz | 31.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| clusdr-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.7 kB
Release files / clusdr-0.1.1.tar.gz
| Download URL | clusdr-0.1.1.tar.gz |
|---|---|
| Size | 31.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4ba00bee05d1b3139079a4438b2c93bc16d9ff869071699a2937efce87dca085
|
|
BLAKE2b-256 checksum How to use checksums |
614b5dd35b9e678259a440bd1716fb7fda051b09f85fd297c6655dc68c712d83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / clusdr-0.1.1-py3-none-any.whl
| Download URL | clusdr-0.1.1-py3-none-any.whl |
|---|---|
| Size | 40.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
216c8d49389cb6a63ca5a6c5e01798d9dad98a7f4d6b2faaaad939dd5897a940
|
|
BLAKE2b-256 checksum How to use checksums |
4d31cf7f9f4ff13c1e4773833235443a5e7a0acc1e60301f75c89f1d4f965c8f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency log