Talos

Secure licensing for Rust applications.

Hardware-bound. Encrypted. Offline-capable. Self-host or let us handle it.

Hardware-Bound

Licenses tied to CPU + motherboard

SHA-256 fingerprint, not easily spoofed

Encrypted

AES-256-GCM local storage

No plaintext license files on disk

Air-Gapped

Configurable grace periods

Long intervals between check-ins, or self-host on LAN

What You Get

Client Library

Embed licensing in your application.

  • Bind licenses to hardware
  • Validate online or offline
  • Feature gating by tier
  • Heartbeat keep-alive
  • Encrypted local cache

License Server

Self-host your own license infrastructure.

  • Axum-based REST API
  • SQLite or PostgreSQL
  • Admin API for license management
  • JWT authentication
  • OpenAPI documentation

Clean API

Client Integration

use talos::client::License;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut license = License::new(
        "LIC-XXXX-XXXX-XXXX".to_string(),
        "https://license.yourapp.com".to_string(),
    );

    // Bind to this machine
    license.bind(Some("Workstation"), None).await?;

    // Validate with offline fallback
    let result = license.validate_with_fallback().await?;

    if result.has_feature("premium_export") {
        // Feature unlocked
    }

    Ok(())
}

Configurable Grace Periods

// Validates against server, caches result locally
// Grace period allows operation between check-ins
let result = license.validate_with_fallback().await?;

if let Some(warning) = &result.warning {
    // "License validated from cache. 3 days until re-validation required."
    log::warn!("{}", warning);
}

Take Only What You Need

Cargo feature flags keep your binary lean.

# Client only — no server code compiled in
netviper-talos = { version = "0.1", default-features = false }

# Server with PostgreSQL
netviper-talos = { version = "0.1", default-features = false, features = ["server", "postgres"] }

# Full-featured server
netviper-talos = { version = "0.1", features = ["admin-api", "jwt-auth", "rate-limiting"] }
server

License server

sqlite

SQLite backend

postgres

PostgreSQL backend

jwt-auth

JWT middleware

admin-api

CRUD endpoints

rate-limiting

Abuse prevention

background-jobs

Scheduled tasks

openapi

Swagger UI

green = default   gray = opt-in

Documentation

Everything you need to get up and running.

Guides

Examples

Each example includes step-by-step instructions for Windows and Mac/Linux.

API Reference

Enable the openapi feature for built-in Swagger UI.

Built For Industries That Can't Compromise

Air-gapped support isn't an afterthought — it's why we built Talos.

Film & Post-Production

Editorial suites handling pre-release content with minimal internet exposure. Configurable grace periods and self-hosted servers keep your tools running securely.

High-Security Enterprises

Secure environments with strict network isolation requirements. Hardware binding ensures licenses stay where they belong.

Media & Entertainment

Studios, broadcasters, and audio facilities where unreleased content demands air-gapped workflows.

Industrial & Manufacturing

Factory floor systems and OT environments where connectivity is limited, unreliable, or prohibited.

Security Software

On-premise security tools deployed in environments that can't phone home constantly.

Commercial Software

Desktop apps, CLIs, and services that need robust license protection without SaaS lock-in.

Open Source. MIT Licensed.

Use it, fork it, contribute. Interested in a managed option? Let us know — we'll handle the infrastructure so you can focus on your product.