Core Concepts
SerialFlow uses a node-based pipeline architecture. Understanding these concepts will help you build powerful data processing workflows.
Nodes
Nodes are the building blocks of your pipeline. Each node performs a specific function:
| Node Type | Description |
|---|---|
| Serial Device | Connects to a serial device (read and write). Attach via WebSerial in the browser or remotely via the CLI bridge. |
| Lua Transform | Custom data processing with Lua scripts — parse protocols, filter lines, decode binary frames. |
| User Terminal | Interactive terminal — read output and type commands back to the device. |
| Log Terminal | Read-only terminal — displays streaming data without sending anything back. |
| Mock Source | Generates test data without hardware — useful for building and testing pipelines offline. |
In Studio, terminal nodes are shown as User Terminal or Log Terminal depending on how they are used in the graph.
Connections
Connections define how data flows between nodes. Drag from an output port (right side) to an input port (left side) to wire nodes together.
SerialFlow has two types of data flow:
Live Connections
Connect a Serial Device directly to a User Terminal for live, interactive access. This connection is always active once the device is attached — data from the device appears in the terminal immediately, and you can type commands back to the device in real time. No need to click Run Flow.
graph LR
A[Serial Device]:::source --> B[User Terminal]:::sink
classDef source fill:#1e293bf0,stroke:#107a47,stroke-width:3px,color:#f1f5f9
classDef sink fill:#1e293bf0,stroke:#a855f7,stroke-width:3px,color:#f1f5f9
linkStyle default stroke:#94a3b8,stroke-width:2px
Session Flows
Any pipeline that includes processing nodes (like Lua Transform) runs as a session. You build the pipeline, then click Run Flow to activate it. Data flows through the pipeline only while the session is running.
graph LR
A[Serial Device]:::source --> B[Lua Transform]:::processor
B --> C[Log Terminal]:::sink
classDef source fill:#1e293bf0,stroke:#107a47,stroke-width:3px,color:#f1f5f9
classDef processor fill:#1e293bf0,stroke:#3b82f6,stroke-width:3px,color:#f1f5f9
classDef sink fill:#1e293bf0,stroke:#a855f7,stroke-width:3px,color:#f1f5f9
linkStyle default stroke:#94a3b8,stroke-width:2px
You can combine both in a single pipeline — a live terminal for direct interaction plus a session flow for processing:
graph LR
A[Serial Device]:::source -. live .-> C[User Terminal]:::live
A --> B[Lua Transform]:::processor
B --> D[Log Terminal]:::sink
classDef source fill:#1e293bf0,stroke:#107a47,stroke-width:3px,color:#f1f5f9
classDef processor fill:#1e293bf0,stroke:#3b82f6,stroke-width:3px,color:#f1f5f9
classDef sink fill:#1e293bf0,stroke:#a855f7,stroke-width:3px,color:#f1f5f9
classDef live fill:#1e293bf0,stroke:#10b981,stroke-width:3px,color:#f1f5f9
The dashed line is the live connection — always active once the device is attached, with no Run Flow needed. The solid lines are the session flow — activated by clicking Run Flow.
Data Flow
Data in SerialFlow is processed as frames — discrete chunks of serial data. Each frame carries the raw data along with timing information, flowing through your pipeline node by node.
Each node can:
- Transform the data (modify, parse, or decode content)
- Route the data (send to different outputs)
- Observe the data (display without modifying)
Next Steps
- Lua Transforms — Write custom data transformations
- CLI Installation — Stream from remote devices