Get a license
Getting a license happens in two phases. FalkorDB onboards your organization once; after that your team issues its own licenses without waiting on anyone.Onboarding, once per organization
Request access to the FalkorDB Enterprise Portal from your FalkorDB account manager. Onboarding creates your organization and sets the quota it can draw against — the ceiling on Kubernetes clusters, CPU cores, memory and deployments your account is entitled to, and how far out licenses may be dated.Enterprise Portal
How to get access, register a cluster, and issue its license.
Self-service, after onboarding
Once your organization exists, licensing moves to the FalkorDB Enterprise Portal, a FalkorDB-hosted site your team signs in to. From there you can, without contacting anyone:- Register a Kubernetes cluster and receive its license immediately. A license is minted at the moment of registration — the two are never created apart.
- Regenerate a license for a cluster, for example after it expires or if the string was mishandled.
- Resize a cluster, within the quota your organization already holds.
- Request more quota when you need to grow beyond it. Quota changes are the one step that still goes through FalkorDB.
How licenses are generated
Licensing is entirely offline. Nothing in the flow contacts a FalkorDB server, at issue time or at validation time, so an air-gapped installation is licensed exactly like a connected one.1
FalkorDB signs the payload
The portal holds a private signing key. A small JSON payload describing your
account, cluster, limits and expiry is signed with it. The key stays in
FalkorDB-hosted infrastructure and is not part of any release artifact.
2
You receive a single string
The result is one line of text in the form
falkor.license.v1.<payload>.<signature>. The payload segment is the
base64url encoding of the JSON, and the signature covers that exact
segment. Both are readable, and neither is secret in the sense a password
is — but a modified payload will not verify.3
The admin server verifies it locally
The matching public key is compiled into the admin server image. It is not a
chart value and not fetched at runtime, so verification works with no
network access at all. The image also carries a checksum of the public key
and re-checks it on every validation, so a tampered image fails closed
rather than accepting forged licenses.
Ed25519. The payload carries a version field, which
is 1 today; the admin server rejects any version it does not recognize rather
than guessing at the meaning of unknown fields.
What is inside a license
Nothing in the payload is encrypted, so you can always decode it to see exactly
what you have been granted.
Binding to a cluster
Every license the portal issues is locked to exactly one Kubernetes cluster. That is why registering a cluster and issuing its license are a single step: there is nothing to bind a license to until the cluster is registered. Cluster identity is theuid of the kube-system namespace, which Kubernetes
assigns when the cluster is created and which no two clusters share. Read it out
of the cluster you are registering:
k8sClusterId. At validation time the admin
server compares it against the K8S_CLUSTER_ID environment variable when one is
set, and otherwise against the live kube-system namespace uid.
When the cluster ID cannot be read
Reading thekube-system namespace can fail for reasons that say nothing about
which cluster the admin server is in: an API server outage, a timeout, or a
missing RBAC permission. Such a failure does not invalidate the license. The
admin server keeps using its last successful check of the same cluster ID for a
grace period, 24 hours by default, and reports the binding as unverifiable. The
Admin UI shows a warning with the time the grace period ends.
Only a definitive answer invalidates a bound license straight away: the
namespace was read and its uid differs, or the API server reports that
kube-system does not exist. If the grace period runs out before a check
succeeds, the license becomes invalid until the next successful check.
Set the grace period with adminServer.license.verificationGracePeriodHours in
the Helm values. 0 turns it off, so any failed check invalidates the license.
The license format itself allows k8sClusterId to be omitted, in which case the
admin server accepts the license on any cluster. Such licenses are not something
you can issue for yourself; ask support if an unbound license is genuinely
required.
What a license limits
A license constrains four dimensions. Every one of them is a live count taken from the installation itself, not a figure you self-report.
Each dimension is either a number or
unlimited. CPU and memory are read from
the resource requests you set on a deployment, falling back to limits when no
request is set, and are multiplied by the number of nodes in each component.
A Sentinel or sharded deployment therefore counts every node it runs, not one
per deployment.
Notably, the license does not gate features. Authentication providers,
backups, sharding, monitoring and the API are all available regardless of which
license you hold. Only capacity is licensed.
When a limit would be exceeded
Limits are checked before a change is applied, not after. Creating a deployment, scaling one up or down, changing its resources, or adding a user all recompute what usage would become and refuse the change if it crosses a limit. The existing installation keeps running untouched — an over-limit request is rejected, never partially applied.License states
The admin server reports exactly one state at a time.
Limits are enforced on the change an action would make. Using a limit exactly is
fine: once every licensed deployment slot or core is in use, the installation
stays
active and only actions that would go past a limit are refused. Those
include creating another deployment, creating one that alone needs more than the
remaining quota, scaling out or up, and adding users. The same checks apply to
deployments created or edited as raw YAML. They fail with a
License limit exceeded error that names the resource.
In locked, the same rule applies to whichever limit is exceeded: actions that
would grow it further are refused. Everything else keeps working, including
deleting, scaling down, restarting, stopping and reconfiguring deployments.
That’s how you bring usage back within the license.
In expired and invalid the installation enters read-only mode.
Authenticated write requests are refused with HTTP 423 Locked, while reads
continue to work normally. Deleting a deployment is still accepted, so you can free
capacity.
Your databases are unaffected and keep serving traffic. Read-only mode applies to
the management plane, not to the data plane.
Recovery operations on an existing deployment also stay available, because they
change no licensed usage:
- Restart, start and stop
- Switchover to another replica
- On-demand backup
Activate a license
The license reaches the admin server in one of three ways.Admin UI
Sign in and open Licensing in the sidebar. Paste the license string and activate it. This works even when the installation is locked, and is the fastest way to recover from an expired license.Command line
Helm
Supply the license at install time for unattended deployments. See Production installation for the Secret and values keys.Check the current status
Renew or change a license
Renewals and resizes are self-service in the portal. Regenerate the cluster’s license, or change its capacity, and activate the new string the same way as the first one. There is no migration step and no downtime: activating a new license replaces the previous one immediately, and an installation sitting inlocked
because it outgrew its limits returns to active as soon as a license covering
current usage is activated.
Two things still go through FalkorDB support: increasing your organization’s
quota, and extending the term licenses may be dated to. Both are ceilings set at
the organization level, so no amount of self-service can raise them.
Disaster recovery into a replacement cluster
A license bound to a lost Kubernetes cluster isinvalid on any other cluster,
so it cannot license the replacement. On an invalid license you cannot restore a
backup, because a restore creates a new deployment, which is not a recovery
operation. License the replacement cluster first.
1
Read the replacement cluster's ID
2
Get a license bound to it
Register the replacement cluster in the
Enterprise Portal with that ID and the
capacity it needs. Registration issues its license. If your quota is already
used by the lost cluster, request a quota change, or contact FalkorDB
support.
3
Install the admin server with the new license
Put the new license string in
adminServer.license.value, or in the Secret
named by adminServer.license.existingSecret.name. Do not reuse the lost
cluster’s values unchanged. A license supplied through Helm is applied on
every start and replaces one activated in the Admin UI, so an old license
left there makes the installation invalid again.4
Confirm the license is active
active. If you install without a license, the 14-day trial starts instead,
and you can activate the new license from the Admin UI later.5
Restore the data
A backup is restored by cloning the deployment it was taken from (see
Restore to a new deployment), so the
Admin UI and API can’t yet restore a lost cluster’s backups into a
replacement cluster where that deployment doesn’t exist. Contact FalkorDB
support to restore them.