KW Knowledge base

Licensing

Vistralio now includes two licensing surfaces:

Mitch Wigham
Updated 24 June 2026 · 6 views

Licensing

Vistralio now includes two licensing surfaces:

  • Runtime licensing inside the main product at Admin → Advanced → Licensing
  • A standalone license server at https://{host}/license-server

The main instance can license itself for testing, but the license server is designed to run independently so you can issue and inspect keys outside the operator UI.

Automatic 30-day trial on install

On a fresh installation, Vistralio now:

  1. Starts the main API and standalone license server
  2. Logs into the local API with the generated admin account
  3. Creates a trial customer and a 30 Day Trial license through the license server
  4. Applies that generated key back to the local Vistralio runtime automatically

That means a new instance comes up already licensed for the first 30 days. If the customer later pays for a full license, you can replace that trial key with a paid one from Admin → Advanced → Licensing or generate a new key for them from the license server.

What licensing controls

A license can enable or limit specific parts of the product, including:

  • Events
  • Object detection
  • Motion detection
  • Face recognition
  • Plate recognition
  • Scheduling
  • Branding
  • SMTP / notifications
  • Exports
  • User count
  • Tenant count

The exact feature list is exposed by the runtime status endpoint and by the license server's feature catalog.

For self-hosted multi-tenant instances, the Max Tenants entitlement controls how many tenant workspaces may be created on the installation.

Applying a license in Vistralio

Open Admin → Advanced → Licensing and:

  1. Enter the license key
  2. Choose the location for this instance
  3. Apply or refresh the license

Vistralio performs periodic license refresh checks and records the effective feature set locally.

Grace period and free tier behavior

If a license becomes invalid:

  • Vistralio shows a warning banner for the first 30 days
  • After the grace window, Vistralio drops to the free tier

The free tier is intentionally limited. It keeps the core camera and dashboard experience available, while premium areas such as branding controls, SMTP, exports, and other licensed features are disabled.

License server

Visit https://{host}/license-server while signed in.

The license server supports:

  • Creating and storing customers
  • Assigning customer contact and address information
  • Generating license keys
  • Setting maximum activations
  • Inspecting activation count and activation history
  • Assigning entitlements per license
  • Returning license details over authenticated API routes
  • Running as a primary licensing authority or as a downstream licensing server
  • Registering downstream licensing servers and assigning server entitlements
  • Receiving secure upstream usage reports from downstream licensing servers
  • Enforcing downstream resale caps such as maximum issued licenses, sold users, and sold cameras when configured

Primary vs downstream licensing servers

Vistralio licensing can now be federated:

  • Primary: the central authority you operate to manage reseller/downstream license servers
  • Downstream: a reseller or delegated licensing server that issues customer licenses and reports usage back upstream

Downstream sync uses a shared sync token over the licensing API. The local license server can also run a scheduled upstream sync via vistralio-ls-sync.timer.

Visibility rules

  • Admins can see all customers and licenses
  • Standard users only see customers and licenses associated with them

Main runtime API

  • GET /api/licensing/status — current runtime status, effective features, banner state
  • POST /api/licensing/apply — apply a license key and location
  • POST /api/licensing/refresh — force a fresh license check

License server API

  • GET /license-server/api/me
  • GET /license-server/api/catalog
  • GET /license-server/api/customers
  • POST /license-server/api/customers
  • GET /license-server/api/licenses
  • GET /license-server/api/licenses/{license_id}
  • POST /license-server/api/licenses

Permissions

Action Permission
View license status in Vistralio licensing.view
Apply or change a license licensing.edit
Full admin override settings.admin

Still need help?

Log a support ticket and the team will pick it up from this page.