Overview

Licensing

hev layer is licensed per environment. Design-partner and trial installs use the same license path as production: sign up, receive a key by email, install the key with Helm, and monitor the gateway’s local license state.

Start a Trial

Use the trial signup on the hev layer site. Submit the email address you want associated with the install; hev layer emails back a signed trial key and the current install instructions.

The key is the only license material you need for a standard self-hosted install. Treat it like a deployment secret: store it in your secret manager, do not commit it to source control, and avoid pasting it into support tickets or docs.

Self-hosted customer installs pull the Layer-owned pro images from Docker Hub: hevlayer/layer-gateway-pro:<version>, hevlayer/layer-operator:<version>, and hevlayer/layer-dashboard:<version>. These images are only useful with a valid license key; without one, licensed gateway routes, operator actions, and dashboard write surfaces project to the license floor.

Install the Key

For Helm installs, pass the emailed key as license.token:

helm upgrade --install layer ./infra/helm/layer \
  --namespace layer --create-namespace \
  --set license.token="$HEVLAYER_LICENSE" \
  -f values.customer.yaml

If your cluster policy requires pre-created Kubernetes Secrets, create the Secret through your normal secret workflow and point Helm at it with license.existingSecret and license.secretKey.

See the install guide for the full values table.

License Claims

The license key is a signed PASETO v4.public value issued by hev layer and verified locally by the gateway, operator, and dashboard. Verification is offline: the cluster does not call a license server to answer license health.

The license answers what the deployment is entitled to: sub, tier, features, limits, iat, and exp. API keys still answer who the caller is and what that caller may do. A request must pass both checks.

The initial feature strings are:

FeatureGates
transform-runtimePipeline, Function, UDF, worker dispatch, and scaling surfaces.
agentsAgent management and invocation surfaces.
rbacScoped key mint/manage routes and multi-tenant enforcement.
warehousesWarehouse APIs and data-supply verification.
doc-cacheManaged document cache, blob, and cache-backed warm paths.
historySearch history, clickstream, checkpoints, restore, and activity.
costCost and fin-ops APIs and dashboard panels.

Core gateway routes are not represented as license features. Queries, point reads, writes, scans, namespace metadata, snapshots, and backend routing remain available in every license state.

License States

The gateway evaluates license state locally from its configured key. It does not require a network callback to answer license health.

StateMeaning
licensedThe key is valid and the current time is before its expiration. Licensed Layer surfaces are available.
graceThe key has expired, but the install is still inside its grace window. Licensed surfaces continue to work while renewal is handled. Responses on gated routes include a grace signal.
floorNo valid key is configured, or the key is past expiration plus grace. Licensed surfaces are refused or degraded to the CE behavior.

Read the local state with:

curl -H "Authorization: Bearer $LAYER_API_KEY" \
  https://<gateway-host>/v2/license

The response includes whether the key is valid, the licensed subject, tier, features, limits, expiration, and the gateway’s licensed / grace / floor projection. Operator and dashboard enforcement use the same state model.

End-to-End Runbook

The full-fidelity license acceptance run is scripted:

scripts/license-e2e-real.sh

The script uses a per-run plus-addressed inbox, stands up a disposable kind cluster from infra/helm/layer, installs the extracted key with license.token, checks GET /v2/license, and queries PostHog when a read key is available. Each leg is independently gated and the final report says exactly which credential or local tool unlocks the next assertion. It never runs the grace/floor walk against the shared AWS cluster.

No-key installs do not get grace. Grace is a lapse cushion measured from a real exp, not a free evaluation runway.

Read the current gateway projection with GET /v2/license.

Metrics

License health is exported with the gateway metrics and uses the license_tier and license_sub labels. Surface metrics also include surface; Phase 1 emits surface="gateway".

MetricTypeMeaning
hevlayer_license_validGauge1 when the configured key verifies; 0 for missing or invalid keys.
hevlayer_license_expiry_secondsGaugeSeconds until exp; negative after expiry for a valid expired key.
hevlayer_license_grace_seconds_remainingGaugeSeconds left before a surface drops to the floor; 0 outside grace.
hevlayer_license_degradedGauge1 once a surface is on the floor.
hevlayer_license_grace_requests_totalCounterGateway requests allowed while the license is in grace.

Useful alerts are “license expires in less than 14 days”, any grace requests, and hevlayer_license_degraded == 1.

Renewals

When a trial or commercial license is close to expiration, request a renewal through your hev layer contact or reply to the license email. Replace the key in Helm or in the referenced Secret and roll the gateway release so it reads the new value.

Governing Terms

DocumentGoverns
TRADEMARKS.md / brand policyUse of the Layer and hevlayer names, marks, and product identity.
Hosted-service Terms of ServiceThe operated Layer service at hevlayer.com, including acceptable use, billing, SLA, liability, and support terms.
Privacy PolicyData handling for the hosted service, site, and product telemetry.

Self-hosting the gateway is governed by the gateway license and trademark policy. Using the hosted Layer service is governed by the hosted-service terms and privacy policy.

Client SDKs

The generated client SDKs stay Apache-2.0. They are pure onramps to the public API surface and are intended to be easy to adopt in any application.

esc