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