EYMINT
DocumentationAPI Reference
BlogDashboard
EYMINT
SectionsDocumentationAPI Reference

Getting Started

  • Keymint Documentation
  • Introduction
  • Getting Started
  • License Keys
  • Changelog

SDK References

  • Software Development Kits (SDKs)
  • Node.js SDK
  • Go SDK
  • Python SDK
  • C# SDK

Integration Guides

  • Integration Guides
  • Customer Portal for Vendors
  • Roles & Permissions
  • Radar Alert Destinations
  • Payment Provider Integrations
  • Stripe Subscription Licensing
  • Email Delivery
  • API Key Management
  • Webhook Deliveries
  • Analytics and Retention
  • Dashboard Workflows
  • Electron Licensing
  • PyQt Licensing
  • Tauri Licensing
  • Next.js SaaS Licensing

Licensing Guides

  • Licensing Concepts
  • Node-Locking & Machine Identifiers
  • Floating Licenses
  • Offline Verification
  • License Radar
  • Public Key Management and Rotation
  • Feature Flags
  • Webhooks & Events

Templates

  • Starter Templates
  • Electron License Starter
  • PyQt License Starter
  • Tauri License Starter
  • Next.js SaaS License Starter

Security & Trust

  • Security & Trust

Support

  • Frequently Asked Questions
  • Customer Portal
  • Using the Customer Portal
  • Workspace Settings and Roles

Legal

  • Privacy Policy
  • Subprocessors
  • Data Processing Agreement
  • Security Overview
  • Terms of Service
  • Service Level Agreement (SLA)
  • GDPR Compliance
Go to Dashboard

Getting Started

  • Keymint Documentation
  • Introduction
  • Getting Started
  • License Keys
  • Changelog

SDK References

  • Software Development Kits (SDKs)
  • Node.js SDK
  • Go SDK
  • Python SDK
  • C# SDK

Integration Guides

  • Integration Guides
  • Customer Portal for Vendors
  • Roles & Permissions
  • Radar Alert Destinations
  • Payment Provider Integrations
  • Stripe Subscription Licensing
  • Email Delivery
  • API Key Management
  • Webhook Deliveries
  • Analytics and Retention
  • Dashboard Workflows
  • Electron Licensing
  • PyQt Licensing
  • Tauri Licensing
  • Next.js SaaS Licensing

Licensing Guides

  • Licensing Concepts
  • Node-Locking & Machine Identifiers
  • Floating Licenses
  • Offline Verification
  • License Radar
  • Public Key Management and Rotation
  • Feature Flags
  • Webhooks & Events

Templates

  • Starter Templates
  • Electron License Starter
  • PyQt License Starter
  • Tauri License Starter
  • Next.js SaaS License Starter

Security & Trust

  • Security & Trust

Support

  • Frequently Asked Questions
  • Customer Portal
  • Using the Customer Portal
  • Workspace Settings and Roles

Legal

  • Privacy Policy
  • Subprocessors
  • Data Processing Agreement
  • Security Overview
  • Terms of Service
  • Service Level Agreement (SLA)
  • GDPR Compliance

Tauri License Starter

Clone-and-run Tauri v2 app with Keymint license activation pre-configured in Rust. Machine binding, activation UI, and license state persistence included.

Quick Start

bash
git clone https://github.com/keymint-dev/keymint-tauri-starter.git
cd keymint-tauri-starter
npm install
# Edit src-tauri/.cargo/config.toml with your KEYMINT_CLIENT_API_KEY and KEYMINT_PRODUCT_ID
npm run tauri dev

Opens a Tauri window with an activation form. Enter a valid Keymint license key and the form shows the activation result. The starter has no main view behind the license; gate your own UI on the is_activated command.

What's Included

  • Rust license backend — reqwest HTTP calls to Keymint API from Tauri commands
  • Hardware fingerprint — machine-uid crate for stable host ID across platforms
  • Activation UI — a plain HTML page (src/index.html, no framework) with a key field that calls the Rust activate_license command through invoke()
  • Persistent state — License key and activation state stored in license.json under the OS local data directory
  • Deactivation — the deactivate_license command frees the activation seat. The starter's page has no button for it; call it from your own UI
  • Tauri commands — activate_license, deactivate_license, is_activated, get_license_status

Configuration

Set environment variables before building:

bash
export KEYMINT_CLIENT_API_KEY=km_live_your_client_key
export KEYMINT_PRODUCT_ID=YOUR_PRODUCT_ID

Or add to src-tauri/.cargo/config.toml:

toml
[env]
KEYMINT_CLIENT_API_KEY = "km_live_your_client_key"
KEYMINT_PRODUCT_ID = "YOUR_PRODUCT_ID"
VariableWhere to Find It
KEYMINT_CLIENT_API_KEYKeymint Dashboard → Developer → API Keys (client scope)
KEYMINT_PRODUCT_IDKeymint Dashboard → Products

Project Structure

text
src-tauri/
├── src/
│   ├── main.rs        # Tauri app setup, command registration
│   ├── lib.rs         # Library target (mobile builds and cargo test)
│   └── license.rs     # Keymint REST API calls (reqwest), state persistence
├── Cargo.toml         # Rust dependencies
├── tauri.conf.json    # Tauri config
└── .cargo/
    └── config.toml    # Build-time env vars (API key, product ID)

src/
└── index.html         # Webview frontend: activation form (plain HTML/JS)

API Endpoints Called from Rust

EndpointMethodPurpose
POST /key/activatereqwest::Client::post()Validate license and bind to machine
POST /key/deactivatereqwest::Client::post()Free activation seat

Tauri Commands

CommandReturnsPurpose
activate_license(key)Result<String, String>Activate with key, returns message
deactivate_license()Result<String, String>Deactivate, free seat
is_activated()boolCheck current activation state
get_license_status()JSONReturn masked key + status for UI

Security

  • KEYMINT_CLIENT_API_KEY is compiled into the Rust binary via option_env!() — not exposed to the webview, but extractable from the binary, so use a client key only
  • The client scope only allows activation, deactivation, and floating session management
  • License state is stored as plain JSON in the OS local data directory (dirs::data_local_dir()/tauri-license-starter/license.json)

Build & Package

bash
npm run tauri build

Produces platform-specific installers in src-tauri/target/release/bundle/.

Next Steps

  • Add floating license support for concurrent seat licensing
  • Add periodic license health checks to detect revocations
  • Wire up Stripe subscription licensing for paid plans

On this page

  • Quick Start
  • What's Included
  • Configuration
  • Project Structure
  • API Endpoints Called from Rust
  • Tauri Commands
  • Security
  • Build & Package
  • Next Steps