Licensing & Modules New in 1.0.0
QUBIQ is licensed per module, per machine, and offline. There is no phone-home, no licence server to keep reachable, and no outbound connection at any point — activation is a file you send us and a file we send back.
The Modules page
Licensing (/licensing) is the source of truth for what this installation owns. Every View
modules link in the product lands there, and the licence status in the status bar is a shortcut to
it.
It opens with a summary — modules owned, licence type, version, expiry, customer reference — and then lists every module in three groups:
| Group | What it holds |
|---|---|
| Protocol drivers | The connections to plant equipment |
| Plant capabilities | Things a running plant depends on |
| Tools | Things an engineer uses, which a plant does not depend on to keep running |
A licensed module carries no badge — only the things you do not own are labelled, because badging everything makes the labels invisible.
Two different things share the word "licence". /licensing is your product licence — what this
installation is entitled to run. /notices lists the licences of the open-source libraries inside
QUBIQ and their required notices. The pages link to each other.
The module catalogue
Protocol drivers
| Module | Covers |
|---|---|
| OPC-UA Driver | OPC-UA connections, browsing, subscriptions |
| MQTT Driver | MQTT and Sparkplug B connections — inbound, and publishing out to a broker |
| Modbus Driver | Modbus TCP/RTU connections |
| SNMP Driver | SNMP v1/v2c/v3 connections, walks, MIBs and traps |
| TCP/UDP Driver | Raw socket connections |
Plant capabilities
| Module | Covers |
|---|---|
| Database Bridge | SQL, MongoDB and QuestDB connections, and the pipeline nodes that use them |
| Historian | Tag history — storage, rollups and historical queries |
| Alarming | The alarm engine, the lifecycle, shelving and the journal |
| Expression Tags | Tags whose value is calculated rather than read |
| Scripting | Gateway scripts, client scripts, Python execution |
| REST API | Inbound and outbound REST endpoints |
| Audit Journal | The tamper-evident audit journal |
| Notification | Email, Telegram and WhatsApp delivery, wherever it is triggered from |
| Media Server | Camera and video-stream connections |
It is called Database Bridge, not SQL Bridge, because it covers MongoDB and QuestDB too — a customer who only uses MongoDB should not have to buy something called SQL.
Tools
| Module | Covers |
|---|---|
| AI Assistant | The assistant, its specialists and playbooks |
| Knowledge Base | The document store and vector search behind the assistant |
| Bulk Import | Bulk tag and namespace import |
A module is a capability, not a menu entry
Nothing is hidden. A module you have not bought stays visible, labelled, and one click from a quote. Hiding it would buy no enforcement at all — the capability is already withheld — while costing you the ability to find out that it exists.
That has three consequences worth knowing:
- A sidebar entry never moves. The navigation is the same shape on every installation, which is what makes this manual and its screenshots correct for all of them.
- A widget on a saved screen never disappears. A component placed while licensed and now locked renders a placeholder naming the module. It does not crash, it does not vanish, and saving the view does not drop it — a licence change must never damage an artifact you authored.
- A locked pipeline node is greyed in the palette, not removed.
The trial
A fresh installation runs a 21-day trial of everything. It starts by itself on first install — there is no button, and no per-module trial, because the trial is the whole product.
While it runs, every module reads Trial — n days remaining. When it ends, the installation behaves as an expired licence does, below.
One per machine. That the trial has been used is recorded in several places at once Changed in 1.0.4 — the data directory, the other data directory a different install mode would use, the installation folder, and on Windows a machine-wide registry key. Any surviving record refuses a second trial, so deleting the data folder and reinstalling does not buy another 21 days.
Every one of those reads fails open: a permissions problem on a marker is treated as "this record has nothing to say", never as a refusal. Licensing must never be the reason a plant does not boot.
Activating an installation
Two steps, with a human round trip in the middle. Nothing leaves the machine on its own.
1. Send us your licence request
Open Licensing → Install a licence. Step 1 shows this machine's code and a Download request file button.
The request file is what to send — email it with your order. The code beside it is the same machine, in a form a person can read down a phone: it is what a support call runs on, and it is the string that appears in logs and in a support bundle so two people can confirm they are talking about the same installation.
If the machine is virtualised or containerised, the step names the environment it detected. Mention it when you order.
2. Upload the licence file we send back
We send a .qlf file. Drop it on step 2, or click to browse. It is read and verified on this
machine — nothing is uploaded anywhere.
A licence takes effect immediately for anything that can pick it up without restarting. Modules whose service is not currently running start at the next restart.
What a licence is bound to
The licence is signed and bound to the hardware it was issued for. Copying the file to another machine does not activate that machine — request a new one instead.
A licence also names the versions it covers, shown on the summary as the 1.0 series, any version, and so on. Running a build newer than your licence covers is reported as its own state, not as an unlicensed installation, because the remedy is different and entirely yours: install the version you own, or extend the licence.
What the status means
| Status | Means |
|---|---|
| (no label) | Licensed, in date, and covering this build. |
| Trial — n days remaining | The automatic post-install trial is running. |
| Trial period has ended | The trial ran out and nothing has been installed. |
| Licence expired | A licence was installed and its term has ended. |
| Not licensed | This module was not purchased. |
| Licensed, but inactive — … | You own it, but something it depends on is missing. It names what. |
That last one is worth reading carefully: "you own this but part of it is off" and "you did not buy this" point in opposite directions, and they are deliberately worded differently. A module reported as inactive will not be fixed by buying it again.
If the licence file itself cannot be read — a disk fault, a truncated file — everything keeps running and the state is flagged rather than enforced. A licensing subsystem must never take a plant down over an I/O error.
When a licence lapses
The guiding rule: a lapsed licence never stops a running process. A plant that is running continues to run. What changes is what happens next.
- Configuration freezes. You can operate, but not change the shape of the installation.
- A watermark appears on every view, in LiveView, and on exports. It becomes non-dismissible as time passes.
- A system alarm is raised, so it is visible where operators already look.
- Tools stop; plant capabilities do not. Modules whose absence cannot affect a running plant stop at expiry. Anything on the control path keeps running — it is simply not restarted.
- Further out, new pipeline executions are refused. Running pipelines continue.
Every one of those escalations is decided on the server, on one clock, so the banner, the watermark and an exported document cannot disagree about what day it is.
The restart that does not come back
This is the trap the product goes out of its way to prevent. After expiry, an installation gets one free start — after that, a service belonging to a lapsed module does not start again.
So:
- The Licensing page shows a restart impact panel naming, by module, exactly what will not come back. "Your licence expired" is abstract; "Historian will not come back" is not.
- Restarting a service from Settings → System Services asks you to confirm when that service is one of them, naming it in the sentence. On a healthy installation the confirmation never appears, so it has not been trained away by the time it matters.
Take the warning literally. Restarting a gateway to clear an unrelated problem is how an expired licence turns into an outage.
Where licensing does not appear
Deliberately, so that a commercial state is never mistaken for a fault:
| Not here | Why |
|---|---|
| The services list | A module you do not own is absent, not stopped or failed. A withheld module is not a fault. |
| The logs | No periodic warnings. Silence in the logs, visibility in the interface. |
| Health and telemetry | Never counted as degraded. |
| Login and the setup wizard | Licensing is configured after you sign in. |
| A toast on every blocked action | The lock is already visible at the point you would click. |
| Operator screens | An operator cannot buy a licence and is often watching a wall-mounted screen mid-shift. Expiry still reaches them, through the watermark. |
The one exception is the startup report: when modules really were withheld at boot, that is said loudly, once, and the modules are named — otherwise it gets misread as a crash.
See also
- Services & system settings — where a restart is confirmed
- Backup & restore — a restored backup is still bound to the machine it runs on
- MQTT Publishing — one of the module-gated surfaces