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. |
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 — data from the device appears in the terminal immediately, and you can type commands back to the device in real time. No need to press “Start”.
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 Start 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, no Start needed. The solid lines are the session flow — activated by clicking Start 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