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

# Workflow Nodes

> Every node you can drop on the workflow canvas, grouped by palette category, with what it does and where it runs.

A workflow is a graph of **nodes** wired together. Every node has a job, a set of
**input ports** (data it needs), and **output ports** (data it produces). You draw a
connection from one node's output to the next node's input, and the workflow passes
data down the graph — starting from a single **trigger**.

<Note>
  The **Runs on** column below tells you where each node executes.
  **Edge** nodes are compiled into a worker that runs on your device; a few nodes
  (camera, audio, and recording) only run there. **Cloud** nodes run only in the
  hosted workflow runner. **Either** nodes can do both — they run in the cloud by
  default, and compile into the edge worker when the workflow is edge-targeted, so a
  single workflow can span both. See [Cloud, edge, or both](/overview/features/workflows#cloud-edge-or-both-in-one-graph).
</Note>

Nodes are organised into ten categories. The same categories appear in the editor
palette, so this page mirrors what you see when you build.

## Triggers

Start a workflow on an event, schedule, or incoming message. A workflow has exactly
one entry point.

| Node           | What it does                                                 | Runs on |
| -------------- | ------------------------------------------------------------ | ------- |
| `manual`       | Start the workflow by hand from the editor.                  | Cloud   |
| `mission`      | Start when a mission begins or completes.                    | Cloud   |
| `schedule`     | Start on a timer or cron schedule.                           | Cloud   |
| `webhook`      | Start when an HTTP request arrives at the workflow's URL.    | Cloud   |
| `mqtt`         | Start when an MQTT message lands on a twin topic.            | Cloud   |
| `zenoh`        | Start when a message arrives on a Zenoh channel.             | Edge    |
| `event`        | Start when a business/system event fires.                    | Cloud   |
| `alert`        | Start when a matching alert fires on a twin.                 | Edge    |
| `camera_frame` | Run once per camera frame from a twin.                       | Edge    |
| `audio_track`  | Run for every buffered audio chunk from a twin's microphone. | Edge    |

## Data sources

Pull a snapshot or reading on demand, part-way through a run.

| Node          | What it does                                                                                          | Runs on |
| ------------- | ----------------------------------------------------------------------------------------------------- | ------- |
| `data_source` | Grab one image, depth map, video, audio clip, or telemetry reading from a sensor, IP camera, or twin. | Either  |
| `twin`        | Load a twin's details and the control commands its assigned controller understands.                   | Either  |
| `get_pose`    | Read a scene object's or twin's live position and rotation.                                           | Cloud   |

## Perception

Turn raw signals into reliable observations.

| Node               | What it does                                                                    | Runs on |
| ------------------ | ------------------------------------------------------------------------------- | ------- |
| `audio_assistant`  | Detect speech (voice activity) or acoustic events and cut clean audio segments. | Edge    |
| `wake_word_engine` | Wait for a wake word, then stream the audio that follows.                       | Edge    |
| `barcode_reader`   | Decode QR, Data Matrix, EAN/UPC, Code 128, and other codes from a frame.        | Either  |
| `object_pose`      | Estimate a detected object's 3D position using camera depth.                    | Edge    |

## Transform & routing

Reshape, match, and render data as it moves through the graph.

| Node            | What it does                                                                          | Runs on |
| --------------- | ------------------------------------------------------------------------------------- | ------- |
| `json_parser`   | Parse a JSON string into structured data (with optional AI repair of malformed JSON). | Cloud   |
| `fuzzy_matcher` | Match noisy text (like a voice transcript) to a list of known commands.               | Either  |
| `annotate`      | Draw detection boxes, masks, and labels on an image.                                  | Either  |
| `anonymize`     | Blur, pixelate, or redact detected regions (e.g. faces) in a frame.                   | Either  |

## State & memory

Persist artifacts so they show up later in your workspace.

| Node                | What it does                                                                        | Runs on |
| ------------------- | ----------------------------------------------------------------------------------- | ------- |
| `create_asset`      | Build a catalog asset from an uploaded mesh or generated GLB.                       | Cloud   |
| `edit_asset`        | Add a point-of-interest marker to an existing asset.                                | Cloud   |
| `create_attachment` | Save a file capture (image, video, audio, data) onto a twin, asset, or environment. | Either  |
| `update_attachment` | Attach analysis results — text, detections, or an annotated image — to a capture.   | Either  |
| `video_tagger`      | Pull frames from a recording at a fixed rate or hand-picked.                        | Cloud   |

## Intelligence

Use models to interpret, reason, or predict. One unified node covers every model kind.

| Node         | What it does                                                                                                    | Runs on |
| ------------ | --------------------------------------------------------------------------------------------------------------- | ------- |
| `call_model` | Run a model — an LLM, a vision-language model, an object detector, speech-to-text, diffusion, or image-to-mesh. | Either  |

## Decision & control flow

Choose what happens next.

| Node                   | What it does                                                            | Runs on |
| ---------------------- | ----------------------------------------------------------------------- | ------- |
| `conditional`          | Branch on a comparison (equals, greater than, contains, regex, …).      | Either  |
| `detection_event_gate` | Let detections through by class, with modes and a cooldown.             | Either  |
| `timed_condition`      | Fire only when a signal holds for long enough, times out, or debounces. | Either  |
| `spatial_filter`       | Keep only detections that fall inside a drawn zone.                     | Either  |
| `loop`                 | Repeat the connected downstream nodes once for each item in a list.     | Cloud   |

## Actuation

Execute physical or twin-side actions.

| Node                          | What it does                                                                     | Runs on |
| ----------------------------- | -------------------------------------------------------------------------------- | ------- |
| `twin_control`                | Move a twin through one or more environment waypoints.                           | Either  |
| `virtual_controller`          | Send a controller command to a twin over MQTT.                                   | Either  |
| `send_controller_command`     | Issue a specific command through a controller policy (e.g. a timed drive burst). | Either  |
| `recorder`                    | Start or stop audio/video recording on a twin.                                   | Edge    |
| `online_controller_lifecycle` | Start or stop the twin's assigned controller.                                    | Cloud   |

## Integration

Talk to external systems and run your own logic.

| Node           | What it does                                | Runs on |
| -------------- | ------------------------------------------- | ------- |
| `http_request` | Call an external HTTP API.                  | Either  |
| `send_email`   | Send an email.                              | Cloud   |
| `send_mqtt`    | Publish JSON to a twin MQTT topic.          | Edge    |
| `send_ros2`    | Publish a typed message onto a ROS 2 topic. | Edge    |
| `code`         | Run your own Python on the edge worker.     | Edge    |

## Observability & safety

Guard, observe, and alert on what the workflow sees.

| Node         | What it does                                   | Runs on |
| ------------ | ---------------------------------------------- | ------- |
| `send_alert` | Raise a business or technical alert on a twin. | Either  |

## How nodes connect

Nodes are wired left to right. A trigger fires, each node fills its inputs from the
outputs wired into it, does its job, and passes its outputs onward. A voice-controlled
rover, for example, chains an audio trigger through speech-to-text, a planner model,
and an actuation node:

```
audio_track → call_model (speech-to-text) → call_model (plan) → send_controller_command
```

For the full detail on any node — every input and output port, parameters, and edge
vs. cloud behavior — see the [Workflows reference](/feature-reference/workflows).

<CardGroup cols={2}>
  <Card title="Workflows overview" icon="diagram-project" href="/overview/features/workflows">
    What workflows are, the three ways to build one, and running in sim or real.
  </Card>

  <Card title="Workflows reference" icon="book" href="/feature-reference/workflows">
    The full node reference, trigger types, and editor walkthrough.
  </Card>
</CardGroup>
