Subscriptions that stay in sync
Payments, failed renewals, cancellations, pauses and refunds from your provider’s webhooks map to clear license statuses, with a grace period you set.
Licensing for Tauri, Electron and Rust apps
Keyrail listens to your Paddle Billing or Lemon Squeezy webhooks, issues the license key, enforces machine limits, and hands your app an Ed25519-signed certificate it checks offline. You ship the feature. We keep the keys, renewals and refunds in sync.
pub fn run() {
let keyrail = tauri_plugin_keyrail::Config::new(
"prd_7k2m9q4x1c8d3f6h0j5n",
[("k1", "pZ3vC0x6hYjQ8m1K4tR9wN2bF7sL5dA0eUqTgHiOcVk")],
);
tauri::Builder::default()
.plugin(tauri_plugin_keyrail::init(keyrail))
.run(tauri::generate_context!())
.expect("error while running the app");
}import { activate, check, hasEntitlement } from '@keyrail/tauri-plugin';
// Offline: verifies the cached certificate, refreshed online once a day.
let state = await check();
if (!state.valid) {
// One online call. The app then runs offline, refreshing silently.
await activate(licenseKey); // "KR-7K2M9-Q4X1C-8D3F6-H0J5N"
state = await check();
}
if (hasEntitlement(state, 'export')) enableExport();How it works
Create a product, paste the webhook URL Keyrail gives you into your payment provider, and map each price or variant to a plan. A completed purchase creates the license and emails the key to your customer.
Add the Tauri plugin, the Rust crate or the Node client. Configure two values: your product ID and its public signing key. No secret ever ships inside your app.
Your customer pastes the key once. The machine gets a signed certificate and the app starts instantly from then on, online or not. Renewals, failed payments, cancellations and refunds update the license through webhooks.
Offline-first
Most license checks call home at every launch. Keyrail doesn’t need to. Your app receives a small certificate, signed with your product’s private key, which never leaves Keyrail. The SDK verifies it locally with the public key compiled into your app: product, machine fingerprint, status, expiry and version are all checked without a network call.
What you get
Payments, failed renewals, cancellations, pauses and refunds from your provider’s webhooks map to clear license statuses, with a grace period you set.
One key, a set number of machines per seat. Customers free a machine themselves from the portal, or your app calls deactivate.
Sell one-time licenses that cover a major version. Version 2 ships, version 1 buyers keep working and see an upgrade path.
Trial plans with a fixed length, and feature flags such as export or ocr carried inside the signed certificate.
A hosted page where your customers sign in by email link, find their keys and manage their machines. Fewer support emails for you.
Every license, activation and webhook is visible in the dashboard and through a REST API with secret keys. Signing keys can be rotated; older keys stay valid for verification.
Built for
Privacy and hosting
Keyrail stores what licensing needs and nothing else, in a database located in the European Union (Cloudflare D1, EU jurisdiction). Requests are handled at Cloudflare’s edge, close to your users. The SDKs do not collect usage data: they talk to Keyrail only to activate, refresh and deactivate.
Stored
Customer email and name, hashed machine fingerprints, machine names if your app sends them, salted IP hashes for rate limiting (30 days).
Never stored
Card data (your payment provider handles it), raw hardware IDs, usage analytics, crash reports, file names.
Encrypted at rest
Private signing keys and license keys, with AES-256-GCM. Secret API keys and session tokens are kept as hashes only.
GDPR
A data processing agreement and a public list of subprocessors, for your own privacy policy.
Pricing
Limits are soft: going over never blocks your customers’ apps. We email you and you upgrade from the dashboard when it suits you. Paddle, our merchant of record, handles payment, VAT and invoices.
$0
Free forever, no card
$29$24.17/ month
or $290 per year, 2 months freebilled $290 per year
$79$65.83/ month
or $790 per year, 2 months freebilled $790 per year
From$199$165.83/ month
or $1,990 per year, 2 months freebilled $1,990 per year
FAQ
Nothing visible. Apps verify their certificate locally, and a certificate stays valid offline for 30 days by default. The SDK retries the refresh later. Only a first activation needs the API.
Any check that runs on a customer’s machine can be patched by a determined person, and we won’t pretend otherwise. What Keyrail guarantees: nobody can forge a valid certificate without your private key, a shared key stops working beyond its activation limit, and refunded or charged-back licenses stop refreshing. That keeps honest customers honest without punishing them.
No. You can create licenses from the dashboard or the vendor API, for example for resellers, bundles or your own checkout. Paddle Billing and Lemon Squeezy are supported out of the box; Stripe is planned.
Paddle Billing has no built-in license keys or machine activations. Keyrail fills that gap from its webhooks, and does the same for Lemon Squeezy with offline certificates and an API that is identical for both.
No telemetry. The SDK sends a request only to activate, to refresh a certificate (at most about once a day when online) and to deactivate. Each request carries the license key, a hashed fingerprint and optionally the machine name, platform and app version.
A license your customers can use right now: paid, in its grace period or perpetual. Expired, refunded and revoked licenses don’t count. Machine activations are unlimited on every plan.
A new service run by a small team is a fair worry, so here is what does not depend on us: certificates already issued keep verifying offline until they expire; you can download every license key and the private signing keys of your products at any time, so you can sign certificates yourself and your apps, unchanged, accept them; the certificate format is documented with test vectors; the SDKs are MIT-licensed and take any API base URL. And we commit to at least 90 days’ notice before discontinuing the service. Details and limits on the security page.
Early access
We are onboarding a small group of desktop vendors first. Leave your email and we will write once, when your spot is ready.