This document explains the prod-guard licensing model, how licenses work, how they are validated, and what happens when a license is missing or expired.
prod-guard uses a signed offline license model. No network calls, no SaaS dependency, and no runtime activation are required.
Licensing is designed to be:
prod-guard currently supports the following license types:
The license tier controls which checks are allowed to execute.
| Capability | FREE | PREMIUM |
|---|---|---|
| FREE checks (PG-0xx / PG-1xx) | ✔ | ✔ |
| PREMIUM checks (PG-2xx) | ✘ | ✔ |
| Offline usage | ✔ | ✔ |
| Startup validation | ✔ | ✔ |
A prod-guard license is distributed as a single file, typically named:
prodguard.lic
The license file contains:
The payload includes:
prod-guard uses Ed25519 for license signing and verification.
At runtime:
License validation happens once at application startup.
LicenseContextThe result is cached and reused during the entire application lifecycle.
If no license is present:
Example log:
[prod-guard] premium check PG-203 present but no valid license found
Expired licenses behave the same as missing licenses, with explicit logging.
Example log:
[prod-guard] license expired on 2026-01-23 (licensee: Vicente_lopez)
prod-guard emits proactive warnings before license expiration.
By default:
Example:
[prod-guard] License expires in 14 days (licensee: Vicente_lopez)
The license file location is configured via properties or YAML:
prodguard:
license:
path: ./prodguard.lic
If the property is not set, prod-guard runs in FREE mode.
Licensing never blocks application startup by itself.
This licensing approach was chosen to align with production constraints: