Skip to main content
Version: Next

Node Reference

QUBIQ ships 23 node types across eight categories. Each has its own page with the settings that matter, a worked example showing the message going in and the message coming out, and the mistakes that cost people an afternoon.

A pipeline message is an envelope: payload is the data, and the envelope also carries metadata such as topic and the execution context. Nodes read and write payload unless stated otherwise.

When a node fails, the branch stops — unless you have said what should happen instead. Two features cover that, and they compose: the Catch node reports a failure out of band, and any node's error output carries its own failure down a branch of its own so the flow can carry on.

A machine-readable summary of every node and its exact default configuration is in the pipeline node reference.

Common

NodeWhat it doesReach for it when
InjectStarts a flow on a schedule, or once at startupAnything on a clock — hourly rollups, nightly exports, a poll every 30 seconds
LinkSends messages between pipelines without joining their graphsOne expensive read feeding several independent consumers
RBE (Filter)Passes a message only when the value actually changedImmediately after any subscribe, unless you genuinely want every sample
Switch 1.0.0Sends a message down a different branch depending on its valueSorting one feed into several treatments — critical alarms to a pager, the rest to a log
Timer 1.0.4Delays, debounces, or watches for silence — one timer per topicWatching a heartbeat, so silence raises an alarm instead of passing unnoticed

Realtime

NodeWhat it doesReach for it when
Industrial I/OReads, writes or subscribes to namespace tagsReading several tags at once on a schedule, behind an Inject
AlarmSubscribes to alarm lifecycle eventsNotifying someone when a critical alarm is raised

Datasource

NodeWhat it doesReach for it when
SQL QueryRuns SQL against a database connectionWriting production, downtime or quality records to a reporting database
MongoDBFind, insert, update or delete documentsStoring records whose fields differ from one to the next
QuestDBHigh-speed time-series ingestion, or a SQL queryStoring a calculated value you want to chart over time

Transform

NodeWhat it doesReach for it when
Python ScriptArbitrary Python, sandboxedComputing something from several inputs — a rate, an average, an OEE figure
Batch TransformTransforms every item of a collection, in parallelConverting units, renaming fields or enriching every row of a result set
Array IteratorSplits an array into one message per elementOne outbound API call, or one write, per row of a result set
JoinCollects items or messages back into a single arrayRecombining after an Array Iterator so a downstream step can act on the whole set

AI

NodeWhat it doesReach for it when
AIClassifies, extracts or summarises with AIClassifying free-text operator comments into a reportable column

Notification

NodeWhat it doesReach for it when
Send EmailSends an email through a saved SMTP connectionAlarm notification and escalation
TelegramSends messages, or receives commands, via a botNotifying a shift group where people actually look
WhatsAppSends WhatsApp messages, or receives them by webhookEscalation to people who will not read email out of hours
On-Call RosterResolves who is on shift into recipientsAny notification that should reach whoever is on duty rather than a fixed list

API

NodeWhat it doesReach for it when
REST APIPublishes an HTTP endpoint, or calls oneAccepting orders, recipes or schedules pushed by an ERP or MES
HTTP ResponseSends the reply for a REST ingress pipelineEvery path through an ingress pipeline — success and failure alike

Output

NodeWhat it doesReach for it when
DebugShows a node’s output in the Debug panelWhile building anything — it is the fastest way to see a real payload
Catch 1.0.4Reports failures from other nodes in the same pipelineTelling somebody a pipeline broke — a Telegram message, an email, a page

Patterns

Scheduled aggregation

Inject (cron 5 * * * *) → SQL (current work order) → Industrial I/O (read)
→ Python (compute OEE) → QuestDB (ingress)

Event-driven notification, to whoever is on shift

Alarm (raised, critical) → On-Call Roster → Send Email

Inbound integration

REST API (ingress POST /api/v1/orders) → Python (validate) → MongoDB (insert) → HTTP Response (201)

Noise-suppressed bridge

Industrial I/O (subscribe) → RBE (gap 0.5) → QuestDB (ingress)

Fan-out with recombination

SQL (select rows) → Array Iterator → Python (enrich) → Join → REST API (egress, one batch)

Free text into a reportable column

Inject (15m) → SQL (uncategorised comments) → Array Iterator
→ AI (classify) → SQL (update category)

Routing one feed into several treatments

┌─ 1 → Alarm (raise) → On-Call Roster → Send Email
Industrial I/O → Switch ┼─ 2 → QuestDB (ingress)
└─ 3 → Debug

Silence as an event

Industrial I/O (subscribe Pumps/*) → Timer (watch for silence, 30s) → Alarm (raise)

Recovering from a failure in-flow

┌─ out → compute → write-db
Inject → fetch ──┤
└─ error → Python (last known value) → compute → write-db

Reporting every failure in a pipeline

Catch (all nodes) → Python (shape a row) → SQL (dead-letter table)

Two-way chat

Telegram (receive /data) → Python (validate args) → SQL (query) → Telegram (send → chatId)

Next

Execution & triggering