Licensing & Tiers
RelataDB ships as a single binary with three deployment profiles — free, server,
and cluster. The engine is identical on every profile: every protocol door,
at-rest encryption, disk-first paging, columnar Arrow, bi-temporal, identity,
provenance, governance, MCP, and hybrid search are available everywhere.
A license controls exactly two numbers:
| Parameter | Type | Meaning |
|---|---|---|
storage_max_gb | u64 | Storage cap in GB. 0 = unlimited. |
max_tenants | u32 | Maximum tenant count. 0 = unlimited. |
| free (no license) | server | cluster | |
|---|---|---|---|
| Engine / doors / governance | full | full | full |
Storage (storage_max_gb) | 10 GB (fixed) | license value (0 = unlimited) | license value (0 = unlimited) |
Tenants (max_tenants) | 1 ("default") | 1 (enforced) | license value (0 = unlimited) |
| Tenancy mode | single | single | single (1) or multi (>1) |
| Nodes | 1 | 1 | many (multi-node) |
Multi-tenancy is a cluster-only capability. RELATA_TENANCY_MODE=multi is rejected
at startup on free / server (which are fixed at 1 tenant); it is accepted on
cluster when max_tenants > 1. Bind address, TLS, and rate-limit defaults are
profile-scoped overridable defaults, not license gates — every door honors
RELATA_*_BIND on every profile.
How the storage cap is enforced
Every POST /ingest measures total_stored_bytes — the sum of RAM-resident row payload
bytes plus disk-spilled Parquet segment bytes. On free the cap is 10 GB; on a
licensed node it is the license's storage_max_gb (0 = unlimited). Double-counting is
not possible: rows move atomically from RAM to disk when the RAM cap is hit.
| Threshold | Behaviour |
|---|---|
| < 90% of cap | Write accepted silently |
| ≥ 90% | Write accepted; server logs a soft-warn |
| ≥ 100% | Write rejected — HTTP 402 Payment Required |
The Prometheus gauge relata_store_total_stored_bytes tracks current consumption so you
can alert before hitting the wall.
Activating a license
When you purchase or renew a RelataDB license, you receive an activation blob from Relata. Install it on the node that will run the server:
relata init --config-data <blob>The binary verifies the license, writes it to ~/.relata/node.dat, and reads it at
startup. Run relata init before relata serve on a fresh node, or restart the server
to pick up a renewed/changed license.
You can inspect the active license at any time:
relata config --print-template # shows the resolved NodeConfig
curl localhost:9090/platform/license # the server's reported tier + capsTo obtain a license, renew, or change tier (storage, tenant count, region count), contact Relata support — licenses are issued and signed by Relata and cannot be self-generated.
Grace, expiry, and tamper protection
- Expiry. A license carries an expiry timestamp. Past expiry, the server continues running under a short grace window (loud startup warning), then refuses new writes while keeping reads available so you can export your data.
- Grace tokens. Relata may issue short grace extensions for renewals in flight; the
operator applies them with
relata initexactly like a full license. - Tamper protection. Licenses are cryptographically signed by Relata and verified at startup. A modified, forged, or downgraded license is rejected; the engine never silently falls back to a higher tier than the signed license allows. Anti-escalation is enforced server-side — a trial/free-tier signature cannot unlock server or cluster caps.
Capabilities by tier
The engine is full on every tier. The license numbers (storage_max_gb, max_tenants)
and the cluster-only multi-tenant capability are the only things that differ.
| Capability | free | server | cluster |
|---|---|---|---|
| Relational · graph · vector · full-text · hybrid search | ✓ | ✓ | ✓ |
| Bi-temporal · identity · provenance · governance · MCP | ✓ | ✓ | ✓ |
| All protocol doors (S3, ClickHouse, Neo4j, Redis, Mongo, Bolt, Flight, pgwire) | ✓ | ✓ | ✓ |
| At-rest encryption · disk-first paging · columnar Arrow | ✓ | ✓ | ✓ |
| Agent memory · cognitive verbs · framework adapters | ✓ | ✓ | ✓ |
| Multi-tenant (strict isolation) | — | — | ✓ (max_tenants > 1) |
| Multi-region · sharding · hot-standby | — | — | ✓ |
| Storage cap | 10 GB | storage_max_gb | storage_max_gb |
| Tenant cap | 1 | 1 | max_tenants |
Prometheus monitoring
| Metric | Type | Description |
|---|---|---|
relata_store_total_stored_bytes | gauge | Total stored bytes (hot + spilled) — metered against storage_max_gb |
relata_store_disk_segment_bytes | gauge | Bytes spilled to disk segments |
relata_store_disk_segment_count | gauge | Number of on-disk segments |