Skip to main content
Pro

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 ~/.npmrc so npm install @releasejet/pro resolves from the private registry.
  • Upgrade an existing CI workflow (GitHub Actions or GitLab CI) to install @releasejet/pro and pass RELEASEJET_PRO_TOKEN.

Both prompts are optional — you can skip them and configure npm/CI manually later.

Checking status

releasejet auth status

Prints 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 refresh

Useful after renewing a subscription or when releasejet auth status reports the license as expired.

Deactivating

releasejet auth deactivate

Removes 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 --pro

This 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 activate or refresh. 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/pro package may be installed without a license; activate or set RELEASEJET_PRO_TOKEN.