Workflows
Workflows automatically run actions when device state, events, command responses, or validation errors arrive. They connect device reports to follow-up actions in one automatic path: when state or events change, the system can log, control, notify, or ask the Agent to judge context. You do not need to manually arrange nodes or steps; describe the trigger, handling goal, and whether Agent judgment is needed, and the Agent generates a workflow that can be viewed, enabled, disabled, and reviewed. Trigger data and operations come from the current IoT platform connection or direct devices. Configure each flow around the capabilities those devices support.
Choose an Automation Method
| Need | Approach |
|---|---|
| Run at a specified time or interval | Scheduled Tasks |
| Run after device reports | Workflow |
| The condition is explicit and the result must be stable, such as turning off heating or switching to safe mode when temperature exceeds a threshold | Fixed condition + fixed action |
| The decision depends on several state signals, such as an empty locked vehicle with the air conditioner still running | Let the Agent analyze the context, then run the handling action |
| Different paths for different conditions | Branch and merge nodes |
| A judgment with a few outcomes, such as whether an alert is urgent, needs maintenance, or is a false alarm | Decision node |
Create a Workflow
Use the built-in Vehicle / Smart Cockpit Range example; its DeviceSpec defines the event name and fields. After setup, when the browser-connected device reports a low-battery event, the workflow records the event data and asks the Agent to generate a short handling recommendation.
- Create a Device Agent from Examples > Vehicle > Smart Cockpit Range.
- Create or select a device record, click Connect simulator in its status panel, and wait until the device shows Online.
- In the conversation area, enter:
Create a workflow named battery-low-alert: when the current device reports a battery_low_warning event and payload.soc is below 20, log one device_event. Include soc and estimated_range_km in detail. Then ask the Agent to generate a short handling recommendation.- Open Workflows and confirm that
battery-low-alertis enabled.

- Return to the connected device's status panel, click Simulator report, choose
battery_low_warning, and use this payload:
{
"soc": 15,
"estimated_range_km": 42
}The payload is the event data. Its fields must match the event definition in the DeviceSpec.
- Click Emit event. After it succeeds, check Latest reported events, Logs, and the workflow notification.
To edit an existing workflow, mention its workflow ID and the change you want. Check that the saved steps and device scope match your request.
Use the visual editor
Select a workflow and choose Edit to modify the current graph:
- Use Add node to select or drag in actions, branches, decisions, merges, Agent, or end nodes.
- Connect ports to define execution paths.
- Double-click a node, or select it and press Enter, to open its properties.
- Select an edge and press Delete or Backspace to remove it. Dragging a node changes only its position.
- Check every path, save, and resolve any configuration errors shown on the page.
Set conditions in trigger and branch properties. A branch can take the first matching path or all matching paths. Configure a default path for unmatched conditions. Use a merge node when paths need to converge.
The workflow ID stays unchanged. Use full-screen view, zoom controls, and fit-to-view to navigate complex flows.
Decision Nodes
A decision node asks the Jev decision model one multiple-choice question about the triggering event, and the workflow continues only along the selected branch. Each choice has its own output, and execution records show the selected result. Before using it, follow Configure Jev to enable the decision model and configure the API key.
- On the Workflows page, click Edit and add a Decision node from Add node.
- Double-click the node to open the inspector, then enter the Question, for example:
payload.soc is the battery level and payload.estimated_range_km is the remaining range. How should this be handled?- Click Add choice and enter a Choice ID and When to choose this option for each choice:
| Choice ID | When to choose this option |
|---|---|
urgent | Battery is below 10% or range is under 30 km and needs an immediate alert |
maintain | Battery is low but still usable; schedule charging |
ignore | Battery is normal; this is a false alarm |
- Connect each choice output to its handling node. The node also has a fixed
insufficient_evidenceoutput, used when the event data cannot support a judgment. Connect it to a notification or manual handling. - Save and enable the workflow.

