Skip to main content
Version: v1.1

Cloud Protocol Reference

Introduction

This page provides the complete protocol reference for the AosEdge Unit-Cloud communication protocol version 7. The protocol defines how Units exchange structured JSON messages with the AosCloud backend over a persistent WebSocket connection secured by mTLS.

The protocol is defined in code rather than a standalone specification document. The authoritative source is the Python Pydantic models at cloud-common/cloud_common/protocols/unit/v7/ (cloud side) and the C++ serialization code at aos_core_cpp/src/common/cloudprotocol/ (Unit side). This reference documents the protocol as implemented in those sources.

Protocol Overview

PropertyValue
Protocol version7
TransportWebSocket (binary frames)
SerializationJSON
Endpoint/ws/v7/
AuthenticationMutual TLS (mTLS) with online certificate
Service discoveryHTTP POST to /sd/v7/

Message Envelope

Every message exchanged over the WebSocket uses a two-part envelope structure: a header and a data payload.

{
"header": {
"version": 7,
"systemId": "unit-abc-123",
"createdAt": "2025-01-15T10:30:00Z",
"txn": "550e8400-e29b-41d4-a716-446655440000"
},
"data": {
"messageType": "unitStatus",
...
}
}

Header Fields

FieldTypeRequiredDescription
versionintegerYesProtocol version. Always 7 for this protocol version.
systemIdstringYesUnique identifier of the Unit sending or receiving the message.
createdAtstring (ISO 8601)YesTimestamp when the message was created.
txnstring (UUID)YesTransaction ID used for acknowledgment correlation and tracing.

Data Payload

The data object contains the message body. The messageType field acts as a discriminator that determines the schema of the remaining fields. An optional correlationId field links request/response pairs.

FieldTypeRequiredDescription
messageTypestringYesDiscriminator identifying the message type.
correlationIdstringNoLinks a response to its originating request.

Acknowledgment Protocol

Every message sent over the WebSocket must be acknowledged by the receiver:

  • ack — confirms the message was received and accepted for processing
  • nack — indicates the message could not be processed; includes a retryAfter hint

ack

Direction: Both (Unit→Cloud and Cloud→Unit)

{
"messageType": "ack",
"correlationId": "<txn of acknowledged message>"
}

nack

Direction: Cloud → Unit

{
"messageType": "nack",
"correlationId": "<txn of rejected message>",
"retryAfter": 500
}
FieldTypeDescription
retryAfterintegerSuggested retry delay in milliseconds. Default: 500.

The CM implementation retries unacknowledged messages up to 3 times. If no acknowledgment is received within the timeout period, the connection is considered broken and reconnection is initiated.

Common Data Structures

Several data structures are shared across multiple message types.

AosIdentity

A flexible identifier used for nodes, items, subjects, and other objects throughout the protocol.

FieldTypeRequiredDescription
idstring (UUID)NoUnique UUID identifier.
typestringNoObject type (e.g., AosService, AosComponent).
codenamestringNoHuman-readable codename.
titlestringNoDisplay title.
descriptionstringNoDescription text.
urnstringNoGlobally unique URN.

ErrorInfo

Error details attached to status reports when an operation fails.

FieldTypeRequiredDescription
codeintegerYesError code.
messagestringYesHuman-readable error description.

Desired Status (Cloud → Unit)

The desiredStatus message is the primary control message from cloud to Unit. It declares the target state — which Deployable Items should be installed, which service instances should be running, and the desired node states.

Message type: desiredStatus

{
"messageType": "desiredStatus",
"nodes": [...],
"unitConfig": {...},
"items": [...],
"instances": [...],
"subjects": [...],
"certificates": [...],
"certificateChains": [...]
}

Top-Level Fields

FieldTypeRequiredDescription
nodesarray of NodeDesiredStateNoDesired state for each node (provisioned or paused).
unitConfigUnitConfigNoUnit configuration to apply.
itemsarray of DesiredUpdateItemInfoNoDeployable Items that should be installed.
instancesarray of DesiredInstanceInfoNoService instances that should be running.
subjectsarray of AosSubjectNoSubject definitions used for access control.
certificatesarray of CertificateInfoNoCertificates for Verification of Deployable Items.
certificateChainsarray of CertificateChainInfoNoCertificate chains for signature Verification.

NodeDesiredState

