Naming registry for the home-v1 homelab — Middle-earth names for every infrastructure component. Records the naming convention, the names in use, reserved names (erebor for the NAS), and the outstanding renames. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
6.9 KiB
name, description, compatibility, metadata
| name | description | compatibility | metadata | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| arda | Authoritative naming registry for the home-v1 homelab — assigns and records Middle-earth (Tolkien) names for every infrastructure component: repositories, physical hosts, Kubernetes nodes, and network domains. Use whenever a new homelab component needs a name, an existing name must be resolved to its role or IP address, a component is being renamed, a name collision must be settled, or a reserved name is being claimed — even when the user only says "what do we call the NAS", "name this box", "add a worker node", "which host is that", or names a component directly such as arda, gondor, osgiliath, minas-tirith, ithilien, palantir, erebor, arnor, or rohan. Owns the naming convention for domain repositories (<name>-v1), sub-domains (<parent>-<child>-v1), and cluster nodes (<repo>-<place>-<NNN>), plus the reserved-name list and outstanding renames. | Documentation-only skill. No scripts or external tooling required. |
|
Arda — Homelab Naming Registry
arda is the single source of truth for what every component of the home-v1 homelab is
called. Arda is the world itself in Tolkien's legendarium; everything below sits inside it.
Use this registry before inventing any name. Names in the homelab are not decorative — they are used verbatim as repository names, hostnames, Kubernetes node names, and DNS labels, so a name chosen casually becomes load-bearing immediately.
Naming convention
| Kind | Pattern | Example |
|---|---|---|
| Domain repository | <name>-v<N> |
gondor-v1, palantir-v1 |
| Sub-domain of a realm | <parent>-<child>-v<N> |
gondor-ithilien-v1 |
| Code-agent companion | <repo>-code-agent |
gondor-v1-code-agent |
| Copier template | <repo>-tmpl |
gondor-v1-tmpl |
| Cluster node | <repo>-<place>-<NNN> |
gondor-v1-osgiliath-000 |
Node numbering — NNN is a 3-digit slot, allocated in tens by role:
000— control plane010,020,030… — workers
The gaps are deliberate: they leave room to insert a node without renumbering the rest.
Rule — the -v<N> suffix is part of the name, never dropped. gondor is the realm in
prose; gondor-v1 is the thing that exists.
Registry — in use
| Component | Name | Role | Address |
|---|---|---|---|
| The estate | arda-v1 |
Umbrella topology + ownership boundaries | — |
| Kubernetes cluster | gondor-v1 |
3-node microk8s platform (GitOps content) | — |
| Control plane node | gondor-v1-osgiliath-000 |
Control plane, Argo CD, ingress; also runs the edge nginx | — |
| Worker node | gondor-v1-minas-tirith-010 |
Worker (strong CPU) | — |
| Worker node | gondor-v1-minas-tirith-020 |
Worker (strong CPU) | — |
| Edge reverse proxy | gondor-ithilien-v1 |
nginx owning the public IP, apex lego-cloud.eu |
78.57.213.95 |
| Operator / tooling | palantir-v1 |
Imperative ops repo — bootstraps and repairs what GitOps owns | — |
| Cluster template | gondor-v1-tmpl |
Copier template that renders gondor-v1 |
— |
Why these names fit — keep this reasoning when adding to the registry:
- Arda — the world; the container for everything else.
- Gondor — the realm that is actually defended and inhabited: the compute platform.
- Osgiliath — Gondor's old capital astride the river, the crossing everything passes through. It is the control plane and the host of the edge proxy.
- Minas Tirith — the fortress city, where the strength is. The heavy workers.
- Ithilien — the outland province beyond the river, watched by rangers from a hidden outpost. The edge proxy facing the internet.
- Palantír — the seeing-stone: see the whole realm from one place, and act on it. The imperative operator repo.
Registry — reserved
Names claimed but not yet bound to a running component. Do not reuse them for anything else.
| Name | Intended for | State |
|---|---|---|
erebor |
The NAS (TrueNAS) | Reserved — rename pending, see below |
arnor-v1 |
Unassigned | Empty repository, initial commit only |
rohan-v1 |
Unassigned | Empty repository, initial commit only |
Erebor — the Lonely Mountain: the great hoard under the mountain, everything of value kept in deep vaults. The natural name for the storage tier.
Arnor — the northern sister-kingdom to Gondor. Fits a second, peer cluster or a separate site.
Rohan — the horse-lords: fast, mobile, ride to aid Gondor. Fits an ephemeral, burst, or edge-compute tier.
Registry — pending renames
These components are live but carry non-Tolkien names. The old names are still what the code and docs say; treat both as referring to the same thing until the rename lands.
| Component | Current name | Target name | Address |
|---|---|---|---|
| NAS (TrueNAS) | realm-v1 |
erebor-v1 |
192.168.1.218 |
| Router / gateway | outpost-v1-router |
undecided | 192.168.1.1 |
realm-v1 and outpost-v1-router are declared authoritative in
arda-v1-code-agent/memory-bank/0100-project/ — that memory bank must be updated as part of
any rename, not just the code.
Gotchas
outpost is ambiguous — do not use it as a name. gondor-ithilien-v1 is already
aliased "Outpost" in its own memory bank, while arda-v1 independently named the router
outpost-v1-router. Two different components, one word. Whatever the router ends up being
called, it must not be outpost.
arda-v1's memory bank is stale. It documents only the router, the NAS, and the three
cluster nodes. It has no mention of gondor-ithilien-v1, palantir-v1, arnor-v1, or
rohan-v1. Do not treat it as a complete inventory — this registry is the complete one.
Names are referenced by IP, not by name, in most code today. The NAS appears as
192.168.1.218 and the router as 192.168.1.1 throughout palantir-v1. Renaming a
component in this registry does not by itself change anything operational.
Assigning a new name
- Identify the role first, then find the name — never the reverse. The name must justify itself in one sentence, the way each entry above does.
- Check reserved names before inventing one. If a reserved name fits, claim it rather than adding another.
- Check for collisions, including informal aliases used in memory banks — that is how
outpostwent wrong. - Stay inside the realm's logic. A component belonging to the cluster gets a Gondorian
place name (
gondor-<place>-v1). A standalone domain gets its own realm name. - Record it here in the same commit that introduces the component. A name that lives only in a hostname will drift.
Read references/name-pool.md when you need candidate names for a role not covered above —
it lists vetted Middle-earth names grouped by the kind of component they suit, with the
reasoning already worked out.