Skip to content

License

The license says what this installation is unlocked for: how many users, tags and tables it may hold, which plugins run, which AI level is open, and how long it is valid. It is a signed file, installed and displayed under Settings › License.

The instance never asks anywhere. The license file carries itself; there is no license server that has to be reachable, and no activation over the internet. That is true in the cloud exactly as it is on your own premises.

Three things, and only these three:

Counted What it includes
Users people with an account. A screen in the hall does not count - it has no user account.
Tags every tag in the tenant, including those a plugin or an import created
Tables the record types of your data model

The license page shows all three as usage, e.g. Users 2 of 3 · Tags 38 of 50 · Tables 2 of 3.

The limit is enforced when something is created

Section titled “The limit is enforced when something is created”

Once a limit is reached, the next creation is refused, with a message - never silently. That holds for every route: the surface, an import, a script and a plugin. The check sits in the database rather than in the user interface, so no path leads around it.

An import that does not fit entirely creates nothing at all. Loading twenty tags into a license with five places left is refused before the first one is written - you are not left looking at a half-loaded template.

Then the engine stops: everything that runs without a person. Cyclic reading, schedules, watchdogs, MQTT in and out, and plugin backends with a cycle of their own.

Everything you need in order to clean up keeps working: signing in, configuring, editing, deleting and exporting. That is precisely why it is not simply switched off.

A banner at the top says what is wrong and what to do about it - for example “51 of 50 tags in use - recording is paused. Remove a tag or extend your license.”

The engine starts again by itself as soon as the reason is gone. There is nothing to acknowledge and nothing to restart; the check runs at start, regularly afterwards, and after every license change.

Reason Effect
quota exceeded engine stops
validity expired engine stops
carrier missing or not matching engine stops
no license installed engine stops
plugin not licensed or expired only that plugin is off
AI level not licensed only the AI surface is off

The rule behind it: what concerns the data flow stops the engine; what concerns an add-on switches off only that add-on.

In the cloud the license arrives on its own

Section titled “In the cloud the license arrives on its own”

Where we run your instance, we install the license. It is written straight into your instance when it is issued and takes effect there within a minute - nothing to download, nothing to install. An extension reaches you the same way.

This is not an online check: your instance still asks nowhere. It is the same signed file in the same place - we simply carry it there instead of sending it to you.

You see when it arrives. As soon as the new license is in force, everyone who is signed in gets a short message at the bottom right - for instance New license in force: AI level 3 (was 1). The AI assistant, the license page and the banner switch over at the same moment; nobody has to reload the page or sign in again. Until then the old license applies unchanged.

On a plant in your own house the license is installed by hand, as described below.

  1. Open Settings › License.
  2. Under Install a license file, choose the file you were sent. It ends in .tkslicense.
  3. Press Install.

The file is checked before it is accepted. If it is refused, the message says why - for instance that it was issued for a different customer, or that it is older than the one already installed. A refused file changes nothing. Installing the same license again is not an error: the page says it is already installed.

An accepted file is in force immediately - the page says so, and everyone else who is signed in gets the same message as for a license we deliver.

In the cloud there is usually nothing to do. A license for a tenant TrakState runs itself is installed directly when it is issued and takes effect within a minute. You only need the file for your records.

The page is part of Settings, so only an administrator can open it and install a file. Whoever else is standing in front of a halted screen reads the reason in the banner at the top

  • the same figures, and what to do about them.

Validity governs operation. With no date the license is perpetual; with a date it is a test license. In the last seven days a band appears at the top of the screen - calmly coloured rather than red, because nothing has stopped yet. It never appears for an unlimited license. After expiry there is no grace period.

Maintenance until governs something else entirely, namely only the update entitlement: versions published after that date will not start. The version you have keeps running forever. So “maintenance expired” never means your plant stops.

A license can be bound to a carrier:

Carrier Meaning
None the license applies to the instance, with no hardware binding (the usual cloud case)
This computer bound to this server, by its fingerprint (see below)
USB stick bound to the serial number of one particular stick, which has to be in the server

If a bound carrier is missing, the engine stops and the banner says so. Plug it back in and the plant carries on by itself.

A USB stick stops the plant immediately, because putting it back takes half a minute and needs nobody’s help.

A changed computer does not. If the fingerprint no longer matches, you have fourteen days, with a warning band the whole time. That is deliberate: nobody on site can fix a dead mainboard by plugging something in - it needs a new license from us, against the new request ID, and the line should not stand still while that is arranged. When the fourteen days are up, the engine stops like any other unmet license.

The fortnight is counted from the first time the mismatch was seen, and restarting the server does not start it again. A new license issued against the new fingerprint ends it at once.

Only on a plant in your own house. In the cloud there is none, and none is needed: your instance is a container that gets moved and rebuilt, and a binding to the machine under it would break the first time it moved.

To bind a license to this computer, we need to know which computer that is. The license page therefore shows a request ID at the top: the customer number of this installation plus a short fingerprint of the machine, for example ...-0048 / a17f4c9e21b0d3f5.

Send us that line when you order or renew. It is what the license is then issued against.

The fingerprint is a hash over what the machine reports about itself - a board serial, a system UUID, a drive serial. No hardware serial number leaves your house; we only ever see the hash. It stays the same across restarts, reinstalls and updates.

It changes when the hardware changes - a new mainboard, a new system disk, a move to a different virtual machine. Then the request ID on the screen no longer matches the license, and you send us the new one. Some machines report nothing readable at all; the page then says so plainly, and such a machine cannot be bound to.

A license warning — no usable license, an expiry approaching, a machine that no longer matches — is written to the diagnostics panel as well as shown on the page. The panel is hidden until you switch it on with ?diagnostics=on after the address (see Operation, logs and diagnostics); then open it with Show diagnostics at the bottom left. The lines carry origin Frontend and source Shell.

That matters for a report from a plant: somebody describing “it says something about the license” can send the line rather than the impression. Until 07.09.2026 these lines were written and then refused by the log route, so they reached the panel never — if you are looking at an older installation, the panel will be empty of them however wrong the page is.

In the local-dev operating profile the license is not enforced. The license page still shows the real figures, so it stays visible where a limit would have been hit - nothing is halted.