Most software today is SaaS or subscription-based, but desktop and offline applications still rely heavily on licensing systems more than I expected.
A year ago, I built Keymint because I needed a flexible software licensing system for a project I was working on.
At the time, I expected the space to be shrinking due to the shift toward SaaS. Once I started building and testing it in real scenarios, it became clear that desktop, CLI, and offline software still has a strong need for licensing and activation systems.
That led me to expand Keymint into a more general-purpose licensing system.
What it currently supports
REST API and SDKs for multiple languages
License key generation and validation
Online and offline activation flows
Audit logs for tracking usage and abuse patterns
Customer self-service portal
Key engineering challenges
Most of the complexity was not in generating license keys. It was in everything around trust, abuse prevention, and offline behavior.
Supporting offline activation without weakening security guarantees
Designing validation flows that prevent replay attacks
Handling hardware-bound licensing across different environments
Keeping SDKs lightweight while still enforcing secure verification
Design direction
I tried to keep the system practical and easy to integrate.
Minimal API surface
SDKs that do not require deep integration work
First-class support for offline activation
Avoiding unnecessary abstraction layers
A lot of existing licensing tools felt too enterprise-heavy for small and mid-sized projects, so that influenced many of the design decisions.
Closing thoughts
Software licensing has not disappeared. It is just less visible in a SaaS-dominated ecosystem.
Desktop apps, CLI tools, and hybrid software still depend on it in ways that are not obvious until you build one.
I would be curious how others here handle licensing for offline or desktop-first applications.
Top comments (0)