Grid Coordination develops and publishes open-source libraries that make it practical to build applications using the standards we advocate. All software is MIT licensed and available on GitHub.
Machine-readable API specifications that our client libraries are built on:
| Repository | Description |
|---|---|
| openadr3-specification | OpenAPI specifications for the OpenADR 3 protocol (versions 3.0.0 through 3.1.1) |
| gridx-api-specs | OpenAPI specifications for GridX pricing APIs, derived from public documentation |
Implementations of the OpenADR 3 protocol in Clojure and Python. Each language has a pure API library and a higher-level client framework.
Spec-driven HTTP clients with full CRUD for all OpenADR 3 resources, two-layer data models (raw JSON and coerced native types), and extensible payload coercion.
| Repository | Language | Package |
|---|---|---|
| clj-oa3 | Clojure | clj-oa3 on Clojars |
| python-oa3 | Python | openadr3 on PyPI |
Higher-level wrappers with lifecycle management, VEN/BL client roles, MQTT and webhook notification channels, and mDNS/DNS-SD service discovery.
| Repository | Language | Package |
|---|---|---|
| clj-oa3-client | Clojure | clj-oa3-client on Clojars |
| python-oa3-client | Python | python-oa3-client on PyPI |
| Repository | Description |
|---|---|
| clj-oa3-test | Integration test suite for OpenADR 3 VTN implementations |
| Repository | Language | Description | Package |
|---|---|---|---|
| clj-gridx | Clojure | Client library for the GridX Pricing API | clj-gridx on Clojars |
| clj-mdns | Clojure | mDNS/DNS-SD service discovery | clj-mdns on Clojars |
The libraries are designed in layers:
Specifications (OpenAPI YAML)
|
Pure API libraries (clj-oa3, python-oa3)
|
Client frameworks (clj-oa3-client, python-oa3-client)
|
Applications (your code here)
The pure API libraries provide spec-driven HTTP access and data coercion. The client frameworks add lifecycle management, notification channels, and service discovery. Applications compose these layers to build grid-coordinated energy management systems.
Both the Clojure and Python implementations follow the same architecture and provide semantically equivalent functionality, so teams can choose the language that fits their stack.