Online ·
Sales analysis
0 rows
Carcha Seal is a license server, an Electron SDK and an admin console. It issues Ed25519-signed leases that your app verifies without a network call. Each lease is bound to one device, seats are counted on the server, and customers can move to a new machine themselves.
No sign-up. The public console resets every hour, and trial keys last 7 days.
Carcha Seal was previously named LicenseKit. It is not related to licensekit.dev or to Kankoda's LicenseKit.
A running copy of the Carcha Seal Demo app, and you as its vendor. Every vendor button changes a real license on this server, and the app picks the change up at its next check-in.
Creates a sandbox license for 2 devices that lasts 2 days. No sign-up. How the demo handles your data
Free play: every button works in any order.
Activation, a downgrade, a failed payment, offline use, a copy, an edited lease and a refund, each on the real license server.
Your app can do the same with a few lines of the SDK. Create a vendor account, add your product and paste the snippets above.
14-day trial, no card needed.
Online ·
Sales analysis
0 rows
Sandbox key
Payment failed
Downgrade or upgrade
Subscription ended
Customer replaced the laptop
Refund. This cannot be undone
Wi-Fi
Try to cheat
Here the app checks in every 15 seconds so you can see changes land. In your product the policy decides: every few hours or days. Online apps pick up your change at their next check-in; offline apps keep working from their signed lease until its grace period ends.
Create a vendor account to wire this into your own app: 14-day trial, no card needed.
Three simulated devices on their own sandbox key: the seat limit, the signed claims, the signature check in this page and the device clock moved by hand.
How the sandbox handles your data
Sandbox key
| Device | Seat | Action |
|---|
The SDK in plain Node.js, on your own computer. The trial key works for 7 days on 2 devices. No sign-up. Needs Node.js 22.13 or later.
Get a trial key.
Activate this computer with it.
npx @carchalabs/seal-quickstart activate LK-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX
Turn off the network and check the license. It is verified from the signed lease on your computer.
npx @carchalabs/seal-quickstart status
Release the seat.
npx @carchalabs/seal-quickstart deactivate
clock_suspect and paid features stop until an online check.const { Seal } = require('@carchalabs/seal-electron');
const kit = new Seal({
serverUrl: 'https://licenses.example.com',
product: 'example-studio',
publicKey: [currentKeyPem, nextKeyPem],
storageDir: app.getPath('userData'),
secureStore: {
encrypt: (s) => safeStorage.encryptString(s),
decrypt: (b) => safeStorage.decryptString(b),
},
});
const state = await kit.check();
if (state.status === 'unlicensed') await kit.activate(userEnteredKey);
if (Seal.hasFeature(state, 'export-pdf')) exportPdf();
A revoked or suspended license keeps working on a computer that stays offline until its check-in deadline plus the offline grace period. With the default policy that is up to 72 hours plus 7 days after the last successful check-in.
Licensing code in JavaScript can be patched by someone who controls the computer. Carcha Seal raises the cost of misuse; it does not prevent it. Turn off Electron's RunAsNode, NODE_OPTIONS and inspector fuses, and load only an app.asar whose integrity Electron has verified.
On Linux without a system keyring, Electron stores encrypted data with a fixed password. The SDK reports this as storageProtected: false.
Each lease names its signing key. Apps ship with the current and the next public key, so the server can switch keys without an app update.