MiroxMirox
  • Platform

    • Philosophy
    • Platform Overview
    • Platform Resources
  • Mirox-Cloud

    • Cloud Overview
    • Connected Microservices
  • Mirox-Agent

    • Agent Overview
    • Deployment Options
    • Data Scraper
    • Digital Twin
  • Technical Details

    • Metric Collection
  • Information

    • Supported Plants
  • Plant Types

    • Solar Plants
    • Wind Plants
    • Battery Storage
  • Monitoring & Visualization

    • Real-time Monitoring
    • Digital Twin
    • Component States
    • Loss Detection
    • Efficiency Detection
    • KPI Dashboard
  • Data Management

    • Events
    • Tickets
    • Forecasts
    • Reports
  • Integration & Sharing

    • Cooperations
    • API Tokens
    • VPN
    • Proxy
  • AI

    • AI Assistant & Wizards
    • Agentic Access (MCP)
  • Billing

    • Market & Tariffs
    • Accounting & Billing
  • Collaboration

    • Invitations
  • Security

    • Authentication
    • Permission System
    • Cooperation Restrictions
    • Access Audit Logging
  • Nodes

    • mrxnode
  • Application

    • Door Control
    • Generic Relay
  • Edge Cluster

    • Orchestration
  • Getting Started

    • First Steps
  • Personal

    • Using the VPN
    • Using the Proxy
    • Two-Factor Authentication
    • Sessions
    • API Tokens
  • Per Park

    • Contacts
    • Network Devices
    • Data Loggers
    • Components
    • Direct VPN (per Agent)
  • Organization

    • Member Permissions
    • Cooperations
    • File Storage
  • Data Export

    • Export Metric API
    • MiroxQL Query Language
    • External Report Generation
    • Grafana
    • API Overview
  • Support

    • Request Integration Guide
  • mrxnode

    • Overview
    • How-To Guide
    • Container Deployment
    • Command Cheatsheet
    • Troubleshooting
  • Reporting

    • External Report Generator
  • English
  • Deutsch
  • Español
  • Français
  • Português
  • Italiano
  • English
  • Platform

    • Philosophy
    • Platform Overview
    • Platform Resources
  • Mirox-Cloud

    • Cloud Overview
    • Connected Microservices
  • Mirox-Agent

    • Agent Overview
    • Deployment Options
    • Data Scraper
    • Digital Twin
  • Technical Details

    • Metric Collection
  • Information

    • Supported Plants
  • Plant Types

    • Solar Plants
    • Wind Plants
    • Battery Storage
  • Monitoring & Visualization

    • Real-time Monitoring
    • Digital Twin
    • Component States
    • Loss Detection
    • Efficiency Detection
    • KPI Dashboard
  • Data Management

    • Events
    • Tickets
    • Forecasts
    • Reports
  • Integration & Sharing

    • Cooperations
    • API Tokens
    • VPN
    • Proxy
  • AI

    • AI Assistant & Wizards
    • Agentic Access (MCP)
  • Billing

    • Market & Tariffs
    • Accounting & Billing
  • Collaboration

    • Invitations
  • Security

    • Authentication
    • Permission System
    • Cooperation Restrictions
    • Access Audit Logging
  • Nodes

    • mrxnode
  • Application

    • Door Control
    • Generic Relay
  • Edge Cluster

    • Orchestration
  • Getting Started

    • First Steps
  • Personal

    • Using the VPN
    • Using the Proxy
    • Two-Factor Authentication
    • Sessions
    • API Tokens
  • Per Park

    • Contacts
    • Network Devices
    • Data Loggers
    • Components
    • Direct VPN (per Agent)
  • Organization

    • Member Permissions
    • Cooperations
    • File Storage
  • Data Export

    • Export Metric API
    • MiroxQL Query Language
    • External Report Generation
    • Grafana
    • API Overview
  • Support

    • Request Integration Guide
  • mrxnode

    • Overview
    • How-To Guide
    • Container Deployment
    • Command Cheatsheet
    • Troubleshooting
  • Reporting

    • External Report Generator
  • English
  • Deutsch
  • Español
  • Français
  • Português
  • Italiano
  • English
  • Nodes

    • mrxnode
  • Application

    • Door Control
    • Generic Relay
  • Edge Cluster

    • Orchestration

