More
Licensing
ReportForge validates your license key offline after an initial activation. Normal test runs do not phone home.
Offline-first model
After the reporter activates your key, it caches a signed license on disk at ~/.reportforge/license.json. Subsequent runs validate that cache entirely on-device; no network call required.
The cache refreshes automatically in the background before it expires. If the refresh call fails but the cache is still valid, the cache wins and the run proceeds normally. If the server explicitly denies the key, the cache is cleared and PDF generation is skipped on that run.
The reporter validates the cached license at every PDF generation run. A corrupted, tampered, or expired cache causes PDF generation to be skipped with a clear error rather than producing an artifact from an unverified license.
Key lifecycle
- You subscribe at reportforge.org/pricing. One key per supported test runner is emailed and stored in your dashboard.
- You set RF_LICENSE_KEY in your environment or config. The reporter validates the key format offline; no network needed for this step.
- On first run, the reporter activates with the licensing server using the key and a hashed machine fingerprint. The server checks your subscription status and that runner's 25-machine allowance, then issues your license.
- Each runner is licensed by its own key with its own allowance. A machine that runs two runners takes a slot in each, and allowances are not pooled between them.
- The license is cached. Future runs validate it offline.
- When your subscription renews, your key continues to work; no action needed.
- When your subscription ends or is cancelled, the next refresh is denied and PDF generation stops within 24 hours.
Offline behaviour
| Scenario | Outcome |
|---|---|
| No key set | One-line warning logged; tests run; PDF skipped. |
| Invalid key format | One-line warning; PDF skipped. Tests unaffected. |
| Network unreachable, cached license valid | PDF generated using the cached license. No warning. |
| Network unreachable, cached license expired | Warning logged; PDF skipped. Tests unaffected. |
| Cached license corrupted or tampered | Cache rejected at generation time; PDF skipped. Delete ~/.reportforge/license.json and re-run to trigger a fresh activation. |
| Server denies the key | Cache cleared; warning logged; PDF skipped. |
| Machine cap exceeded | Warning with cap details; PDF skipped. Oldest machine is auto-evicted after 30 days of inactivity. |
Rotating keys
If your key is exposed or you need to revoke CI access, rotate it from your dashboard under the License tab. The old key is invalidated immediately; all machines using it will fail to refresh and stop generating PDFs within 24 hours.
After rotating, update RF_LICENSE_KEY in all CI environments and on developer machines.