One map of the Zyvor edge line — landing page and suite CI. Device Agent, Nodra, Fleet, OTA, Yard, relay-edge and relay-pubsub, with hermetic Python stubs that prove the cross-product HTTP wire shapes Yard's connectors rely on, on every push.
7 edge products · 4 connector paths · 21 contract checks · Python stdlib only · Every quote from the product's own docs
📖 Live site · How they fit · Suite CI
This repository is not a monorepo build. It hosts the static GitHub Pages landing for Device Agent, Nodra, Fleet, OTA, Yard, relay-edge, relay-pubsub (and optional Relay / Zynera), plus hermetic Python stubs that prove cross-product HTTP wire shapes Yard connectors rely on. Every quote and diagram on the page comes from each product's own docs.
| When this happens… | Zyvor Edge Stack gives you… |
|---|---|
| Every edge product has a green CI, and you still ask how they work together | One map (HOW_THEY_FIT.md): what each product owns, the data paths between them, lab ports and ownership |
| A product changes a wire contract and the ops console quietly stops syncing | suite-ci exercises the HTTP contracts Yard's connectors call, on every push and pull request to main |
| Proving integration means building six language toolchains | Hermetic in-process stubs for Device Agent, Nodra, Fleet and a Yard ingest sink, in plain Python |
| Nobody is sure which product owns OTA, rollouts or twins | An ownership table per path: OTA owns signed RAUC installs, Fleet the device assignment contract, Nodra the canary campaigns, Yard the display |
| A suite test claims more than it proves | A written list of what suite CI does not claim: full builds, RAUC flashing, Fleet HA, live lab hosts |
| You need a single page to show the edge line | A static GitHub Pages site where every quote and diagram comes from each product's own docs |
| Zyvor Edge Stack | AWS IoT Greengrass | |
|---|---|---|
| Shape | Seven separate products, each in its own repo with its own CI | An edge runtime (the Greengrass nucleus) plus components |
| Control plane | Fleet (sites, desired state, rollouts) and Nodra (devices, twins, campaigns), on hosts you run | AWS IoT services in the AWS cloud |
| Device state | Nodra twins; Device Agent inventory and sensors | Device shadows in AWS IoT Core |
| OS updates | OTA: signed RAUC A/B, assigned by Fleet or Nodra campaigns | Greengrass deployments and AWS IoT Jobs |
| Ops console | Yard pulls from Nodra, Fleet and Device Agent through connectors | AWS console and services |
| Integration proof | suite-ci: 21 hermetic contract checks across paths A to D, in this repo |
Provided by AWS as one service |
| Where it runs | Processes on hosts you run (see the lab topology in HOW_THEY_FIT.md) | Devices plus an AWS account |
| Choose Greengrass when | You are standardized on AWS and want its managed cloud services to run your edge fleet |
Product maturity lives in each upstream repo; see Maturity.
Read first:
- docs/HOW_THEY_FIT.md — architecture, data paths, lab ports, ownership
- docs/SUITE_CI.md — what the cross-product CI proves
Product builds stay in each repo's Makefile (make help there).
| Path | What suite CI proves |
|---|---|
| A Device Agent → Yard | Bearer gate, inventory/sensors pull, ingest 202 |
| B Nodra → Yard | Devices + twins join, OTA campaign list, numeric observations ingest |
| C Fleet → Yard | Sites, rollouts, OTA devices → lifecycle summary shape |
| D relay-pubsub | Documented backends including honest grpc scaffold |
Yard never replaces Nodra, Fleet, or OTA. It pulls what those planes already own and shows it as assets, observations, and integration status.
Needs Python 3 (standard library only) and make.
make ci
./scripts/run-suite-smoke.shmake ci runs the four connector-path smokes and checks that the suite docs are present; it ends with Suite smoke: 21 passed, 0 failed.
GitHub Actions workflow suite-ci runs that smoke on every push and pull request to main. Hermetic stubs in scripts/suite_peers.py and scripts/suite_smoke.py speak the same HTTP shapes Yard's connectors call.
index.html— static marketing/docs site (GitHub Pages frommain/).
| Change | Where |
|---|---|
| Marketing copy / layout | index.html |
| Suite narrative / ports / ownership | docs/HOW_THEY_FIT.md |
| Connector wire shapes | scripts/suite_peers.py + scripts/suite_smoke.py |
| Share cards | docs/social/ — ./docs/social/build-social-card.sh |
Maturity (honest): Integration smoke and narrative docs — product maturity lives in each upstream repo.
make cihere validates suite contracts, not full product qualification.
| Product | Role in the edge line |
|---|---|
| Device Agent | Discover the box; local inventory/sensors; publish northbound |
| Nodra | Edge data plane — MQTT/HTTP ingest, twins, industrial connectors, staged OTA campaigns |
| Fleet · OTA | Site control plane and rollouts · signed RAUC A/B OS updates |
| Yard | Asset / ops surface — optional connectors pull peers into one console |
| relay-edge · relay-pubsub | Site event simulators · Google Pub/Sub–compatible gateway into Zyvor Relay |
Zyvor Edge Stack is free and open source under the Apache License 2.0 (see NOTICE). That does not change. Product names and quoted copy belong to their respective Zyvor projects.
Zyvor Enterprise adds what production teams ask for: supported releases, deployment and upgrade guidance, priority incident triage, a named technical contact and 24x7 critical intake. Pricing · [email protected].



