KeyGrant is launching soon — join the waitlist for early access. Join the waitlist →

Documentation

KeyGrant adds license keys, device activation, offline validation, trials and payment sync to your desktop app. You can integrate over the plain REST API, or drop in a first-class SDK like @keygrant/electron for the convenient path.

The model

KeyGrant is organised around four nested resources:

  • Account — your developer tenant.
  • Product — each app you ship. A product owns its own signing keypair.
  • License — a key you sell: perpetual, subscription, or trial.
  • Activation — a license bound to a specific device, up to your device limit.

Signed leases

On activate and validate, KeyGrant returns a lease: a standard signed JWT (EdDSA / Ed25519) carrying the license key, product, activation, entitlements, device limit and an expiry. Your app verifies that JWT offline against the product's public key — no server round-trip until it's near expiry.

The lease TTL is your offline grace window. If KeyGrant is unreachable — an outage, a lost connection — a paid customer's app keeps working until the lease expires. Licensing fails in favor of the paying customer, by design.

Because the lease is a standard JWT, any language can verify it with an off-the-shelf JWT library and the public key. The SDK is optional sugar on top.

Next

Ready to integrate? Get started with @keygrant/electron — install, activate, and verify a license in about six lines.