Each client/stadium has its own license key generated with its own LICENSE_SECRET. Do not reuse the same key across different targets.
Procedure (1 min)
On your Mac (not on the server):
bash
cd zerolatency-live-player-keygen
# Choose a strong secret for the HMAC
export LICENSE_SECRET="olimpico-live-$(openssl rand -hex 16)"
# Generate the key
npx tsx src/generate-license.ts "Stadio Olimpico" 2027-12-31Expected output:
🔑 License Key generated:
OLIMP-U3RhZGlvIE9saW1waWNv-20271231-a1b2c3d4
Client: Stadio Olimpico
Expires: 2027-12-31
Issued: 2026-07-22Save LICENCE_SECRET and LICENSE_KEY — both are needed in the server configuration (
.env, see Deploy).
Key format
5-segment format: OLIMP-[client base64]-[issued]-[expiry]-[HMAC signature], with included issue date.
HMAC secret
- Default (development/test): hardcoded secret shared with the backend as a fallback
- Production (recommended): set
LICENSE_SECRETon both the keygen and the backend
⚠️ The secret MUST be identical between generator and backend, otherwise validation fails. Without a valid LICENSE_KEY the backend does not start in production.
Best practices
- Isolated machine: keep the keygen on an offline machine or with restricted access
- Unique secret: generate a strong HMAC secret and set it via
LICENSE_SECRET - Do not commit the secret: do not put
LICENSE_SECRETin committed files
→ Module details: License Keygen