Licenses tied to CPU + motherboard
SHA-256 fingerprint, not easily spoofed
AES-256-GCM local storage
No plaintext license files on disk
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"] }
License server
SQLite backend
PostgreSQL backend
JWT middleware
CRUD endpoints
Abuse prevention
Scheduled tasks
Swagger UI
green = default gray = opt-in
Documentation
Everything you need to get up and running.
Guides
- Getting Started — 5 minute quickstart
- Client Integration — Embedding the library
- Server Deployment — Production setup
- Admin API — License management
- Troubleshooting — Common issues
Examples
- Basic Client — Minimal integration
- Air-Gapped — Grace periods & LAN deployment
- Feature Gating — Tier-based access
Each example includes step-by-step instructions for Windows and Mac/Linux.
API Reference
- docs.rs — Rust API documentation
- REST API — Endpoint reference
- OpenAPI Spec — OpenAPI 3.1.0
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.
Built with Rust by NetViper