License
Print Daemon is licensed per installation with a license key: one line of text (PD2.<payload>.<signature>) that says who
it is licensed to, until when, and for how many installations. It is checked offline with a digital signature: nothing is
sent anywhere, so it works in networks without internet access.
The license covers printing: the queue consumers, test prints and dead-letter re-sends.
Licenses at a glance#
| Production license | Evaluation (trial) license | |
|---|---|---|
| Comes with | the key you receive when you buy | the download (bundled), or a trial key from us |
| Expiry | always has an expiry date | the bundled one expires; a trial key from us may have an end date |
| Printed output | unchanged | unchanged: printed output is never marked |
| Shown as | Licensed | TRIAL banner in the admin UI; Trial on the Status page and in print-daemon license |
| After expiry | printing is paused (no grace period) | the same |
Your key also states the number of installations it covers. Each daemon shows its installation id on the
Status page and in print-daemon license; keep the number of daemons you run within your license (it is part
of the license terms, not a technical limit). Set PRINT_DAEMON_INSTANCE_ID if you want a fixed id.
How to get a license#
Email support@insanelab.dev with:
- Company name: the licensee, exactly as it should appear in the license and on the Status page;
- Number of installations: how many print daemons you will run, including test sites;
- Term and start date: how long the license should run and from when.
We reply with your license key: one line of text that starts with PD2., valid through its expiry date. Install it as
described in Install your license.
Renewals#
Ask for a renewed key before your license expires; the Status page shows the expiry date and the days left. Install the new key the same way: nothing else changes. There is no grace period, so renew in time (see Without a valid license).
Changes#
More installations or a new company name need a new key. Email us with your license id (shown on the Status page) and the change, and install the new key.
Lost key#
Email us your company name and, if you have it, the license id from the Status page. We keep a record of every key we issue.
The evaluation license#
A release includes an evaluation (trial) license, so the daemon prints right away. The evaluation license expires. While a
trial license is in use, the admin UI shows a TRIAL banner, and the Status page and print-daemon license say Trial.
Labels and documents print exactly as they would with a production license.
Install your license#
Install the key in one of these ways. The daemon checks its license sources every minute, so a key installed in the home directory takes effect without a restart: printing resumes on its own within a minute.
Admin UI: the License tab.
CLI, with the service's home (Install › Home directory):
bashnode dist/cli.js license install license.txt # or "-" to read the key from stdin node dist/cli.js license # show the license in use (--json for the Status page fields)license installchecks the key first and saves it as<home>/license. A key that is not valid, has expired or doesn't include printing is refused (exit code 3) and nothing is written.Environment variables for the service, for example from a secret store:
LICENSE_KEY(the key itself) orLICENSE_FILE(the path of a file that holds it). These take effect when the service restarts.
The daemon uses the first one that is set, in this order:
LICENSE_KEYLICENSE_FILE<home>/license(written bylicense installand the License tab)- the release's bundled evaluation license
As soon as one of the first three is set, that license decides, and the evaluation license is no longer used, also when the
configured key is expired or not valid. If LICENSE_KEY or LICENSE_FILE is set, it takes precedence over a key installed
in the home directory (license install warns about this).
The Status page (and GET /v1/info) shows the license in use: where it comes from (bundled evaluation license
or configured license), whether it is a trial, the licensee, license id, expiry date and days left, the number of
installations, and this installation's id. The daemon also logs one line about the license when it starts, and one whenever
its status changes.
Without a valid license#
A license works through the end of its expiry date (UTC). There is no grace period: from the next day on, printing is
paused until you install a renewed key. The same happens at once when no key is installed or the configured key is not
valid (mistyped, truncated, or a LICENSE_FILE that cannot be read).
While printing is paused:
- The queue consumers don't run. Jobs wait in the cloud queue: none are lost or dead-lettered because of the license. They print once a valid license is installed, subject to your queue's own message retention.
- Test prints and dead-letter re-sends are refused. The admin API answers HTTP
402with a code and a message that says what to do; the CLI prints the message and exits with code3. - Everything else keeps working, so you can always see why and fix it: the admin UI (it shows that printing is paused),
status, the configuration of queues and printers, these pages, the Status page,
GET /v1/infoandGET /healthz.
code |
When |
|---|---|
license_required |
No license key is installed, or the configured key is not valid (the reason is in the daemon log) |
license_expired |
The license expired (after the end of its expiry day, UTC) |
product_not_licensed |
The license does not include print-daemon |
Example 402 body:
{"error":"The license of this print daemon expired on 2027-10-31, so printing (the print queues, test prints and dead-letter re-sends) is paused. Install a renewed license key with `print-daemon license install <file>` (or LICENSE_KEY / LICENSE_FILE and a restart); printing resumes on its own.","code":"license_expired"}When you install a valid key, printing resumes on its own within a minute (after a restart if you use LICENSE_KEY or
LICENSE_FILE).
Before the expiry date there are no warnings in the printed output: check the Status page or GET /v1/info
(license.daysLeft) in your monitoring, and renew in time.
Questions#
- Does the daemon contact you to check the license? No. The key is checked offline; nothing is sent anywhere.
- Are jobs lost when the license expires? No. The daemon stops taking jobs from the queue; they wait there until a valid license is installed (within the queue's message retention).
- Is a trial printout marked? No. Printed output is never marked; the admin UI, the Status page and
print-daemon licensesay Trial. - How do I know when to renew? The Status page and
GET /v1/infoshow the expiry date and the days left (license.daysLeft). Add it to your monitoring. - Can I move my license to another machine? Yes: install the same key there and stop the old daemon. The key is not tied to a machine.
- Can I edit the key, for example to extend the date? No. Any change breaks the signature and the key is rejected.