License management
you actually own.

Stop paying per-seat fees to manage your own software licenses. Keygate is an open-source license server you deploy on your infrastructure. Keys, activations, usage metering and payments, all in one place.

$docker compose up -d
app.keygate.app
Keygate admin dashboard showing license management, usage statistics and customer overview

Built for real licensing workflows

Not a toy project. Keygate handles the edge cases that break homegrown solutions: concurrent activations, atomic quota enforcement, webhook idempotency, payment lifecycle management.

Licensing

Every model, one API

Subscription, perpetual or trial, node locked or floating, pick what fits. Activation limits per device or user. Grace periods. Ed25519 signed tokens your app verifies offline with a public key, so a copy of your binary cannot mint its own. Full lifecycle: create, activate, verify, suspend, revoke.

  • 3 license types, plus floating
  • Device & user activation limits
  • Ed25519 tokens verified offline
POST /api/v1/license/verify
Content-Type: application/json

{
  "license_key": "KG-LE376JPT-MJHHUNGZ-UCZJFD47-6E8RA6AL",
  "identifier": "device-abc-123"
}

→ 200 OK
{
  "success": true,
  "data": {
    "status": "active",
    "plan_name": "Professional",
    "grace_days": 7,
    "token": "eyJsaWQiOiI1YTA4YjJiMC0x..."
  }
}
POST /api/v1/license/usage
{
  "license_key": "KG-LE376JPT-...",
  "feature": "api_calls",
  "quantity": 1
}

→ 200 OK
{
  "success": true,
  "data": {
    "accepted": true,
    "used": 9847,
    "limit": 10000,
    "remaining": 153,
    "period": "monthly",
    "period_key": "2026-09"
  }
}
Metering

Atomic usage tracking

Track API calls, storage, bandwidth, or define your own metrics. Quotas are enforced atomically at the database level with SELECT FOR UPDATE, so two concurrent requests never both pass a limit check.

  • Custom metrics
  • Race-condition-proof
  • Auto-reset periods
Payments

Stripe, end to end

Customer pays → license auto-provisions. Payment fails → dunning emails fire. Supports checkout, plan changes with proration, cancellations, refunds, and billing portal. You wire it once, it runs itself.

  • Auto-provisioning
  • Dunning & lifecycle
  • Upgrade / downgrade
1
checkout.session.completed

→ Create license + subscription

2
invoice.payment_failed

→ Start dunning sequence

3
customer.subscription.deleted

→ Mark license canceled

4
charge.refunded

→ Revoke license on a full refund

Admin

One dashboard for everything

Products, plans, customers, licenses, API keys, webhooks, analytics, audit logs, team management, email templates, all managed from a single admin panel with search, filters, and CSV/JSON export.

Running in three steps

One server and one database. No account, no API key, nothing to sign up for.

  1. 1

    Deploy

    Postgres and the server come up together, ready for the next step.

    curl -O https://raw.githubusercontent.com/tabloy/keygate/main/docker-compose.yml
    curl -o .env https://raw.githubusercontent.com/tabloy/keygate/main/.env.example
    # Set JWT_SECRET and LICENSE_SIGNING_KEY in .env, then:
    docker compose up -d
  2. 2

    Create a product

    The setup page creates your account, a product and a plan in a minute. Then issue your first license from the dashboard.

    # The setup page creates your account, a product
    # and its first plan. Then issue a license.
    open http://localhost:9000
  3. 3

    Activate a license

    The same call your app makes. It activates the device and answers with a signed token you can check offline.

    curl -X POST http://localhost:9000/api/v1/license/activate \
      -H 'Content-Type: application/json' \
      -d '{"license_key":"KG-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX","identifier":"device-1"}'

Read the full quick start →

How Keygate compares

Checked against each vendor's own documentation and pricing. The comparison pages explain each mark.

FeatureKeygateKeygenCryptlexLicenseSpring
Source code✓~✕✕
Self hosting✓✓✓✓
Free self hosted edition✓✓✕✕
Floating licenses✓✓✓✓
Offline verification✓✓✓✓
Usage metering✓✓✓✓
Built in payments✓✕~✓
Customer portal✓✕✓✓
Update distribution✓✓✓~
Official client SDKs✕~✓✓
Webhooks✓✓✓✓
Audit logs✓✓✓✓

Checked October 2026. Spot something out of date? Open an issue on GitHub.

See the full comparisons →

What it costs

Keygate is free to use, commercially included. License the software you sell, or run it for your own customers, and pay nothing. There is no paid tier of the software itself.

Self hosted

Free

The whole thing, under the AGPL v3. Keep the Powered by Keygate line in the interface, publish your changes if you modify it and let others use it, and give a fork its own name and logo.

  • ✓Commercial use included, no license or seat count
  • ✓Fork and modify, under your own name
  • ✓Every feature, nothing held back for a paid edition

Commercial license

By agreement

This lifts those two conditions. Everyday commercial use does not need it; white labelling or keeping your changes closed does.

  • ✓Take the Powered by Keygate line out
  • ✓Keep your changes private while serving others
  • ✓Resell Keygate under your own terms
Ask about a commercial license

Sponsors

Keygate is free and self hosted. These people help keep it that way.

Open source license management for any software business

Whether you sell desktop apps, SaaS subscriptions, API access or enterprise software, Keygate handles license keys, activations, usage limits, and recurring payments in one self-hosted platform.