Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 147 additions & 24 deletions components.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,20 @@
"protocol": "OPC UA",
"description": "Java reference southbound adapter (Eclipse Milo). Subscribes to OPC UA nodes and republishes value changes as SouthboundSignalUpdate messages; serves on-demand reads/writes and emits the southbound_health metric.",
"status": "beta",
"platforms": ["GREENGRASS", "HOST", "KUBERNETES"],
"platforms": [
"GREENGRASS",
"HOST",
"KUBERNETES"
],
"library": "com.mbreissi.edgecommons:edgecommons",
"topics": ["edgecommons", "aws-iot-greengrass", "iiot", "opc-ua", "edgecommons-adapter"]
"greengrassComponentName": "com.mbreissi.edgecommons.OpcUaAdapter",
"topics": [
"edgecommons",
"aws-iot-greengrass",
"iiot",
"opc-ua",
"edgecommons-adapter"
]
},
{
"name": "modbus-adapter",
Expand All @@ -22,9 +33,20 @@
"protocol": "Modbus (TCP / RTU / RTU-over-TCP)",
"description": "Python reference southbound adapter (pymodbus). Polls Modbus TCP / serial RTU / RTU-over-TCP register maps and republishes value changes as SouthboundSignalUpdate messages; serves reads/writes and emits the southbound_health metric.",
"status": "beta",
"platforms": ["GREENGRASS", "HOST", "KUBERNETES"],
"platforms": [
"GREENGRASS",
"HOST",
"KUBERNETES"
],
"library": "edgecommons",
"topics": ["edgecommons", "aws-iot-greengrass", "iiot", "modbus", "edgecommons-adapter"]
"greengrassComponentName": "com.mbreissi.edgecommons.ModbusAdapter",
"topics": [
"edgecommons",
"aws-iot-greengrass",
"iiot",
"modbus",
"edgecommons-adapter"
]
},
{
"name": "camera-adapter",
Expand All @@ -34,9 +56,23 @@
"protocol": "ONVIF / RTSP / GenICam",
"description": "Rust southbound image-capture adapter for ONVIF snapshot and RTSP cameras, with optional Linux GenICam/Aravis support. Schedules and commands create durable local images, publish terminal metadata, and expose capability-gated PTZ and preset operations.",
"status": "experimental",
"platforms": ["GREENGRASS", "HOST", "KUBERNETES"],
"platforms": [
"GREENGRASS",
"HOST",
"KUBERNETES"
],
"library": "edgecommons",
"topics": ["edgecommons", "aws-iot-greengrass", "iiot", "camera", "onvif", "rtsp", "genicam", "edgecommons-adapter"]
"greengrassComponentName": "com.mbreissi.edgecommons.CameraAdapter",
"topics": [
"edgecommons",
"aws-iot-greengrass",
"iiot",
"camera",
"onvif",
"rtsp",
"genicam",
"edgecommons-adapter"
]
},
{
"name": "ethernet-ip-adapter",
Expand All @@ -46,20 +82,44 @@
"protocol": "EtherNet/IP (Allen-Bradley CIP; explicit polling + class-1 implicit I/O)",
"description": "Rust reference southbound EtherNet/IP adapter on an owned, memory-safe pure-Rust EtherNet/IP + CIP stack. Polls Allen-Bradley Logix tags (CIP explicit messaging) and consumes class-1 implicit I/O assemblies, republishing as SouthboundSignalUpdate; serves read/write/status/pause/resume/browse commands and emits southbound_health plus the EtherNetIp* operational metrics.",
"status": "experimental",
"platforms": ["GREENGRASS", "HOST", "KUBERNETES"],
"platforms": [
"GREENGRASS",
"HOST",
"KUBERNETES"
],
"library": "edgecommons",
"topics": ["edgecommons", "aws-iot-greengrass", "iiot", "ethernet-ip", "cip", "edgecommons-adapter"]
"greengrassComponentName": "com.mbreissi.edgecommons.EthernetIpAdapter",
"topics": [
"edgecommons",
"aws-iot-greengrass",
"iiot",
"ethernet-ip",
"cip",
"edgecommons-adapter"
]
},
{
"name": "telemetry-processor",
"repo": "edgecommons/telemetry-processor",
"language": "RUST",
"category": "processor",
"description": "Rust reference processing component: the high-throughput northbound seam between southbound adapters and the cloud. Subscribes to configured (wildcard, templated) local telemetry topics, runs a declarative per-route pipeline (filter / sample / aggregate / project / script Rhai or Lua), and forwards results to a target: local republish, northbound MQTT/IoT Core, or a durable stream (Kinesis / Kafka / rolling Parquet-AVRO files).",
"description": "Rust reference processing component: the high-throughput northbound seam between southbound adapters and the cloud. Subscribes to configured (wildcard, templated) local telemetry topics, runs a declarative per-route pipeline (filter / sample / aggregate / project / script \u2014 Rhai or Lua), and forwards results to a target: local republish, northbound MQTT/IoT Core, or a durable stream (Kinesis / Kafka / rolling Parquet-AVRO files).",
"status": "experimental",
"platforms": ["GREENGRASS", "HOST", "KUBERNETES"],
"platforms": [
"GREENGRASS",
"HOST",
"KUBERNETES"
],
"library": "edgecommons",
"topics": ["edgecommons", "aws-iot-greengrass", "iiot", "telemetry", "stream-processing", "edgecommons-processor"]
"greengrassComponentName": "com.mbreissi.edgecommons.TelemetryProcessor",
"topics": [
"edgecommons",
"aws-iot-greengrass",
"iiot",
"telemetry",
"stream-processing",
"edgecommons-processor"
]
},
{
"name": "uns-bridge",
Expand All @@ -68,9 +128,20 @@
"category": "bridge",
"description": "Envelope-aware UNS relay between a device bus and a site broker. Uplinks the six UNS consumer classes topic-verbatim with hop-tag loop protection and per-class policy (rate caps, evt replay buffer), relays own-device commands back down, and proxies request/reply across the bridge (reply_to rewrite). One uns-bridge per device bus.",
"status": "experimental",
"platforms": ["HOST", "KUBERNETES"],
"platforms": [
"HOST",
"KUBERNETES"
],
"library": "edgecommons",
"topics": ["edgecommons", "aws-iot-greengrass", "iiot", "unified-namespace", "mqtt", "edgecommons-bridge"]
"greengrassComponentName": "com.mbreissi.edgecommons.UnsBridge",
"topics": [
"edgecommons",
"aws-iot-greengrass",
"iiot",
"unified-namespace",
"mqtt",
"edgecommons-bridge"
]
},
{
"name": "edge-console",
Expand All @@ -79,9 +150,20 @@
"category": "console",
"description": "Edge-deployed real-time web console and the site's sole browser-to-bus bridge (HTTPS+WS in front, MQTT/UNS behind). A Rust gateway (edge-console-gateway) consumes the six UNS consumer classes from the site broker into a timestamped last-known-value model with console-side miss-detection (cfg-derived cadence, stale/offline ladder, whole-device UNREACHABLE from the uns-bridge LWT) and self-serves an IBM Carbon/React UI for edge-health, signals, events, config-review, and command views.",
"status": "experimental",
"platforms": ["HOST", "KUBERNETES"],
"platforms": [
"HOST",
"KUBERNETES"
],
"library": "edgecommons",
"topics": ["edgecommons", "aws-iot-greengrass", "iiot", "unified-namespace", "console", "edgecommons-console"]
"greengrassComponentName": "com.mbreissi.edgecommons.EdgeConsole",
"topics": [
"edgecommons",
"aws-iot-greengrass",
"iiot",
"unified-namespace",
"console",
"edgecommons-console"
]
},
{
"name": "ec-uns-cmd",
Expand All @@ -90,20 +172,37 @@
"category": "tool",
"description": "EdgeCommons UNS command-line tool. Sends a cmd/sb/* (or any) command to a component's command inbox over the UNS and prints the correlated reply; reaches Greengrass/IPC components via uns-bridge. Operate and test any EdgeCommons component from the shell.",
"status": "experimental",
"platforms": ["HOST"],
"platforms": [
"HOST"
],
"library": "edgecommons",
"topics": ["edgecommons", "cli", "uns", "iiot", "edgecommons-tool"]
"topics": [
"edgecommons",
"cli",
"uns",
"iiot",
"edgecommons-tool"
]
},
{
"name": "ec-secrets",
"repo": "edgecommons/ec-secrets",
"language": "RUST",
"category": "tool",
"description": "EdgeCommons vault-seeding CLI. Populates and manages the LOCAL credentials vault (set/get/list/delete/import) that components read via gg.credentials() and $secret refs same envelope encryption + KeyProvider (file/env/kms). Built on the library, so what it writes is exactly what a component decrypts.",
"description": "EdgeCommons vault-seeding CLI. Populates and manages the LOCAL credentials vault (set/get/list/delete/import) that components read via gg.credentials() and $secret refs \u2014 same envelope encryption + KeyProvider (file/env/kms). Built on the library, so what it writes is exactly what a component decrypts.",
"status": "experimental",
"platforms": ["HOST"],
"platforms": [
"HOST"
],
"library": "edgecommons",
"topics": ["edgecommons", "cli", "secrets", "vault", "credentials", "edgecommons-tool"]
"topics": [
"edgecommons",
"cli",
"secrets",
"vault",
"credentials",
"edgecommons-tool"
]
},
{
"name": "config-component",
Expand All @@ -112,9 +211,21 @@
"category": "service",
"description": "Rust dedicated configuration service for hierarchical-config deployments. Boots from its own non-CONFIG_COMPONENT source, loads a pluggable hierarchy catalog, serves ordered lineage bundles over the CONFIG_COMPONENT rendezvous, accepts privileged catalog replacement messages, and pushes accepted versions to consumers.",
"status": "experimental",
"platforms": ["GREENGRASS", "HOST", "KUBERNETES"],
"platforms": [
"GREENGRASS",
"HOST",
"KUBERNETES"
],
"library": "edgecommons",
"topics": ["edgecommons", "aws-iot-greengrass", "iiot", "configuration", "hierarchical-config", "edgecommons-service"]
"greengrassComponentName": "com.mbreissi.edgecommons.ConfigComponent",
"topics": [
"edgecommons",
"aws-iot-greengrass",
"iiot",
"configuration",
"hierarchical-config",
"edgecommons-service"
]
},
{
"name": "file-replicator",
Expand All @@ -123,9 +234,21 @@
"category": "sink",
"description": "Rust reference sink component (northbound file delivery): watches local directories and replicates files to local, S3, or optional SFTP/FTPS, HTTP(S), Azure Blob, and GCS destinations on arrival or on cron schedules/windows. Resumable uploads with integrity verification, bandwidth caps, per-instance activation, on-complete delete/archive/quarantine, and a full control + event surface on a unified namespace.",
"status": "experimental",
"platforms": ["GREENGRASS", "HOST", "KUBERNETES"],
"platforms": [
"GREENGRASS",
"HOST",
"KUBERNETES"
],
"library": "edgecommons",
"topics": ["edgecommons", "aws-iot-greengrass", "iiot", "file-replication", "s3", "edgecommons-sink"]
"greengrassComponentName": "com.mbreissi.edgecommons.FileReplicator",
"topics": [
"edgecommons",
"aws-iot-greengrass",
"iiot",
"file-replication",
"s3",
"edgecommons-sink"
]
}
]
}
73 changes: 62 additions & 11 deletions registry.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,37 @@
"title": "edgecommons component registry",
"type": "object",
"additionalProperties": false,
"required": ["schemaVersion", "components"],
"required": [
"schemaVersion",
"components"
],
"properties": {
"schemaVersion": { "type": "integer", "const": 1 },
"updated": { "type": "string", "description": "ISO date (YYYY-MM-DD) the catalog was last edited" },
"schemaVersion": {
"type": "integer",
"const": 1
},
"updated": {
"type": "string",
"description": "ISO date (YYYY-MM-DD) the catalog was last edited"
},
"components": {
"type": "array",
"items": { "$ref": "#/$defs/component" }
"items": {
"$ref": "#/$defs/component"
}
}
},
"$defs": {
"component": {
"type": "object",
"additionalProperties": false,
"required": ["name", "repo", "language", "category", "description"],
"required": [
"name",
"repo",
"language",
"category",
"description"
],
"properties": {
"name": {
"type": "string",
Expand All @@ -31,34 +48,68 @@
},
"language": {
"type": "string",
"enum": ["JAVA", "PYTHON", "RUST", "TYPESCRIPT"]
"enum": [
"JAVA",
"PYTHON",
"RUST",
"TYPESCRIPT"
]
},
"category": {
"type": "string",
"enum": ["adapter", "processor", "sink", "bridge", "console", "service"]
"enum": [
"adapter",
"processor",
"sink",
"bridge",
"console",
"service"
]
},
"protocol": {
"type": "string",
"description": "Optional field/transport protocol, e.g. OPC UA, Modbus"
},
"description": { "type": "string", "minLength": 10 },
"description": {
"type": "string",
"minLength": 10
},
"status": {
"type": "string",
"enum": ["experimental", "beta", "stable", "deprecated"],
"enum": [
"experimental",
"beta",
"stable",
"deprecated"
],
"default": "experimental"
},
"platforms": {
"type": "array",
"items": { "type": "string", "enum": ["GREENGRASS", "HOST", "KUBERNETES"] },
"items": {
"type": "string",
"enum": [
"GREENGRASS",
"HOST",
"KUBERNETES"
]
},
"uniqueItems": true
},
"library": {
"type": "string",
"description": "The edgecommons coordinate this component builds on, e.g. com.mbreissi.edgecommons:edgecommons or edgecommons"
},
"greengrassComponentName": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(\\.[A-Za-z][A-Za-z0-9]*)+$",
"description": "The component's AWS IoT Greengrass component name, as published in its recipe (e.g. com.mbreissi.edgecommons.OpcUaAdapter). It is NOT derivable from `name` - 'opcua-adapter' publishes as 'OpcUaAdapter' - so a deployment targeting Greengrass resolves it from here. Omit for components that do not publish a Greengrass component."
},
"topics": {
"type": "array",
"items": { "type": "string" },
"items": {
"type": "string"
},
"uniqueItems": true
}
}
Expand Down
Loading