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.

Don't Want to Run a Server?

Hosted Talos is coming soon.

We'll run the infrastructure. You focus on your product.
Dashboard, API access, and support included.

Get Notified

Open Source. MIT Licensed.

Use it, fork it, contribute to it. No strings attached.

View on GitHub

Built with Rust by NetViper