Skip to Content

Licensing

Loopwave is licensed per tenant: one deployment = one business = one license. The license is verified offline using a built-in public key, so your deployment never has to phone home to keep working — but a customer can never forge a longer expiry, because only the vendor holds the signing key.

How a license key works

A license key is a signed token of the form LW1.<payload>.<signature>. The payload carries the tenant id, plan, add-ons, issue date, expiry, and an optional bound domain. Loopwave ships only the public key and verifies the signature with it — the private signing key stays with the vendor, off your server.

The state machine

A license moves through these states:

StateMeaning
activeValid and within its term.
graceExpired, but inside the grace window — still fully working.
expiredPast the grace window. Writes lock in enforce mode.
revokedCancelled by the vendor (sticky until a new key is activated).
invalidSignature or format failed verification.
unlicensedNo key activated.

Monitor vs. enforce

LICENSE_MODE decides what happens when a license is invalid:

monitor

Loopwave reports the license state but never blocks anything. Useful during development.

enforce

When the license is expired, revoked, or invalid, writes are blocked (a write returns HTTP 402) while reads always pass. Shipped tenant builds run in enforce mode.

Loopwave follows an “antivirus” model: deactivate, never destroy. Even when locked, your data is fully readable and is never hidden or deleted — only new writes are paused until the license is renewed.

Grace period

When a license expires, Loopwave enters a grace state for LICENSE_GRACE_DAYS (default 7). During grace the deployment keeps working normally, giving you time to renew before any lock takes effect.

Domain binding & machine fingerprint

  • A key may be domain-bound — valid only when served from a specific host. A mismatch marks the license invalid with a domain_mismatch reason.
  • Loopwave captures a machine fingerprint at activation and re-checks it on every state read, so a key issued for one machine isn’t silently reused on another.

Optional remote revocation

If LICENSE_SERVER_URL is set, Loopwave periodically checks it so the vendor can revoke a key remotely. A network failure to that server never locks a working tenant — the offline signature remains the source of truth.

Activating and refreshing

License management lives in Settings → Billing & License (admin-only), and a key can also be adopted automatically during the install wizard.

  1. Activate

    Paste your key to activate or replace the current license.

  2. Refresh

    Force an immediate re-check (and remote validation, if configured) to pull the latest state — for example, right after a renewal.

Any signed-in user can view the current license state (it powers the Settings panel); only admins can activate or refresh.

Configure license variables

Set mode, public key, and grace days.