Skip to main content

IPC Updater Service

The IPC Updater service manages updates of the Intrinsic runtime on an IPC. It is intended for use by an HMI so that updates will not be applied until they are approved by an operator.

It can be accessed over HTTP (as described below) or through its gRPC API.

Access the service

Depending on where the HTTP/gRPC client is located, different URLs are used to access the IPC Updater service.

From inside the cluster (Intrinsic Services)

If you are running an Intrinsic Service inside the cluster, you can access the IPC Updater service directly.

The HTTP API is available through the HTTP gateway at:

HTTP endpoint: http://http-gateway.app-intrinsic-base.svc.cluster.local:8080

The gRPC API is available through the Ingress at:

gRPC endpoint: istio-ingressgateway.app-ingress.svc.cluster.local:80

From the frontend (HMI)

To access the IPC Updater service from an HMI frontend, you can use relative routing to reach the HTTP gateway.

Assuming you have already set up your frontend following the HMI Service Guide, your HMI will typically be served from workcell.lan:17080/ext/services/hmi/. For instructions on how to configure your local network to resolve this hostname, see Use the local network.

In this setup, the IPC Updater service is accessible at workcell.lan:17080/http-gateway/ipcUpdater/v1/.... You can use the relative path ../../../http-gateway/ipcUpdater/v1/... to resolve to the HTTP gateway directly from your HMI application.

The JavaScript examples in this guide use this relative routing approach.

Get update info

To retrieve the current status regarding the installed version and available updates.

Request

GET /ipcUpdater/v1/updateInfo

Example:

const res = await fetch("../../../http-gateway/ipcUpdater/v1/updateInfo");
const info = await res.json();
console.log(info);

Response

Returns an UpdateInfo object.

Structure:

{
"state": "STATE_UPDATE_AVAILABLE" | "STATE_UPDATE_RUNNING" | "STATE_UP_TO_DATE" | "STATE_FAULT",
"current": {
"versionId": "string",
"updateNotes": "string" (optional)
},
"available": {
"versionId": "string",
"updateNotes": "string" (optional)
}
}
  • state:
    • STATE_UP_TO_DATE: No update is in-progress or available.
    • STATE_UPDATE_AVAILABLE: A new update is available. No update is currently in-progress.
    • STATE_UPDATE_RUNNING: An update is currently in-progress.
    • STATE_FAULT: Previous update failed; IPC returned to previous version. Requires user intervention.
  • current: The running version of the Intrinsic runtime software.
  • available: Available version of the Intrinsic runtime software, it's the same as current if no update is available.

Approve updates

Approves the update to a given version.

Request

POST /ipcUpdater/v1/updateInfo:approve

Body:

{
"approved": {
"versionId": "string"
}
}
  • approved.versionId: Must match the available.versionId reported by /ipcUpdater/v1/updateInfo, otherwise it returns a FAILED_PRECONDITION error. This ensures you are approving the specific version reported.

Example:

const response = await fetch("../../../http-gateway/ipcUpdater/v1/updateInfo:approve", {
method: "POST",
body: JSON.stringify({
approved: {
versionId: "0.20260316.0-RC01" // Replace with actual available versionId
}
}),
headers: {
"Content-Type": "application/json",
},
});

Response

Returns an empty object {} on success.