Architecture overview
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
| Hub | Who connects | Purpose |
|---|---|---|
EdgeHub | Edge processes | Registration, package-list push, remote control |
OrbitMeshHub | Packages themselves | Messages, telemetry items, settings, package descriptors |
ControlHub | The Console | Live edge/package state, logs, remote control actions |
ConsumerHub | External read-only clients | Subscribe 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.