Licensing & billing

Temper is self-hosted in every tier. A license is a single signed file that unlocks Pro features in your dashboard — there is no SaaS control plane, no account system, and no phone-home. This page covers buying, installing, renewing, and cancelling.

Buying Pro self-serve

Go to temper.codes/buy, enter your organization name and the vCPU count under management, and pay by card through Stripe. The license is issued the moment payment completes and shown on the confirmation page. Bookmark the confirmation link — it doubles as your credential for re-downloading the current license and opening the billing portal at temper.codes/manage.

Prefer an invoice, purchase order, or bank transfer? Email [email protected].

What the license file is

A one-line file, conventionally named license.temper:

base64(payload-json).base64(ed25519-signature)

The payload records your organization, tier, licensed vCPU capacity, and expiry. The dashboard verifies the Ed25519 signature against public keys compiled into the release binary — verification is entirely offline. Licensed capacity is displayed against measured vCPUs under management; it is never enforced.

Installing the license

# 1. Create a Secret holding the file (key name must be license.temper)
kubectl -n temper create secret generic temper-license \
  --from-file=license.temper=./license.temper

# 2. Point the dashboard at the Secret
helm upgrade temper oci://ghcr.io/byte-lab/charts/temper \
  --reuse-values -n temper \
  --set dashboard.licenseSecret=temper-license

The dashboard pod restarts and mounts the file at /etc/temper/license/license.temper. Verify in the UI: your organization and tier appear in the dashboard, and Pro surfaces (multi-cluster hub, consolidation apply) unlock. To replace a license later, update the Secret and restart the dashboard pod:

kubectl -n temper create secret generic temper-license \
  --from-file=license.temper=./license.temper \
  --dry-run=client -o yaml | kubectl apply -f -
kubectl -n temper rollout restart deploy/temper-dashboard

Renewals, expiry, and grace

What is (and is not) license-gated

Only dashboard conveniences are gated: the multi-cluster hub proxy and consolidation apply. Enforcement is never license-gated. A lapsed, missing, or invalid license cannot change scheduling behavior on any node — the agent, QoS tiers, safe mode, and the eviction ladder are deliberately outside the licensing system. An invalid file is treated as absent (Community tier) with a warning, never an outage.

Managing and cancelling

temper.codes/manage opens your Stripe billing portal: invoices, payment method, vCPU quantity, and cancellation. Cancelling stops future charges; the last issued license simply ages out through the normal expiry-plus-grace clock. Nothing is revoked remotely, and your nodes never notice.

Enterprise and air-gapped licensing

Enterprise licenses are issued offline (including dark-site licenses with no renewal webhook expectations) and delivered with the air-gap install kit. Email [email protected].

FAQ