# Streaming Engine

## Workflows - the easy way

Helmut4 is driven by a specially crafted streaming engine, visualized in the [Stream Designer](https://docs.helmut.de/helmut4-releases/helmut4-components/streamdesigner) as a node-based workflow editor.

This "low-code" approach enables users to quickly dive into Helmut4 and create [their own workflows](https://docs.helmut.de/helmut4-releases/getting-started/overview/helmut4-modules).

With over 36 [conditions](https://docs.helmut.de/helmut4-releases/helmut4-components/streamdesigner/nodes/conditions), 259 [actions](https://docs.helmut.de/helmut4-releases/helmut4-components/streamdesigner/nodes/actions), and 7 [output](https://docs.helmut.de/helmut4-releases/helmut4-components/streamdesigner/nodes/outputs) nodes, users have the flexibility to construct any desired workflow.

Each node concludes with a true/success or false/fail path, enabling the adaptation of the workflow and the creation of fail-case conditions without requiring a master's degree in programming.

<figure><img src="https://content.gitbook.com/content/cJYkTyk9qgh7aCR6dHIm/blobs/1tYDJ87klXD2YhLF4a9p/image.png" alt=""><figcaption><p>Example stream in stream designer</p></figcaption></figure>

### Stream Execution and Timeouts

By default, every stream has a maximum runtime of **60 seconds**. This limit is intended to stop streams that may have entered a hanging state or are simply taking too long to complete.

This timeout can significantly affect **FX streams**, as it may cause stream and job information to be collected only partially. As a result, project datasets may be incomplete.

For **IO, CO, and HK streams**, the execution time can be extended beyond the default limit. For details, refer to the following node: [Split Stream Action](https://docs.helmut.de/helmut4-releases/helmut4-components/streamdesigner/nodes/actions/misc-21/split-stream-action) Node

***

### Stream Host Assignment

Streams can generally be assigned to either the **client** (the local machine, such as Windows or macOS) or the **server** (**Helmut4 Server**).

For **FX streams**, using the **server** as the primary host assignment is recommended. This is especially useful in environments where network permissions restrict normal users from accessing certain resources.

For **IO, CO, and HK streams**, the **client** should always be used. The client host can be defined either in the **profile** or through the [Job Create Job Action](https://docs.helmut.de/helmut4-releases/helmut4-components/streamdesigner/nodes/actions/job-action/job-create-job-action) node.
