Skip to main content
Version: 1.0.8

Node Reference

QUBIQ ships 26 node types across nine 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

Message Bus​

NodeWhat it doesReach for it when
Message In 1.0.8Starts the pipeline when a message arrives on a subjectRunning a pipeline from a screen — a Send message event action — without a REST route
Message Out 1.0.8Sends a message on a subject, or asks and waits for the replyTelling open screens that something happened — a batch finished, a limit was crossed
Message Reply 1.0.8Answers the request that started this runEnding a request/response 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)

A pipeline as a service other pipelines and screens can ask

Message In (recipe.lookup) → SQL (select recipe) → Message Reply (OK)
Catch → Message Reply (Error)

Next​

→ Execution & triggering