The question supports {{event.*}} templates. Each decision node needs 2 to 20 choices. Choice IDs start with a letter and cannot be insufficient_evidence.
When a decision fails (not configured, timed out, or request failed), the step is marked failed and none of this node's output branches runs. Expand the decision step in the run history to see the selected choice, confidence, and choice probabilities. Prefer a branch condition when the rule can be written explicitly.
Configure trigger conditions
Sources include device events, telemetry, status, command responses, and validation errors. Choose data supplied by the connection, then constrain devices, event names, and conditions.
Use trigger-data paths such as payload.soc. Platforms can have different fields and report formats. Inspect an actual report and the current model before setting the field path, comparison, and value.
Configure actions
Select an action type in the action node, then fill in its parameters. Device operations remain subject to the current model, device scope, and permissions.
| Outcome | Action type | Required configuration |
|---|---|---|
| Save an alert or business record | Record event, where the connection supports it | Event type and record content |
| Call a device command or service | Run command | Command ID from the current model, input, and optional timeout |
| Set a device's target state | Update device state | Desired state using writable model fields |
| Read device state or history | Inspect device | Optional query parameters supported by the connection |
| Create or update an IoT platform device job | Manage device job | Target Device Agent, job operation, and job input |
| Notify a business system | Send Webhook or Publish MQTT | Configured connection, or MQTT topic and message |
| Notify a team group or channel | Send IM message | Enabled channel, target, and message |
| Interpret data or make a decision | Agent node | Complete instruction and allowed capabilities |

Update state and inspect a device
Update device state sets writable properties such as temperature, mode, or power. Fill Desired state with field names from the current model, submitting only the properties to change. For devices controlled through commands, use Run command instead.
Inspect device reads state, events, or operation history supplied by the connection. Fill Query when a narrower query is needed. Inspection does not change the device. The triggering device is used by default, so verify the workflow's device scope before configuring the action.
A successful state update means the request was accepted. Check reported state or operation results to confirm that the device applied it.
Manage device jobs
Device jobs here are capabilities supplied by an IoT platform, such as bulk operations or device maintenance. They are separate from Device Agent scheduled tasks and are available only when the current connection supports them.
- Select Manage device job as the action type.
- Choose Target Device Agent, or inherit the Device Agent from the trigger.
- Select an available Job operation, such as creating or updating a job.
- Fill Job parameters using the required fields, optional fields, and parameter types shown. Start with the reference example when available, then replace its targets and business values.
- Save and validate with a matching report. Check the resulting job state in the IoT platform.
The job operation identifies the capability to call, rather than an existing job number. When updating a job, provide its number and other values as required by that operation. Supported input fields come from the current platform model.
Send notifications
Configure a connection first for Webhook. For IM, enable a channel and check the target format in IM Access, then select the channel and fill the target and message. The target is a conversation or channel, rather than the inbound user allow list.
Messages can reference trigger data such as {{deviceId}}, {{eventName}}, and {{payload.soc}}. For alerts, include the device, abnormal value, and recommended response.
Limit Agent capabilities
Give an Agent node a complete instruction and explicitly allow its actions. For external queries or business knowledge, search the current capability list and select tools and skills.
Unselected tools or skills do not automatically become available. Device control uses allowed actions and device scope. Enabling a tool does not grant permission to operate other devices. File writes, command execution, and creation of other automation are also restricted in workflows.

Verify execution
Report matching data from an existing test device or Browser Simulator. For the battery-low-alert example, use the event and Payload in Create a Workflow.
The Payload must match the event model. With the workflow enabled, inspect recent events and the trigger, status, and result summary in workflow run history. Confirm notifications in the target conversation and verify reported device state after control actions. Use Logs or the run-query API to locate a specific action error.

Enable, disable, or delete workflows from the page. Disabling prevents later triggers. Validate again after editing. Definition and run APIs are documented in the API Reference.
Troubleshooting
| Symptom | Check |
|---|---|
| Reports do not trigger a run | Enabled state, device scope, event name, paths, and values |
| Control fails | Online state, model parameters, supported operations, and platform permissions |
| No device job operation is available | The target Device Agent's platform supports jobs and its model has been synchronized |
| Agent lacks tools or skills | Node scope, enabled tools, and available capability list |
| Message is not delivered | Connection or channel settings, target, run error, and external result |