FieldTypeDescription
itemAosIdentityNode identifier.
statestringDesired state: provisioned or paused.

DesiredUpdateItemInfo

Describes a Deployable Item that should be present on the Unit.

FieldTypeDescription
itemAosIdentityDeployable Item identifier.
versionstring (SemVer)Target version.
ownerAosIdentityOwner identity (OEM or service provider).
indexDigeststringDigest of the OCI index.json for the item.

DesiredInstanceInfo

Describes a service instance that should be running.

FieldTypeDescription
itemAosIdentityDeployable Item identifier.
subjectAosIdentitySubject (tenant) for the instance.
priorityinteger (0–999999)Scheduling priority. Default: 0.
numInstancesinteger (≥0)Number of instances to run. Default: 1.
labelsarray of stringOptional labels for placement constraints.

UnitConfig

Delivered as part of desiredStatus to configure node-level parameters.

FieldTypeDescription
versionstringConfiguration version (auto-incremented).
formatVersionstringFormat version of the configuration structure.
nodesarray of NodeConfigPer-node configuration entries.

NodeConfig

FieldTypeDescription
nodeGroupSubjectAosIdentityNode group subject (identifies the node type).
nodeAosIdentityOptional specific node identifier.
alertRulesAlertRulesThreshold rules for CPU, RAM, disk, and network alerts.
resourceRatiosResourceRatiosInfoDefault resource allocation ratios (cpu, ram, storage, state as percentages).
labelsarray of stringLabels for this node.
priorityinteger (≥0)Node priority for service placement.

Unit Status (Unit → Cloud)

The unitStatus message reports the current state of the Unit — its nodes, installed Deployable Items, running instances, and configuration status.

Message type: unitStatus

{
"messageType": "unitStatus",
"isDeltaInfo": false,
"unitConfig": [...],
"nodes": [...],
"items": [...],
"instances": [...],
"subjects": [...]
}

Top-Level Fields

FieldTypeRequiredDescription
isDeltaInfobooleanNoIf true, this is a delta update (only changed fields). If false or absent, this is a full status report.
unitConfigarray of UnitConfigStatusNoStatus of the installed unit configuration.
nodesarray of UnitNodeInfoNoInformation about all nodes attached to the Unit.
itemsarray of UpdateItemInfoNoStatus of installed Deployable Items.
instancesarray of InstancesInfoNoStatus of running service instances.
subjectsarray of AosIdentityNoActive subjects on the Unit.

UnitConfigStatus

FieldTypeDescription
versionstringInstalled configuration version.
statestringState: absent, installed, or failed.
errorInfoErrorInfoError details if state is failed.

UnitNodeInfo

Reports comprehensive information about a node attached to the Unit.

FieldTypeDescription
identityAosIdentityNode identifier.
nodeGroupSubjectAosIdentityNode group subject (node type).
maxDmipsintegerMaximum DMIPS capacity.
physicalRamintegerPhysical RAM in bytes.
totalRamintegerTotal RAM (physical + swap) in bytes.
osInfoOsInfoOperating system information (os, version, features).
cpusarray of NodeCPUInfoCPU details (model, cores, threads, architecture).
attrsobjectKey-value attributes (e.g., dynamic, cloud_connection).
partitionsarray of NodePartitionInfoDisk partition information (name, types, totalSize).
runtimesarray of RuntimeInfoSupported container runtimes.
resourcesarray of ResourceInfoAvailable shared resources.
isConnectedbooleanWhether the node is connected to the main node.
statestringNode state: unprovisioned, provisioned, error, or paused.
errorInfoErrorInfoError details if state is error.

UpdateItemInfo

Reports the status of an installed Deployable Item.

FieldTypeDescription
itemAosIdentityDeployable Item identifier.
versionstring (SemVer)Installed version.
statestringItem state (see below).
errorInfoErrorInfoError details if state is failed.

Deployable Item states: unknown, downloading, pending, installing, installed, removing, removed, failed

InstancesInfo

Reports the status of running service instances for a specific Deployable Item.

FieldTypeDescription
itemAosIdentityDeployable Item identifier.
subjectAosIdentitySubject (tenant) identifier.
versionstring (SemVer)Item version.
instancesarray of InstanceInfoPer-instance status.

InstanceInfo

