Early beta (0.1.0), not yet for critical processes. See the roadmap
PNeX logo

Flows

Visual automation with a full-Rust Node-RED-style runtime

PNeX automates data pipelines and reactions with flows: visual graphs you edit by dragging nodes on a canvas and wiring them together — the Node-RED model, but the entire runtime is Rust and supervised by the platform server.

The editor

The flow editor is drawn with the web app itself — a pure WebAssembly canvas with drag-and-drop, pan/zoom, per-node inspector, local validation before save, and append-only versioning with one-click rollback. Every save uses optimistic concurrency: a conflicting edit returns 409 and offers reload-or-overwrite.

Flow canvas: inject, device read, function, device write, notification, debug and metric

Device read node inspector

Notification node inspector

The runtime

Deploying a flow compiles the typed graph to the runtime's format and hot-reloads a headless Rust binary (vendored EdgeLink) supervised by the server, with automatic restart and backoff. The deployed version is what runs; the editor state is not.

Live debug feed while the FLASH button is held

Node catalog

NodePurpose
injectInterval or cron trigger
pnex-control-sourceEmits when a switch, slider or button of a dashboard or annotation is operated — see Controls
pnex-weatherCurrent conditions and forecasts of a location (MET Norway or Open-Meteo) — see Home cards
pnex-memory-write / pnex-memory-readKeep and read live values (no history) shown by dashboard cards
debugCapture messages to the debug feed
pnex-sqlRead-only SQL query against PostgreSQL
pnex-device-readRead last pin values of a device (live cache first)
pnex-device-writeWrite digital or PWM output pins through the downlink
pnex-calcEvaluate expressions over payload keys
pnex-valueEmit a fixed or random payload
json-split / json-mergeStructural split and merge of JSON payloads with named ports
pnex-metricWrite the result as a telemetry metric
pnex-coolpropThermophysical properties of fluids and mixtures, in-process
pnex-notifySend a notification through a channel from a template
pnex-functionRun a versioned user function (JavaScript or Starlark)
pnex-http-fetchHTTP client node with auth and proxy options
pnex-displayPassthrough probe shown live in the editor
pnex-reg-*Regulation cards (on/off heating-cooling, PID with time-proportional relay), to be cast onto autonomous devices — see below
pnex-anomalyAnomaly detection per series (robust z-score, forecast band, regime change) — see Predictive maintenance
pnex-forecastForecast a series and predict when it crosses a threshold
camera-sourceEmit one message per camera frame (a reference, never the bytes)
video-recordRecord camera frames as MJPEG-AVI segments — see Cameras & Vision
vision-detectObject detection with a registered ONNX model, optional detection layer
event-logStore the payload as a searchable JSON event (Events page)

The red node kind is an escape hatch for raw Node-RED-compatible node types.

Three ways to drive devices

ModeHow it worksIf the server is downStatus
ConnectedA flow reads a device, decides on the server, writes a device (device → server → device)The logic stops; devices keep their last outputAvailable — for non-critical uses
AutonomousControl cards (pnex-reg-tt-heat, pnex-reg-tt-cool, pnex-reg-pid) are authored in a flow, then their configuration is cast onto the device, which regulates on its own from flashKeeps regulating and buffers its metrics until the server is backComing
Mesh (M2M)The topology is configured in PNeX; devices talk to each other directlyThe mesh keeps running between devicesLater, in design

See the roadmap for dates.

Deployment gates: a pin already assigned to another flow is refused (409), and the server never pushes pin writes on its own — only the flow or the operator writes.

On this page