Skip to content

Architecture overview ​

Serverstate, package repo, configConsoleVue admin UIExternal consumerread-only clientEdgeruns on a devicePackageyour code, × NControlHubConsumerHubEdgeHubOrbitMeshHubspawns & supervises (local process)

A package talks directly to the Server, not through its Edge. PackageHost opens its own SignalR connection to OrbitMeshHub, using a Server URI and AccessKey the Edge hands it as launch arguments. The Edge is not on the data path for messages or telemetry. Edge↔Package is a local relationship: start, stop, monitor the OS process. Edge↔Server (EdgeHub) is a separate connection for registration and remote control.

  • Server holds the only persistent state (appsettings.json): known Edges, credentials, package assignments, and the package repository.
  • Edge is a thin host. Connects to the Server, downloads its assigned packages, launches each as its own OS process. It doesn't proxy their traffic.
  • Package is your code - a console app using the SDK (see Building a package) - spawned by an Edge but connected to the Server directly.
  • Console is a static SPA the Server hosts, talking to the Server over the same hubs/API any other client could use.

Four SignalR hubs ​

HubWho connectsPurpose
EdgeHubEdge processesRegistration, package-list push, remote control
OrbitMeshHubPackages themselvesMessages, telemetry items, settings, package descriptors
ControlHubThe ConsoleLive edge/package state, logs, remote control actions
ConsumerHubExternal read-only clientsSubscribe to messages/telemetry without registering as a package

Each connection type carries only what it needs. The Console never has to speak the package protocol just to watch what's happening.