FieldTypeDescription
nodeAosIdentityNode where the instance runs.
runtimeAosIdentityRuntime used for the instance.
instanceintegerInstance number (starting from 0).
stateChecksumstring (Base64)SHA-256 checksum of the instance state.
statestringInstance state: activating, active, inactive, or failed.
errorInfoErrorInfoError details if state is failed.

Alerts (Unit → Cloud)

The alerts message carries a batch of alert items from the Unit to the cloud. Alerts are discriminated by a tag field.

Message type: alerts

{
"messageType": "alerts",
"items": [
{ "tag": "systemAlert", ... },
{ "tag": "coreAlert", ... }
]
}

Alert Types

TagDescription
systemAlertSystem-level error on a node.
coreAlertError in an AosCore component (CM, SM, IAM, MP).
deviceAllocateAlertResource allocation failure for a service instance.
systemQuotaAlertSystem resource threshold exceeded on a node.
instanceQuotaAlertService instance resource threshold exceeded.
downloadProgressAlertDownload progress or failure notification.
updateItemInstanceAlertService instance lifecycle event.

systemAlert

FieldTypeDescription
tag"systemAlert"Alert type discriminator.
timestampstring (ISO 8601)When the alert was triggered.
nodeAosIdentityNode where the alert occurred.
messagestringError description.

coreAlert

FieldTypeDescription
tag"coreAlert"Alert type discriminator.
timestampstring (ISO 8601)When the alert was triggered.
nodeAosIdentityNode where the alert occurred.
coreComponentstringComponent ID (e.g., cm, sm, iam).
messagestringError description.

systemQuotaAlert

FieldTypeDescription
tag"systemQuotaAlert"Alert type discriminator.
timestampstring (ISO 8601)When the alert was triggered.
nodeAosIdentityNode where the threshold was exceeded.
parameterstringResource parameter name (e.g., cpu, ram).
valueintegerTriggered value of the parameter.

instanceQuotaAlert

FieldTypeDescription
tag"instanceQuotaAlert"Alert type discriminator.
timestampstring (ISO 8601)When the alert was triggered.
itemAosIdentityDeployable Item identifier.
subjectAosIdentitySubject identifier.
instanceintegerInstance number.
parameterstringResource parameter name.
valueintegerTriggered value.

downloadProgressAlert

FieldTypeDescription
tag"downloadProgressAlert"Alert type discriminator.
timestampstring (ISO 8601)When the alert was triggered.
digeststringBlob digest (OCI format, e.g., sha256:3c3a...).
urlstringDownload URL (optional).
downloadedBytesintegerBytes downloaded so far.
totalBytesintegerTotal file size in bytes.
statestringDownload state: started, paused, interrupted, or finished.
reasonstringReason for the current state (optional).
errorInfoErrorInfoError details if download failed.

deviceAllocateAlert

FieldTypeDescription
tag"deviceAllocateAlert"Alert type discriminator.
timestampstring (ISO 8601)When the alert was triggered.
itemAosIdentityDeployable Item identifier.
subjectAosIdentitySubject identifier.
instanceintegerInstance number.
nodeAosIdentityNode where allocation failed.
deviceIdstringResource name that could not be allocated.
messagestringError description.

updateItemInstanceAlert

FieldTypeDescription
tag"updateItemInstanceAlert"Alert type discriminator.
timestampstring (ISO 8601)When the alert was triggered.
itemAosIdentityDeployable Item identifier.
subjectIdAosIdentitySubject identifier.
instanceintegerInstance number.
versionstring (SemVer)Item version.
messagestringAlert description.

Monitoring Data (Unit → Cloud)

The monitoringData message sends resource usage metrics from the Unit to the cloud, covering both node-level and per-instance metrics.

Message type: monitoringData

{
"messageType": "monitoringData",
"nodes": [...],
"instances": [...]
}

Top-Level Fields

FieldTypeRequiredDescription
nodesarray of NodeMonitoringDataYesPer-node resource usage data.
instancesarray of InstanceMonitoringDataNoPer-instance resource usage data.

NodeMonitoringData

FieldTypeDescription
nodeAosIdentityNode identifier.
nodeStatesarray of NodeStateNode state change history.
itemsarray of MonitoringDataTime-series resource usage records.

InstanceMonitoringData