Orchestration

Run a fleet of MiroxOS edge nodes as a single, self-healing cluster at your plant, with every node moving through a guarded state machine so a device can never end up in an invalid or half-configured state.

Overview

Standing up an edge cluster is a coordinated handshake between actions you run on the device and actions Mirox staff perform in the cloud. Each node advances through a strict state machine, and every transition checks its prerequisites first — so you cannot, for example, tear a node out of a park while it is still serving a live cluster. When a device falls behind the cloud (for instance after a forced cleanup while it was offline), a single sync command reconciles it.

State Machine

Device State Diagram

Legend:

  • Solid arrows: Normal transitions (run on the device or by an organization administrator)
  • Dashed arrows: Forced transitions performed by Mirox staff, with automatic cleanup
  • Locked to park Edge cluster running Sync point

Forced Transition Behavior

When Mirox staff use the force option, all intermediate cleanups run automatically:

Forced ActionAuto-executes
Delete device (from CLUSTER_ACTIVE)leave cluster → node deinit → unassign park → unassign org → unregister
Delete device (from NODE_INITIALIZED)node deinit → unassign park → unassign org → unregister
Unassign from org (from NODE_INITIALIZED)node deinit → unassign park → unassign org
Unassign from park (from NODE_INITIALIZED)node deinit → unassign park

Device Sync

The device can run mrxcloud sync to fetch the current cloud state and reconcile its local configuration:

  • If the device was forcefully unassigned from the park → local node config is cleared
  • If the device was forcefully unassigned from the organization → local org config is cleared
  • If the device was forcefully deleted → the device must re-register

Cluster State Diagram

Legend:

  • Solid arrows: Normal transitions
  • Dashed arrows: Forced transitions performed by Mirox staff
  • Waiting for nodes Cluster operational

Device States

StateDescriptionNext Allowed States
UNREGISTEREDDevice is not registered with any cloudREGISTERED
REGISTEREDDevice is registered with cloudASSIGNED_ORG, UNREGISTERED
ASSIGNED_ORGDevice is assigned to an organizationASSIGNED_PARK, REGISTERED
ASSIGNED_PARKDevice is assigned to a parkNODE_INITIALIZED, ASSIGNED_ORG
NODE_INITIALIZEDDevice is initialized as edge nodeCLUSTER_ACTIVE, ASSIGNED_PARK
CLUSTER_ACTIVEEdge cluster is running on deviceNODE_INITIALIZED

Cluster States

StateDescription
NOT_CREATEDNo edge cluster exists for park
CREATEDEdge cluster created, waiting for nodes
ACTIVEAt least one node has joined

Workflow Steps

Forward Flow (Setup)

StepActionActorToolPrerequisite
1Register deviceDevicemrxcloud register-
2Assign to organizationMirox staffCloudStep 1
3Assign to parkOrganization administratorCloudStep 2
4Create edge clusterMirox staffCloudStep 3 (park exists)
5Initialize nodeDevicemrxcloud node initSteps 3 + 4
6Initialize clusterDevicemrxnode initStep 5
7Deploy workloadsDevicemrxnode bootstrapStep 6

Backward Flow (Teardown)

StepActionActorToolPrerequisite
7Stop workloadsDevicemrxnode teardown-
6Leave clusterDevicemrxnode leaveStep 7
5De-initialize nodeDevicemrxcloud node deinitStep 6
4Delete edge clusterMirox staffCloudNo active nodes
3Unassign from parkOrganization administratorCloudStep 5 (node de-initialized)
2Unassign from orgMirox staffCloudStep 3
1Unregister deviceDevicemrxcloud unregisterStep 2

