Per workspace
A licence can cover every workspace, a named list, or give each client its own entitlement, which is how a consultancy licenses clients differently on one installation.
Installing Pro
Pro is a signed package you unpack beside the Conformiti you already run. It adds a Python package, the extra screens and a licence file. It forks nothing, replaces no core file and sends nothing anywhere.
At a glance
| Needs | Conformiti 0.9.5mg or later, below 0.11 |
|---|---|
| Installer | Python 3.11 or later, standard library only |
| Runs on | Docker (the usual case), or bare metal on Linux or Windows |
| Licence | One signed file, checked offline |
| Phones home | Never. No telemetry, no check-in, no callback |
| Air-gapped | Supported, with the images and the build prepared first |
Four steps
Take a backup first. The installer applies database migrations, and although nothing is lost if you change your mind, a backup takes minutes.
Every file is checked against a manifest, and the manifest against an Ed25519 signature made with the vendor key pinned inside the package. Compare the key id with the one on your invoice, once.
--checkIt prints the files it would copy, a diff of every core file it would edit, the migrations it would apply and the deployment mode it found, and writes nothing. Give it your licence file too: that is the one step that can refuse it.
It verifies the package again, checks your core is supported, copies the code in, builds and starts the stack, applies the migrations and seeds the packs your licence covers. A failure stops it with a message, and an install is safe to repeat.
pro_doctor runs at the end and the install fails on a problem. Then sign in: the menu names your edition, and the Licence screen names your organisation and plan.
$ python3 verify_package.py $ python install.py --check --target /srv/conformiti --docker --license acme.json $ python install.py --target /srv/conformiti --docker --license acme.json
The package, the installer and the full guide arrive together. The guide covers bare metal on Linux and Windows, air-gapped installs, backups and the restore drill.
What it touches
Pro adds files beside yours and edits three front-end files by adding a marked block to each. install.py verify checks all of it against what was recorded at install time, and the blocks come out cleanly if you disable or remove Pro.
pro/ folder: your licence, the environment helpers, the install record and the signed checksums of the package..env.The licence
The licence is one JSON file signed with an Ed25519 key. Your installation checks the signature against a public key compiled into the package, and that is the whole mechanism.
It is not DRM, and we do not pretend it is: you have the source of the overlay you paid for. The licence exists so that your installation, your auditor and we agree on what you bought, and so that it can be checked offline. There is no telemetry, no check-in and no usage report.
When it ends
A licence can cover every workspace, a named list, or give each client its own entitlement, which is how a consultancy licenses clients differently on one installation.
On request a licence can name your installation's own signing key and read as invalid anywhere else. An unbound licence, the default, is accepted anywhere.
The installer refuses a renewal that expires earlier than the licence it replaces, keeps the outgoing file, and prints what is going out and what is coming in.
After the install
Run the new package's installer. The last three versions are parked, each with its signed record, and install.py rollback puts one back.
upgrade-core --check fetches without merging, reads the incoming version, checks it against this release's supported range and dry-runs the three edits against the incoming files.
disable boots core-only and keeps everything. uninstall.py removes the code and keeps Pro's data, and --purge-data drops it after you type purge. Installed libraries stay either way: they are ordinary core rows.
Next
If your setup is unusual, a proxy in front, an older core, no outbound network, tell us and we will say what to expect.