Skip to main content
Version: v3.9.0

Modules

Deep-dive documentation for daemon components under internal/. For system overview and diagrams, see Architecture.

Module startup order​

The Supervisor opens SQLite, then starts modules in dependency order. Embedded containerd (when containerEngine=edgelet) must be running before Supervisor starts; bootstrap owns that in cmd/edgelet.

Approximate sequence in internal/supervisor/supervisor.go:

  1. Open store (/var/lib/edgelet/edgelet.db)
  2. statusreporter. Aggregates module and daemon status for Controller POST
  3. network. Host interface management
  4. resourceconsumption. Host resource sampling
  5. fieldagent. Controller REST client and sync workers
  6. processmanager. Container reconcile (after engine wired)
  7. gps. NMEA/device integration
  8. edgeletapi. HTTPS + Unix /v1/...
  9. pruning. Scheduled/threshold image + unused-local-model prune (not persistent VOLUME data)
  10. edgeguard. Hardware attestation loop

Host hardware/USB inventory posting (formerly Resource Manager) is removed. Edge Guard stays.

Shutdown reverses the order; store.Close() runs last (WAL checkpoint).

Lazy or engine-bound components (not separate Supervisor Start() modules):

  • volumemount. Initialized on first use; driven by Field Agent sync
  • dnsresolver. Started with edgelet engine
  • healthcheck. Goroutine when containerEngine=edgelet
  • proxy. Updated from Controller change feed
  • runtimeapi. Library facade for EdgeletAPI handlers
  • serviceaccount. Reconciled from Process Manager / Field Agent
  • modelmanager. Model artifact reconcile (wired from Supervisor / EdgeletAPI)

StatusReporter module indices​

GET /v1/system/status exposes modulesStatus[] aligned with internal/utils/constants.go:

IndexModule
0Resource Consumption Manager
1Process Manager
2Status Reporter
3EdgeletAPI
4Field Agent
5(unused: former Resource Manager; indexes are not reshuffled)
6GPS Manager

Edge Guard, Pruning, Volume Mount, and SSH Proxy are not in this fixed array; their health surfaces via logs and dedicated status objects.

Module documentation​

Tier 1: core runtime​

ModuleDocument
SupervisorSupervisor
Field AgentField agent
Process ManagerProcess manager
EdgeletAPIEdgelet API module
SQLite StoreStore

Tier 2: security and identity​

ModuleDocument
AuthAuth
Service AccountService account
Edge GuardEdgeGuard: operator guide: EdgeGuard

Tier 3: runtime plumbing​

ModuleDocument
Container EnginesEngines: operator guide: Container engines
DNS ResolverDNS resolver: operator guide: DNS
Healthcheck RunnerHealth check
Pruning ManagerPruning
Volume Mount ManagerVolume mount
Runtime API FacadeRuntime API

Tier 4: supporting​

ModuleDocument
Status ReporterStatus reporter
Resource Manager (removed)Resource manager
Resource ConsumptionResource consumption
Network ManagerNetwork
GPS ManagerGPS
SSH Proxy ManagerProxy
ControlPlane (runtime)Control plane module: operator guide: Local control plane
TopicDocument
EdgeletAPI usageEdgelet API
Controller sync / CP deployLocal control plane
SQLite backup / wipePersistence
Workload volumesVolumes
Container enginesContainer engines
DNSDNS
Workload labels/envWorkload metadata
Manifest YAMLManifests
Model artifactsModels
Knowledge artifactsKnowledge
Crash / last-error inspectTroubleshooting
Group 3See anything wrong with the document? Help us improve it!