Skip to content
Distr
Book DemoStart free trialLogin

Usage Limits, Seat Counts and Feature Gates for Self-Hosted Software

Louis Weston
Louis Weston• Co-Founder

SaaS licensing is a solved problem. Enforcing usage limits, seat counts, and feature flags for self-hosted customers is not. Here's how Distr handles it — including fully offline and air-gapped environments.

5 minute readCopy URL
Usage Limits, Seat Counts and Feature Gates for Self-Hosted Software

If your software runs in the cloud and you control the infrastructure, usage enforcement is a solved problem. Seat limit hit? Block the next login. Trial expired? Gate the UI. Feature not in the plan? Don’t render the button. You own the environment, so you own the controls.

Now try doing the same thing when your customer runs the software.

The self-hosted gap

Vendors shipping to on-prem, self-managed, or air-gapped customers run into a wall fast. Your customer controls the environment — and often the application itself. You can’t gate a UI you can’t reach. You can’t block a login against a server you’re not running. And “call home to validate the license” isn’t an option if the customer’s cluster has no outbound traffic.

So what actually happens? Most vendors either skip enforcement entirely in self-hosted environments, or ship something that relies on the customer playing by the rules. Neither is a real answer when seat-based pricing or feature tiers are a meaningful part of your business.

How Distr handles it

We built licensing into Distr with two tools that cover different parts of the problem.

Entitlements control access at the distribution layer — which application versions a customer can deploy, which container images they can pull from your registry. If a customer is on your base tier, they only see what you’ve granted them. No enforcement logic needed on their side.

License Keys handle runtime enforcement inside your application — even when nothing external is reachable.

You define a JSON payload with whatever your application needs to enforce:

{"seats": 25, "plan": "pro", "modules": ["analytics", "reporting"]}

Distr issues a signed JWT. Your customer injects it into their environment — an env var, a Kubernetes secret, a mounted config file. Your application verifies the signature at startup using your public key and reads the claims. No network call. No license server. No dependency on Distr being reachable at runtime.

It works fully offline. It works in air-gapped clusters. It is cryptographically secure.

Your application reads seats: 25 and enforces it. Contract expires? Issue a new token with a new expiry. Customer upgrades to a higher tier? New payload, new token. Rotation is on your side — the customer just injects the updated value.

Getting started

License management is available on Pro and Enterprise plans:


Questions or want to see it in action? Join the discussion or book a demo.

Turn self-hosted into a repeatable sales motion

From your first on-prem POC to dozens of enterprise customers, the Distr platform gives you the tooling to deploy, update and manage self-managed customers, backed by a team that supports you hands-on with the deployment knowledge and implementation help.

Proof from teams shipping self-hosted software

GovCloud deployments without extra overhead

"Distr gives us a clean way to deploy and update our software in GovCloud without breaking security or adding operational overhead."

Corbin Klett

Corbin Klett

Co-Founder, Artifact

Manual operations become one-click workflows

"Our main goal is to simplify the daily operations. No more manual installations, updates, or rollbacks — everything can now be handled with a single click with Distr."

Jefferson Rodrigues

Jefferson Rodrigues

Co-Founder & CTO, Lerian

Read case study

Updates that took days now take minutes

"Distr eliminated nearly all deployment headaches. Updates that used to take days now take minutes."

Ansh Gupta

Ansh Gupta

CTO, Sophris.ai

Read case study

One place for every self-hosted customer

"Having a dedicated space for all our self-hosted customers that can manage authenticated registry access is great."

Derek Reynolds

Derek Reynolds

Product Engineer, Basedash

Read case study

From guided setup to scalable delivery

"We went from hands-on Docker setup calls to an install flow that can be running in minutes."

Daniel Kasen

Daniel Kasen

Chief Engineer for Customer Success, Ozgar AI

Read case study

Self-hosted without the engineering tax

"Weave has a fully self-hosted offering. It's a huge unlock for us, but we almost didn't build it. Distr made such a huge difference in getting us there."

Andrew Churchill

Andrew Churchill

Co-Founder & CTO, Weave

Read case study