The online widget library for Arete Widget — plain YAML definitions of virtual widgets for CNS/CP realms, published as a static catalog that every copy of the app fetches on Reload:
Catalog: https://project-arete.github.io/widget-library/index.json
Add a widget here and it appears in everyone's Widget library — no app update required.
widgets/*.yaml— the definitions (see the format below).- On every PR and push, CI validates each definition against the live CP
registry (cp.padi.io) with the same validator the app
uses: the CP must exist, roles must be
provider/consumer, every bound property must exist, and writes must match the role's side. An invalid definition fails the build and never reaches the catalog. - On merge to
main, CI publishesindex.json+ the YAML files to GitHub Pages.
- Make sure the Connection Profile exists in the CP registry — the library refuses unregistered CPs by design.
- Copy an existing definition (
widgets/bulb.yamlis the simplest; the trust and lease pairs show bigger faceplates) and adapt it. - Check it locally:
npm install && npm run build— your file must come out ✓. - Open a PR. CI re-validates; merge publishes.
widget: bulb # unique id slug
title: Virtual Bulb
description: A light being controlled.
capabilities:
- profile: padi.light # must exist at cp.padi.io/profiles/<name>
role: consumer # provider | consumer
view: # faceplate, top to bottom
- { type: lamp, bind: sOut, on: "1" }
- { type: label, bind: sLabel, caption: controller }
- { type: value, bind: cState, caption: reported state }
# toggle (interactive on/off) and field (editable text) are also available —
# only on properties this widget's role is allowed to write.
behavior: # optional auto-actualize
init: { cState: "0" } # puts issued once, when first created
rules:
- { when: sOut, set: cState } # mirror (optional map: {"1":"on"})Primitives: lamp, toggle, value, label, field.
| Widget | CP | Role |
|---|---|---|
| Virtual Bulb / Virtual Switch | padi.light |
consumer / provider |
| Trust Provider / Trust Consumer | padi.trust.basic |
provider / consumer |
| OADR Controller / OADR Simple Device | skycentrics.oadr3.event.simple |
provider / consumer |
| Lease Landlord / Lease Tenant | padi.lease.basic |
provider / consumer |