FieldTypeDescription
itemAosIdentityDeployable Item identifier.
subjectAosIdentitySubject identifier.
instanceintegerInstance number.
nodeAosIdentityNode where the instance runs.
itemStatesarray of InstanceStateDataInstance state change history.
itemsarray of MonitoringDataTime-series resource usage records.

MonitoringData

A single resource usage sample.

FieldTypeDescription
timestampstring (ISO 8601)When the sample was recorded.
ramintegerRAM usage in bytes.
cpuintegerCPU usage (implementation-defined units).
downloadintegerInbound network traffic in bytes.
uploadintegerOutbound network traffic in bytes.
partitionsarray of PartitionUsageDisk partition usage.

PartitionUsage

FieldTypeDescription
namestringPartition name.
usedSizeintegerUsed space in bytes.

Log Messages

The protocol supports on-demand log retrieval. The cloud requests logs from the Unit, and the Unit responds with log content in parts.

requestLog (Cloud → Unit)

Requests logs from the Unit with filtering options.

Message type: requestLog

FieldTypeDescription
logTypestringType of log: systemLog, instanceLog, or crashLog.
filterLogFilterFilter criteria for the log request.
uploadOptionsUploadOptionsHow the Unit should deliver the logs.

LogFilter

FieldTypeDescription
fromstring (ISO 8601)Start timestamp (inclusive).
tillstring (ISO 8601)End timestamp (exclusive).
nodeIdsarray of AosIdentityNodes to collect logs from (all if omitted).
itemAosIdentityFilter by Deployable Item (optional).
subjectAosIdentityFilter by subject (optional).
instanceintegerFilter by instance number (optional).

UploadOptions

FieldTypeDescription
typestringUpload channel: wss (WebSocket) or https.
urlstringBase URL for upload (optional).
bearerTokenstringAuthorization token (optional).
bearerTokenTtlstring (ISO 8601)Token expiration time (optional).

pushLog (Unit → Cloud)

Delivers log content in response to a requestLog. Large logs are split into multiple parts.

Message type: pushLog

FieldTypeDescription
correlationIdstringLinks this response to the original requestLog.
nodeAosIdentityNode that produced the logs.
partintegerCurrent part number (starting from 0).
partsCountintegerTotal number of parts.
contentstring (Base64)Log content for this part.
statusstringLog status: ok, failed, error, empty, or absent.
errorInfoErrorInfoError details if status indicates failure.

Certificate Lifecycle Messages

The protocol includes messages for managing the Unit's certificate lifecycle — renewal notifications, certificate signing requests, and installation confirmations.

renewCertificatesNotification (Cloud → Unit)

Cloud notifies the Unit that certificates need renewal and provides unit secrets for secure operations.

Message type: renewCertificatesNotification

FieldTypeDescription
certificatesarray of CertificateIdentificationCertificates that need renewal (type, node, serial, validTill).
unitSecretsUnitSecretsDataSecrets for secure Unit operations.

CertificateIdentification

FieldTypeDescription
typestringCertificate type: offline, online, um, sm, cm, iam, host-device, remote-device, or azure-iot.
nodeAosIdentityNode identity.
serialstringCertificate serial number.
validTillstring (ISO 8601)Certificate expiration time.

issueUnitCertificates (Unit → Cloud)

Unit requests new certificates by sending Certificate Signing Requests (CSRs).

Message type: issueUnitCertificates

FieldTypeDescription
requestsarray of IssueCertDataCSR requests.

IssueCertData

FieldTypeDescription
typestringCertificate type (same values as CertificateIdentification).
nodeAosIdentityNode identity.
csrstring (PEM)Certificate Signing Request in PEM format.

issuedUnitCertificates (Cloud → Unit)

Cloud delivers newly issued certificates.

Message type: issuedUnitCertificates

FieldTypeDescription
certificatesarray of IssuedUnitCertsIssued certificate data.

IssuedUnitCerts

FieldTypeDescription
typestringCertificate type.
nodeAosIdentityNode identity.
certificateChainstring (PEM)Full certificate chain.

installUnitCertificatesConfirmation (Unit → Cloud)

Unit confirms that certificates have been installed (or reports failure).

Message type: installUnitCertificatesConfirmation

FieldTypeDescription
certificatesarray of InstallCertDataInstallation results.

InstallCertData

FieldTypeDescription
typestringCertificate type.
nodeAosIdentityNode identity.
serialstringInstalled certificate serial number.
errorInfoErrorInfoError details if installation failed.

