A vendor-neutral HTTP/SSE + optional-gRPC contract for meter drivers.
Any metering provider can implement this spec and be Thunder-Cloud compatible. Any software application can implement the client side and work with any meter driver that implements this spec. Neither side is coupled to the other's implementation — they are both just implementations of this document.
This repo is the contract, not an implementation. Thundercloud (an application) and SparkNet-Http (a driver) are two implementations of it.
| Path | Contents |
|---|---|
docs/spec/index.md |
The specification itself: integration model, data conventions, required HTTP+SSE endpoints and events, the optional gRPC profile, and the compliance checklist. |
openapi/meter-driver.yaml |
Machine-readable OpenAPI 3.1 document for the required HTTP+SSE contract. |
proto/meter_driver.proto |
Normative protobuf schema for the optional gRPC profile (package meter_driver.v1, service MeterDriverControl). |
conformance/ |
A self-check any implementation can run against its own endpoint to verify it actually implements what this repo says it does. |
The contracts are generated into an installable Python package, meter-driver-spec. CI builds a self-contained, pure-Python wheel on each tagged release and attaches it to the GitHub release; nothing generated is committed.
Pin a tagged release's wheel, then import per transport:
pip install "meter-driver-spec @ https://github.com/EarthSpark/meter-driver-spec/releases/download/<tag>/meter_driver_spec-<version>-py3-none-any.whl"from meter_driver_spec.grpc import meter_driver_pb2, meter_driver_pb2_grpc # gRPC (from proto/)
from meter_driver_spec.http import ApiClient, Configuration, NodesApi # HTTP client (from openapi/)
from meter_driver_spec.http.models import RegisterNodeRequest # HTTP modelsTagged releases (v1.0.0, v1.1.0, ...) following semver: a breaking change to a required field, endpoint, event shape, or the gRPC package/service name is a major bump; additive, backward-compatible changes are minor; wording/clarification fixes are patch.
Implementations pin to a tag and state which tag they implement.
See CHANGELOG.md.
Changes go through a pull request here, reviewed against the existing spec text and the conformance checks.
See CONTRIBUTING.md.
Apache 2.0 — permissive, patent-grant included, so any implementer (commercial or not) can build against this without asking permission.