Guide · Licensing platforms
Best licensing platforms for Tauri apps
Tauri puts a Rust core under a web UI, which means licensing can live in the Rust side where the user cannot reach it. Not every platform ships a Rust SDK to put there.
Start FreeUpdated July 2026
Tauri’s whole pitch is a Rust core under a web frontend: you write the UI in whatever web stack you already know, and you ship a small native binary to macOS, Windows, and Linux from one codebase. That architecture happens to be a gift for licensing. The Rust core is a privileged process a user cannot open in DevTools — put signature verification and lease storage there, and the check is out of reach of the webview the same way a Node main process is out of reach of an Electron renderer.
The catch is that putting a licensing check in the Rust core requires the licensing platform to actually meet you there. A JavaScript SDK that only runs in the webview gives up that advantage — you’re back to verifying where a user can read your tenant config and step through your code with the browser inspector. A genuine Rust crate you can cargo add into src-tauri is a different thing entirely, and only some of the platforms below ship one.
This list ranks the licensing platforms worth considering for a Tauri app in 2026, and is explicit about which offer a real Rust SDK — ideally with a first-party Tauri plugin wrapping it — and which hand you a REST endpoint and leave the Rust integration to you.
The best licensing platforms for Tauri apps
1. Keylight — best purpose-built Rust SDK and Tauri plugin
Keylight ships tauri-plugin-keylight, a real Tauri v2 plugin (published on crates.io, currently at 0.3.4) built on top of the native keylight Rust crate, with a matching JavaScript bindings package, tauri-plugin-keylight-api, on npm at the same version. Register it in your Rust entry point with a KeylightConfig, grant its keylight:default capability, and your frontend gets six typed commands — activate, validate, hasEntitlement, checkOnLaunch, refreshIfNeeded, and reportKeylessState — while activation, offline Ed25519 lease verification, and license state resolution all happen in the Rust core, invisible to the webview. A Stripe payment mints the license with no webhook code, and six other processors — Paddle, Gumroad, Lemon Squeezy, Polar, Creem, and Shopify — connect the same way. See the vs Keygen and vs Keymint breakdowns.
2. LicenseSeat — best alternative Rust SDK and Tauri plugin
The other platform on this list with a genuine, first-party answer to “where does this run in a Tauri app.” LicenseSeat publishes an official licenseseat Rust crate and a companion tauri-plugin-licenseseat Tauri plugin, both open source, with Ed25519 + AES-256-GCM offline verification, background revalidation, heartbeat-based seat tracking, and entitlement checks exposed as activate, deactivate, getState, and subscribeState commands. It takes no cut and is processor-agnostic — bring your own Stripe, Paddle, or Gumroad. Best when you want a real Rust SDK in the core but need it to also cover a game engine or plugin format elsewhere in your stack. Full comparison.
3. Cryptlex — best for floating or hardware-bound licensing with a Rust binding
Cryptlex publishes lexactivator on crates.io, an official Rust binding over its native LexActivator library rather than a pure-Rust crate — you’re linking a precompiled library per target platform, which is more packaging work than a plugin built for Tauri specifically, and there’s no dedicated Tauri plugin wrapping it. What you get in exchange is licensing depth few others match: floating and concurrent seats, hardware-locked licenses, and on-prem deployment. Best when floating or hardware-bound licensing is a hard requirement and you’re willing to do the native-binary packaging. Full comparison.
4. Keygen — best flexible API if you’re willing to wire Rust yourself
Keygen’s officially maintained SDK is Go; Rust isn’t on that list. What exists for Rust is a community-maintained crate, keygen-rs, not published or supported by Keygen itself, plus a set of official example repos showing how to verify Ed25519-signed license and machine files by hand in Rust against their REST API. Keygen also runs a dedicated Tauri landing page, but the integration shown there is REST calls plus Tauri’s native updater, not a Rust SDK. It’s a deep, mature, self-hostable API — you’re just doing the Rust integration work yourself instead of installing a crate that does it. Full comparison.
5. Keymint — best non-Apple desktop backend, REST-only for Rust and Tauri
Keymint’s four official SDKs are Node.js/TypeScript, Python, Go, and C#/.NET — no Rust SDK. It does publish a “Tauri Licensing” integration guide and a Tauri starter template, but those lean on the REST API (or the Node SDK, callable from the frontend) rather than anything running in the Rust core. Node-locking and offline, air-gapped validation are solid and cover Tauri fine from the webview side. Best when Tauri is one of several targets — a Go service, a C# app — and you’re comfortable verifying in JavaScript rather than Rust. Full comparison.
6. Keyforge — best simple REST option for indie Tauri apps
Keyforge publishes a guide specifically for licensing a Tauri app, and it’s explicit about the shape: a public REST API you call with reqwest from the Rust core or with fetch from the frontend, plus a JS SDK for offline token verification in the webview. No Rust crate. Stripe, Polar, and Lemon Squeezy all map payments to keys. Best when you want the smallest possible surface and are fine writing the HTTP calls in Rust by hand. Full comparison.
A Rust SDK is not the same as a REST endpoint
Every platform above can license a Tauri app in the sense that you can eventually get a yes-or-no answer into your UI. What differs is how much of the trust-sensitive work you write yourself to get there.
A real Rust SDK — ideally a Tauri plugin built on top of it — gives you typed activation and validation calls, a lease format the crate parses and verifies for you, and a place to store that lease that the crate manages. Signature verification is a function call, not code you audit for timing bugs or malformed-input handling. When the SDK author ships a fix for an edge case in the offline path, you get it with a version bump.
Wiring a REST endpoint by hand in the Rust core means owning all of that yourself: an HTTP client (reqwest or similar) added as a dependency for something that could have been a licensing primitive, a hand-rolled Ed25519 verification step using a crypto crate you now have to keep current, your own serialization format for the cached lease, your own logic for when a cached lease is stale enough to require revalidation, and your own error handling for the network-down case. None of it is exotic — Keygen’s own example repos show it can be done correctly — but it’s licensing-specific plumbing you maintain in your app instead of infrastructure you depend on. And the fact that it’s hand-rolled is exactly why it’s easy to get subtly wrong once: a signature check with a bug you don’t clock until someone posts a bypass.
The gap narrows the smaller your integration is. A Tauri app that only checks license status once at launch and shows a paywall screen doesn’t lose much doing it over REST. It widens the more you lean on the Rust core for its actual advantage — entitlement checks scattered through the app, offline-first behavior on a laptop that hasn’t been online in days, feature flags that need to resolve instantly without a network round trip. That’s the case a Rust SDK is built for.
How to choose
- Want the Rust SDK, the Tauri plugin, and payments already wired for the core → Keylight.
- Need a real Rust SDK but also license a game engine or another format → LicenseSeat.
- Floating seats or hardware-locked licenses, and can handle native binaries → Cryptlex.
- Want a deep, self-hostable API and don’t mind wiring Rust by hand → Keygen.
- Tauri is one of several targets — Go, C#, Python too — and JS-side verification is fine → Keymint.
- Want the smallest possible integration surface, REST is fine → Keyforge.
Where Keylight fits
If verification in the Rust core is the point of choosing Tauri in the first place, Keylight is the one built for it: cargo add keylight tauri-plugin-keylight in src-tauri, npm install tauri-plugin-keylight-api in the frontend, register the plugin with your tenant config, and the commands your UI needs — activate, validate, hasEntitlement, checkOnLaunch, refreshIfNeeded, reportKeylessState — resolve from a lease that’s verified and stored in Rust, never in the webview. Seven payment processors connect without you writing webhook code, and Stripe mints the license with none at all.
The dashboard carries the cross-platform part further than most Tauri apps think to check for themselves: active devices as daily and monthly actives, activations and validations with 7-day counts, license check-ins, churned devices over 30 days, and — since one Tauri binary ships to macOS, Windows, and Linux from the same codebase — a breakdown by platform and by country, so you can see where the app is actually running instead of guessing from support tickets.
Plans start at $19/month, with a free tier. Connect your payment provider, drop the plugin into src-tauri, ship.
Start licensing your app today
Drop in the Swift SDK, point it at your dashboard, and sell paid apps in under a minute. Free forever tier included.
Start Free