Service State Messages

The protocol supports bidirectional service state synchronization between the Unit and cloud.

newState (Unit → Cloud)

Unit reports a new service state (e.g., after a service writes updated state data).

Message type: newState

FieldTypeDescription
itemAosIdentityDeployable Item identifier.
subjectAosIdentitySubject identifier.
instanceintegerInstance number.
stateChecksumstringSHA-256 digest over the state content.
statestringThe state content (application-defined format).

updateState (Cloud → Unit)

Cloud sends updated state to the Unit (e.g., restoring state after redeployment).

Message type: updateState

Same schema as newState — contains item, subject, instance, stateChecksum, and state fields.

stateRequest (Unit → Cloud)

Unit requests its current or default state from the cloud.

Message type: stateRequest

FieldTypeDescription
itemAosIdentityDeployable Item identifier.
subjectAosIdentitySubject identifier.
instanceintegerInstance number.
defaultbooleanIf true, request the initial (default) state. If false, request the latest state.

stateAcceptance (Cloud → Unit)

Cloud accepts or rejects a state update previously sent via newState.

Message type: stateAcceptance

FieldTypeDescription
itemAosIdentityDeployable Item identifier.
subjectAosIdentitySubject identifier.
instanceintegerInstance number.
checksumstringState checksum being accepted/rejected.
resultstringResult: accepted or rejected.
reasonstringReason for the decision.

Blob URL Messages

For large binary objects (Deployable Item images), the Unit requests download URLs from the cloud rather than receiving the data inline.

requestBlobUrls (Unit → Cloud)

Unit requests download URLs for specific blobs identified by their OCI digest.

Message type: requestBlobUrls

FieldTypeDescription
digestsarray of stringOCI-format digests (e.g., sha256:3c3a4604...).

blobUrls (Cloud → Unit)

Cloud provides download URLs and Verification information for requested blobs.

Message type: blobUrls

FieldTypeDescription
itemsarray of UpdateItemBlobInfoBlob download information.

UpdateItemBlobInfo

FieldTypeDescription
digeststringOCI-format blob digest.
urlsarray of stringDownload URLs (multiple for redundancy).
sha256string (Base64)SHA-256 hash of the blob content.
sizeintegerFile size in bytes.
decryptInfoDecryptInfoDecryption parameters for the blob.
signInfoSignInfoSignature Verification data.

DecryptInfo

FieldTypeDescription
blockAlgstringBlock cipher: AES256/CBC/pkcs7 or AES256/GCM/.
blockIvstring (Base64)Initialization vector.
blockKeystring (Base64)Symmetric encryption key.

SignInfo

FieldTypeDescription
chainNamestringCertificate chain name for Verification.
algstringSigning algorithm: RSA/SHA256 or EC/SHA256.
valuestring (Base64)Signature value.
trustedTimestampstring (ISO 8601)Signature timestamp.
ocspValuesarray of stringOCSP response values.

Environment Variable Override Messages

The cloud can override environment variables for running service instances.

overrideEnvVars (Cloud → Unit)

Cloud sends environment variable overrides to apply to service instances.

Message type: overrideEnvVars

FieldTypeDescription
itemsarray of EnvVarFilterFilters and variables to apply.

EnvVarFilter

FieldTypeDescription
itemAosIdentityTarget Deployable Item (optional — applies to all if omitted).
subjectAosIdentityTarget subject (optional).
instanceintegerTarget instance number (optional).
variablesarray of EnvVarEnvironment variables to set.

EnvVar

FieldTypeDescription
namestringVariable name (1–256 characters).
valuestringVariable value (0–10240 characters).
ttlstring (ISO 8601)Time-to-live for the variable (optional; empty means permanent).

overrideEnvVarsStatus (Unit → Cloud)

Unit reports the result of applying environment variable overrides.

Message type: overrideEnvVarsStatus

FieldTypeDescription
statusesarray of EnvVarInstanceStatusPer-instance override results.

EnvVarInstanceStatus

FieldTypeDescription
itemAosIdentityDeployable Item identifier.
subjectIdAosIdentitySubject identifier.
instanceintegerInstance number.
namestringVariable name.
errorInfoErrorInfoError details if override failed.

Provisioning Messages

The protocol supports remote provisioning and deprovisioning of nodes through a request/response pattern.

