Licensing
How Pro licenses work — activation, CI, offline validation.
Pro licenses are rlj_-prefixed keys tied to a plan and email. Activation exchanges the key for a signed JWT; ReleaseJet validates the JWT offline on every run so Pro features work even when the license server is unreachable.
Activating locally
releasejet auth activate <key>This calls the license server once to fetch a token, writes it to the local license store, and offers to:
- Configure
~/.npmrcsonpm install @releasejet/proresolves from the private registry. - Upgrade an existing CI workflow (GitHub Actions or GitLab CI) to install
@releasejet/proand passRELEASEJET_PRO_TOKEN.
Both prompts are optional — you can skip them and configure npm/CI manually later.
Checking status
releasejet auth statusPrints the current plan, email, active features, expiration, and whether ~/.npmrc is configured for the private registry.
Refreshing the token
Pro JWTs expire. Refresh at any time to get a new token:
releasejet auth refreshUseful after renewing a subscription or when releasejet auth status reports the license as expired.
Deactivating
releasejet auth deactivateRemoves the license store, removes the private-registry lines from ~/.npmrc, and offers to downgrade CI workflows back to the free template.
Using Pro in CI
Set RELEASEJET_PRO_TOKEN to your rlj_ license key as a repository secret:
- GitHub: Settings → Secrets and variables → Actions → New repository secret.
- GitLab: Settings → CI/CD → Variables.
When the env var is present and no local license file exists, ReleaseJet auto-activates at the start of the run — no extra command needed. Generate the Pro-aware CI template directly:
releasejet ci enable --proThis writes a workflow that also sets up the private @releasejet/pro registry from RELEASEJET_PRO_TOKEN.
Offline validation
Activation is the only step that requires the network. The returned JWT is signed with the license server's public key; every subsequent generate, validate, or Pro-feature call verifies the token locally against the bundled public key. Air-gapped builds work fine for the token's lifetime — only refreshes and the initial activation need an outbound connection.
Troubleshooting
- "Invalid key format" — license keys match
rlj_followed by 32 alphanumeric characters. Re-copy from your dashboard. - "Could not reach license server" — only matters during
activateorrefresh. Check connectivity; existing tokens keep working. - "License expired" — run
releasejet auth refresh. If the subscription itself is expired, renew at releasejet.dev first. - Pro features silently unavailable — run
releasejet auth status. If it reports "No Pro license found", the@releasejet/propackage may be installed without a license; activate or setRELEASEJET_PRO_TOKEN.