Armada KVArmada KV
/vmain

Regatta and Armada

Origin

Armada is the spiritual successor to Regatta, a distributed key-value store developed internally at JAMF Ltd. Regatta was open-sourced and published on GitHub, but was subsequently taken down following copyright claims. The original engineering story is documented in the JAMF engineering blog post The story of Regatta.

Armada is a hard fork of the Regatta codebase, maintained and developed as a fully independent open-source project under armadakv.

Compatibility with Regatta

Armada and Regatta are not drop-in binary replacements of each other, but migration from Regatta to Armada is straightforward. The table below summarises what is and is not compatible:

AreaCompatible?Notes
KV wire API✅ YesArmada implements the same regatta.v1.KV gRPC service, so existing Regatta clients (CLI, SDKs) work against an Armada cluster without code changes.
Backup format✅ YesBackups taken from a Regatta cluster can be restored onto an Armada cluster and vice-versa. This makes backup-based migration the recommended path.
Data storage format❌ NoArmada uses a different on-disk layout and MVCC scheme. Armada nodes cannot read Regatta data files directly.
In-cluster replication❌ NoArmada's Raft transport (QUIC-based dragonboat fork) is incompatible with Regatta's Raft transport. A mixed Regatta/Armada cluster is not supported.
Cross-cluster replication❌ NoThe inter-cluster replication protocol (log and snapshot streaming RPCs) has changed. A Regatta leader cannot replicate to an Armada follower, and vice versa.

Migrating from Regatta

The recommended migration path is:

  1. Take a backup of each table from the live Regatta cluster using armada backup (or the equivalent Regatta CLI — the backup format is identical).
  2. Deploy a fresh Armada cluster.
  3. Restore each table backup onto the new Armada cluster using armada restore.

Because the KV wire API is fully compatible, clients can be pointed at the new Armada cluster with no code changes needed.

Legacy Naming

Armada retains many regatta-prefixed identifiers as a historical artifact of its origin:

  • gRPC service namesregatta.v1.KV, regatta.v1.Tables, regatta.v1.Cluster, etc.
  • Prometheus metric prefixesregatta_*
  • Helm chart name — published as regatta/regatta (the chart will be renamed in a future release)
  • Docker image path — still published under the regatta org on GHCR

These identifiers are intentionally preserved to maintain wire compatibility with Regatta clients and tooling. They will be gradually updated in future releases as breaking changes are scheduled.