License Setup

The open core needs no license key — every base feature is active out of the box. A key unlocks the Pro add-on for self-hosting (managed WAF, distributed Redis, team dashboard, OpenTelemetry), or carries Enterprise / OEM entitlements. If you have one, configure it as below.

Getting a key

Buy Pro from bext.dev/pricing; Enterprise and OEM keys are issued as part of your agreement (bext.dev/partners). You'll receive a key starting with BEXT-PRO-, BEXT-ENT-, or BEXT-OEM-.

Configuration

Option 1: Config file (recommended)

Add a [license] section to your bext.config.toml:

[license]
key = "BEXT-PRO-eyJ0aWVy..."

Option 2: Environment variable

export BEXT_LICENSE_KEY="BEXT-PRO-eyJ0aWVy..."
bext-server run .

If both are set, the environment variable takes precedence — useful for keeping keys out of config files in CI/CD.

Option 3: .env file

# .env
BEXT_LICENSE_KEY=BEXT-PRO-eyJ0aWVy...

bext automatically loads .env on startup.

Verifying a key

bext-server license

Output:

bext license

  Plan:       Pro
  Org:        Acme Corp
  Expires:    2027-04-03
  Remaining:  365 days
  Servers:    5
  Add-ons:    waf-managed, redis-cluster, dashboard-team, otel

Startup behavior

When the server starts, it validates any configured key and logs the result:

INFO License: Pro (Acme Corp)

The open core runs with or without a key. If a Pro add-on is configured but no key is present, the server logs an info message and keeps running:

INFO Managed WAF rules configured but require Pro — using the base WAF

It never refuses to start.

How keys work

License keys are Ed25519-signed JSON payloads encoded in Base64:

BEXT-PRO-{base64_payload}.{base64_signature}

The payload carries your plan, org, server limit, expiry, and add-ons. Verification uses a public key embedded in the binary — no network calls are ever made.

Expiry

  • Keys have an expiry date set at purchase
  • After expiry there is a 14-day grace period with a logged warning
  • After the grace period, the Pro add-ons turn off and the open core keeps running
  • Renewal generates a new key; just update your config

Related