HALO/v0.1.0/SUBSYSTEMS

HALO Flows

HALO Flows is the event pipeline engine. It is a visual builder for automated responses to network and sensor events. A flow chains triggers, conditions, and actions; the gateway evaluates flows on a background scheduler and inline on incoming telemetry.

How flows run

The scheduler runs every 30 seconds. Heartbeat and telemetry triggers also evaluate inline as data arrives, so threshold breaches act without waiting for the next scheduler tick. Flows are authored graphically on the Flows page of HALO Portal and execute on the gateway.

Triggers

A trigger starts a flow.

TriggerFires on
sensor_valueA telemetry metric crossing a configured value
node_eventA node lifecycle or state event
scheduleA time schedule
manualAn operator action or POST /v1/flows/{id}/trigger

Conditions

A condition gates whether execution continues.

ConditionEffect
thresholdCompare a metric against a value with an operator
cooldownRate-limit a flow to suppress repeat firing
responseParse and test the result of a prior step

Actions

An action does the work.

ActionEffect
alertRaise a platform alert
webhook_outSend an outbound webhook (Teams, Slack)
commandRun a command over SSH on a node
for_each_nodeIterate an action across nodes

Context variables

Action templates interpolate context variables resolved at execution time.

text
{node_id}    {node_name}    {metric}    {value}
{threshold}  {operator}     {prev_result}

A webhook body or alert message can reference these directly, for example: Node {node_name} {metric} hit {value} (threshold {threshold}).

Data model

Flows persist across a set of SQLite tables on the gateway.

TableHolds
flowsFlow definitions
flow_stepsIndividual trigger/condition/action steps
flow_edgesConnections between steps
flow_executionsExecution history
flow_action_templatesReusable action templates
flow_alertsRaised alerts
flow_variablesFlow-scoped variables

API

Flows are fully manageable over the API. See the gateway API reference for the full list.

bash
GET    /v1/flows                 # list flows
POST   /v1/flows                 # create a flow
GET    /v1/flows/{id}            # get a flow
PUT    /v1/flows/{id}            # update a flow
DELETE /v1/flows/{id}            # delete a flow
POST   /v1/flows/{id}/trigger    # trigger manually
GET    /v1/flows/{id}/executions # execution history
GET    /v1/flows/metadata        # trigger/condition/action types
GET    /v1/flows/metric-preview  # preview metric values for conditions

Flow execution today follows linear step order. Graph execution with branching — topological edge traversal — is the next planned step for the engine.

Where to go next