> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nexalis.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

Welcome to the **Nexalis Agent** documentation. This guide explains how to install and configure **Nexalis Agent**. It is designed for technical users (e.g., SCADA engineers) who need to extract data from industrial systems.

***

## What Nexalis Agent does

* Nexalis Agent **extracts raw data** from on-premise or remote industrial assets and **loads** it to Nexalis Cloud in **real time**. **Industrial connectors (e.g., OPC UA, Modbus, etc.) extract data from assets**, and gRPC\_kafka **loads this raw data securely into Nexalis Cloud**. This is what we describe as mirroring data.
* We define **raw data** as:
  * the actual values of data points as read from the source. No value transformations are applied (for example, no multipliers or adders), ensuring the collected data remains exactly as generated by the source.
  * the original naming conventions and tag names from the source system (no need to configure new industrial tags in the Nexalis Agent).
  * the communication parameters required to access those data points.
  * the vendor-provided context information (when available).
* In addition to forwarding raw data streams, gRPC\_kafka **computes averaged data** (e.g., 5-minute averages) before loading.
* The Agent also provides **local buffering**: if the connection to the cloud is interrupted, data is stored on disk. Once connectivity is restored, the Agent **automatically sends buffered data, ensuring no information is lost**.

***

## Example of a Nexalis Agent setup

1 DNP3 connector and 2 Modbus connectors (TCP and RTU) and a cloud data source.

<img src="https://mintcdn.com/nexalis/Pae1uOGkQkOds-1g/images/nexalis-agent.png?fit=max&auto=format&n=Pae1uOGkQkOds-1g&q=85&s=a09c5c124b0414ba8c578b2405acdc47" alt="Nexalis Platform Overview" style={{ maxWidth: "100%" }} width="4209" height="2480" data-path="images/nexalis-agent.png" />

***

## Connection status messages - Heartbeat

The Nexalis Agent industrial connectors publish **connection status messages** every 10 seconds; gRPC\_kafka forwards it to the cloud. Interpretation:

| Local (to data source) | Link with Nexalis Cloud | Result in Nexalis Cloud                                                              |
| ---------------------- | ----------------------- | ------------------------------------------------------------------------------------ |
| TRUE                   | TRUE                    | Status messages received; **value = 1** (healthy).                                   |
| TRUE                   | FALSE                   | No status messages received; **value = 1**; data is buffered by Agent.               |
| FALSE                  | TRUE                    | Status messages received; **value = 0**; data needs to be backfilled if possible.    |
| FALSE                  | FALSE                   | No status messages received; **value = 0**; data needs to be backfilled if possible. |

Example of an OPC UA connection status message:

```json theme={null}
[
    {
        "dataPoint": "nexalisConnectionStatus",
        "deviceID": "test device",
        "deviceModel": "test-opcua-connector",
        "metaData": {
            "nx-agent-id": "fb9cf8e6-xxxx-xxxx-xxxx-be2aea9631d8"
        },
        "protocol": "OPC UA",
        "siteName": "test site",
        "triggerType": "cyclic-10",
        "tsConnector": 1754003171922,
        "value": true # true if the connector is connected to the source, false otherwise.
    }
]
```

***

## Triggers

The Nexalis Agent connectors are configured to decide when to send data to Nexalis Cloud using **triggers**.\
Each data point can be configured with a trigger type.

### Trigger Types

* **cyclic-X**\
  Sends data at fixed intervals.\
  Example: `"triggerType": "cyclic-1"` → every 1 second.

* **changed**\
  Sends data whenever a value changes (regardless of amount or time).\
  Example: `"triggerType": "changed"`

### Notes

* First value is always sent (even if no change).
* Prevents sending duplicate/unnecessary data.
* Triggers can be set per data point.

***

## Changelog

* **September 15, 2025** – First publication of the online documentation.\
  Compatible with **Nexalis Agent v1.1.5**.
