Files
Oleg LukasonokandClaude Opus 5 c1e8666663 arda skill: initial import
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>
2026-08-18 11:58:15 +03:00

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.
author version spec scope
home-v1 1.0 agentskills.io/specification home-v1 homelab

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 plane
  • 010, 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

  1. 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.
  2. Check reserved names before inventing one. If a reserved name fits, claim it rather than adding another.
  3. Check for collisions, including informal aliases used in memory banks — that is how outpost went wrong.
  4. 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.
  5. 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.