Locking Constraints

Park Assignment Lock

When a device is initialized as an edge node (Step 5), the device becomes locked to the park:

ActionAllowed WhenBlocked When
Unassign device from parkNode NOT initializedNode initialized
Unassign device from orgDevice NOT assigned to parkDevice assigned to park
Delete edge clusterNo nodes initializedAny node initialized

Enforcement Matrix

Each action is refused while a lock is active, unless it is run with the force flag — in which case the platform performs every intermediate cleanup for you:

ActionWithout ForceWith Force
Unassign device from parkRefused while the device is an initialized nodeAuto node deinit, then unassign
Unassign device from organizationRefused while the device is assigned to a parkAuto unassign park (and node deinit if needed)
Delete deviceRefused while the device has any assignmentsAuto full cleanup chain
Delete edge clusterRefused while any nodes are initializedAuto deinit all nodes, then delete
Initialize node (mrxcloud node init)Requires the device be assigned to a park with an edge cluster-
Leave cluster (mrxcloud node deinit)Requires the device to currently hold a node number-

Command Reference

Device-Side Commands (mrxcloud)

CommandDescription
mrxcloud register <domain>Register the device with the cloud
mrxcloud unregisterUnregister the device
mrxcloud syncFetch and reconcile the current cloud state
mrxcloud node initInitialize the device as an edge node
mrxcloud node deinitDe-initialize the node from the cluster
mrxcloud node infoShow the device's node configuration

Device-Side Commands (mrxnode)

CommandDescription
mrxnode initStart the edge cluster (first node) or join an existing one
mrxnode leaveLeave the edge cluster
mrxnode bootstrapDeploy the plant's workloads onto the cluster
mrxnode teardownStop and remove the deployed workloads
mrxnode checkCheck the cluster status

Cloud-Side Actions

These steps are performed in the cloud rather than on the device. Assigning a device to a park and managing it within the park is available to your organization administrators; registering or assigning a device to an organization, and creating or deleting the edge cluster itself, are performed by Mirox staff.

ActionPerformed ByWith Force
Assign device to organizationMirox staff-
Unassign device from organizationMirox staffAuto unassign park + node deinit
Delete deviceMirox staffAuto full cleanup chain
Assign / unassign device to a parkOrganization administratorAuto node deinit on unassign
Create edge cluster for a parkMirox staff-
Delete edge clusterMirox staffAuto deinit all nodes

State Verification

Check Current State

# On device: check registration and node status
mrxcloud status
mrxcloud node info

# Check the edge cluster status
mrxnode check

State Indicators

mrxcloud node info reports the device's current node configuration:

IndicatorMeaning
edge_locationPark UID this device serves as a node
edge_node_numberAssigned node number (1, 2, 3...)
private_ipNode's private network IP within the cluster
token_to_joinCluster join token used by additional nodes

Error Handling

Common Errors

ErrorCauseResolution
"Device is not assigned to a park"Step 3 not completedAssign the device to a park in the cloud
"No edge cluster exists for park"Step 4 not completedHave the edge cluster created in the cloud
"Cannot unassign: device is initialized as edge node"Step 5 completed, lock activeRun mrxcloud node deinit, or use the force option
"Cannot delete cluster: active nodes exist"Nodes still initializedDe-initialize all nodes, or use the force option
"Cannot unassign from org: device assigned to park"Device still in parkUnassign from the park first, or use the force option
"State mismatch: device was forcefully modified"Cloud state changed while the device was offlineRun mrxcloud sync to reconcile

Related Features

  • mrxnode — the edge hardware node that runs as part of the cluster
  • mrxnode Overview — device setup, registration, and CLI walkthrough
  • mrxnode Cheatsheet — quick reference for the mrxcloud and mrxnode commands
  • Troubleshooting — recovery patterns when a node misbehaves
  • Agent Deployment Options — on-site edge clusters versus cloud-hosted agents
MIT Licensed | Copyright 2026 Mirox Verwaltungs GmbH