CortexDB Docs
Docs for CortexDB 0.12.8, the version running on CortexDB Cloud (api.cortexdb.ai).
Self-Hosting

Your License

How a CortexDB server holds its license, renews it by itself, and what happens near the end of it. Usually there is nothing to do.

Self-hosted CortexDB is for customers

Self-hosted releases from 0.9.0 on, including the one these docs describe, are available to customers through the customer portal, with a company license; talk to us to become one. The last public release, 0.8.21, is on cortexdb.ai/download. To use this release today without running a server, start on CortexDB Cloud.

Every CortexDB release from 0.12.1 on runs under your company's license. Usually there is nothing to do: the install commands on customer.cortexdb.ai already carry it, the server keeps it with its data, and it renews itself when your CortexDB contact extends it.

How it gets to your server

The commands on the portal's Releases page start with your license:

export CORTEX_LICENSE='cdbl1.…'      # your company's license, filled in for you
docker run -d --name cortexdb … -e CORTEX_LICENSE … cortexdb/cortexdb:v0.12.8

On its first start the server saves the license in its data directory (license.json), so later upgrades and restarts find it there even without CORTEX_LICENSE. One license covers every server your company runs.

Agents can fetch it too: GET https://customer.cortexdb.ai/api/license with an agent key, or the MCP tool get_license.

Renewals arrive by themselves

The server asks customer.cortexdb.ai for the newest version of its license: every few hours, hourly in the last two weeks, and every 15 minutes once it has ended. When your license is extended or your plan changes, your servers pick that up without a restart or anything from you. A renewal request carries the license itself, a random id for the server and its version, and nothing else.

A server that can't reach the portal

Air-gapped servers, or ones behind a strict proxy, keep the license they have. Nothing breaks when the portal can't be reached. To renew such a server, copy the license from the portal (Releases → a release → License) and either:

  • paste it on the server's console, License page (takes effect at once), or
  • set CORTEX_LICENSE again and restart.

CORTEX_LICENSE_URL=off stops the server from asking the portal at all.

Near the end of a license

WhenWhat happens
Two weeks before the last dayA notice in the console and the log. Everything works.
After the last dayThe grace period (7 days for pilots, 14 for customers): everything works, with notices.
After the grace periodReads and writes answer 402 LICENSE_EXPIRED. Your data is safe and unchanged.

While a license has ended, health checks, the console, export (POST /v1/export) and adding a license keep working, so you can always take your data out. As soon as the license is renewed, the server serves again; nothing to restart.

A server that has never had a license serves for 14 days (time to add one after an upgrade from a release before 0.12.1), then answers 402 LICENSE_REQUIRED in the same way.

Clusters

Each data node of a cluster holds the license itself. Put it in the node config's [engine] table, like any engine setting (CORTEX_LICENSE = "cdbl1.…", or CORTEX_LICENSE_FILE naming a file on the node). Each node keeps and renews it in its own data directory.

Settings

VariableWhat it does
CORTEX_LICENSEThe license. Needed once; the server keeps it.
CORTEX_LICENSE_FILEA file holding the license instead (a mounted secret).
CORTEX_LICENSE_URLWhere renewals come from (default https://customer.cortexdb.ai/api/license/refresh); off stops them.

The console's License page, and GET /internal/ui/license, show the company, plan, last day, grace, how long the server serves, and when it last renewed.

On this page