Licensing for desktop apps that keeps working offline
LicenseKit issues signed license tokens your Electron app can verify without a network call, binds each one to a device, and lets customers move to a new machine on their own. It also turns Sentinel EMS orders into activated licenses in one step.
Try it in three steps
-
Download the demo app
Loading downloads…
The app is not code-signed yet. How to open it
macOS: open the .dmg and drag the app to Applications. The first time, right-click the app and choose Open, or allow it under System Settings → Privacy & Security.
Windows: if SmartScreen appears, choose More info, then Run anyway.
-
Get a trial key
Free for 7 days, works on 2 devices. No sign-up.
-
Activate, then pull the plug
Paste the key into the app. Then turn off Wi-Fi: the app keeps working from its signed token. Use Deactivate to free the seat, and watch the device appear and disappear in the console.
How it works
- Can't be forged
- Apps ship only the public key. They can check a token, never mint one.
- Bound to one device
- The token carries a hash of the OS machine id. A copied license file fails on another computer.
- Works offline, within limits
- The app checks in every few days. Without a connection it runs through a 7-day grace period, then stops.
- Customers move machines themselves
- Deactivate frees the seat. Reinstalling on the same machine never burns a second seat.
- Hardened Electron build
- Fuses turn off RunAsNode, NODE_OPTIONS and the inspector, and only a verified app.asar loads.
Sentinel EMS, from order to license in one call
The toolkit wraps the Sentinel EMS v5 REST calls for creating an entitlement and activating it, including Sentinel LDK C2V and key ID locking. Use it from the command line, from code, or from the console's Sentinel EMS screen.
The public demo talks to a bundled mock EMS that returns fake license strings.
$ ems provision --customer "Acme" \
--email [email protected] \
--product "Printer-Scanner" --version 1 --seats 10
POST /ems/api/v5/entitlements 201
POST /ems/api/v5/activations/bulkActivate 200