startProvisioningRequest (Cloud → Unit)

Cloud initiates provisioning of a node.

Message type: startProvisioningRequest

FieldTypeDescription
nodeAosIdentityNode to provision.
passwordstringTPM security officer password.

startProvisioningResponse (Unit → Cloud)

Unit responds with CSRs for the node's certificates.

Message type: startProvisioningResponse

FieldTypeDescription
nodeAosIdentityNode being provisioned.
errorInfoErrorInfoError details if provisioning start failed.
csrsarray of CSRCertificate Signing Requests (type + PEM CSR).

finishProvisioningRequest (Cloud → Unit)

Cloud completes provisioning by delivering signed certificates.

Message type: finishProvisioningRequest

FieldTypeDescription
nodeAosIdentityNode being provisioned.
certificatesarray of IssuedCertificateSigned certificates (type + chain).
passwordstringTPM security officer password.

finishProvisioningResponse (Unit → Cloud)

Unit confirms provisioning completion.

Message type: finishProvisioningResponse

FieldTypeDescription
nodeAosIdentityNode that was provisioned.
errorInfoErrorInfoError details if provisioning failed.

deprovisioningRequest (Cloud → Unit)

Cloud initiates deprovisioning of a node.

Message type: deprovisioningRequest

FieldTypeDescription
nodeAosIdentityNode to deprovision.
passwordstringTPM security officer password.

deprovisioningResponse (Unit → Cloud)

Unit confirms deprovisioning completion.

Message type: deprovisioningResponse

FieldTypeDescription
nodeAosIdentityNode that was deprovisioned.
errorInfoErrorInfoError details if deprovisioning failed.

Service Discovery Protocol

Before establishing the WebSocket connection, the Unit must discover the cloud endpoint through a lightweight HTTP-based service discovery mechanism.

Discovery Request

The Unit sends an HTTP POST to /sd/v7/ with:

{
"version": 7,
"systemId": "unit-abc-123",
"supportedProtocols": ["ws/v7"]
}
FieldTypeDescription
versionintegerProtocol version (7).
systemIdstringUnit system identifier.
supportedProtocolsarray of stringProtocols the Unit supports.

Discovery Response

The cloud responds with connection information:

{
"version": 7,
"systemId": "unit-abc-123",
"nextRequestDelay": 3600,
"connectionInfo": ["wss://cloud.example.com/ws/v7/"],
"authToken": "<optional-token>",
"errorCode": "NoError"
}
FieldTypeDescription
versionintegerProtocol version.
systemIdstringConfirmed Unit system ID.
nextRequestDelayintegerSeconds before the Unit should re-discover.
connectionInfoarray of stringWebSocket URLs to connect to.
authTokenstringOptional authentication token.
errorCodestringStatus: NoError, Redirect, RepeatLater, or Error.

The Unit caches the discovered URL and reuses it across reconnections. A new discovery is triggered after repeated connection failures or when nextRequestDelay expires.

Protocol Behavior Summary

Message Flow Patterns

PatternMessagesDescription
Status reportingunitStatusackUnit periodically reports its full or delta status.
Desired statedesiredStatusackCloud pushes target state; Unit acknowledges and begins reconciliation.
Blob downloadrequestBlobUrlsblobUrlsUnit requests download URLs for large binaries.
Log retrievalrequestLogpushLog (×N)Cloud requests logs; Unit responds in parts.
Certificate renewalrenewCertificatesNotificationissueUnitCertificatesissuedUnitCertificatesinstallUnitCertificatesConfirmationFull certificate renewal cycle.
ProvisioningstartProvisioningRequeststartProvisioningResponsefinishProvisioningRequestfinishProvisioningResponseNode provisioning handshake.
State syncnewStatestateAcceptanceUnit uploads state; cloud accepts or rejects.

Connection Lifecycle

  1. Service discovery — HTTP POST to /sd/v7/ returns WebSocket URL
  2. WebSocket connect — mTLS handshake to /ws/v7/
  3. Initial status — Unit sends full unitStatus (isDeltaInfo: false)
  4. Steady state — bidirectional message exchange with ack/nack
  5. Reconnection — on connection loss, exponential backoff from 1 second to 10 minutes, up to 5 retries per attempt
  • Service Lifecycle — how desired-state messages drive service deployment
  • Monitoring — monitoring pipeline that produces monitoringData messages