0017: The product is called Tenax¶
Date: 2026-10-12 · Status: accepted
Context¶
The project started as "Keeper". The name is crowded in this space: KeeperDB, Keeper Security (a password manager) and many "-keeper" tools make it hard to search for, register or trademark. The owner chose Tenax (Latin for tenacious, holding fast) from the shortlist in the naming research. Nothing has been deployed yet: v0.1.0 and v0.2.0 were published but are installed nowhere. Renaming the API group, the namespace and every identifier is free now and a migration later.
Decision¶
Every name changes at once, in one release (v0.3.0). There are no aliases and no compatibility shims:
| What | Before | After |
|---|---|---|
| Product, docs, console, site | Keeper | Tenax |
| Go module | github.com/republic-global/keeper |
github.com/republic-global/tenax |
| API group (CRDs, annotations, labels, finalizers) | keeper.republic.global |
tenax.republic.global |
| Binary and CLI | keeper |
tenax |
| Image | …/keeper/keeper |
…/tenax/tenax |
| Helm chart | keeper |
tenax |
| Environment variables | KEEPER_* |
TENAX_* |
| Metrics and alerts | keeper_*, Keeper* |
tenax_*, Tenax* |
| Default namespace, service and role names | keeper-system, keeper-api, keeper |
tenax-system, tenax-api, tenax |
| Documented database user | keeper |
tenax |
| Live-test prefixes | keeper-test |
tenax-test |
| Workflow variables | KEEPER_IMAGE_REPOSITORY, … |
TENAX_IMAGE_REPOSITORY, … |
- The API group stays under
republic.globalbecause that domain is owned. If Tenax gets its own domain beforev1, the group moves once more in a single breaking release, like this one. - The repository is renamed
republic-global/tenaxon GitHub; the old URL redirects. - Earlier ADRs keep their numbers and text, with the product name updated.
Consequences¶
- v0.1.0 and v0.2.0 are not upgradable to v0.3.0: their CRDs belong to another group. They were never installed.
- Anything outside this repository that names Keeper changes with it: the GitOps rollout (republic-gitops), the registry repositories and the push token's scope, the workflow variables, and the site's Worker, route and bucket.
- Object keys in S3 do not contain the product name, so the backup layout is unchanged.