Repository navigation
Description
Talm + talos bootstrap
Purpose
Prove the declarative bootstrap end-to-end: bare machine to Talos node from config alone.
Scope
TALM (cozystack/talm) flow: init, per-node config harvest, apply, on the first 3-5 machines. Answer Drew's open design question in writing: how heterogeneous per-machine drives are declared in Talos/TALM config. Pin versions (research baseline 2026-10-03: talm v0.35.0, Talos v1.14.1 - recheck at build time). Success includes a teardown-and-rebuild-from-config drill on one node.
Execution mode
Hybrid: all config and tooling work is online; first boot, console checks, and the rebuild drill touch real machines.
Dependencies
Depends on epics 1, 3, 4, 5. Gates epic 7.
Acceptance
First nodes bootstrapped from committed config; the heterogeneous-drive question documented with the working flow; one node rebuilt from config alone as proof.
Structure
Part of the basement cluster program. Project home: planning/roadmaps/basement-cluster.md in this repo. Full program register: goal workspace files/idea-register-2026-10-20.md (Muse goal goal_ba17a5777c21). Detailed task issues are filed as sub-issues of this epic; dependencies use blocks / blocked-by links.
Hard rules for the whole program: no HashiCorp anything; everything bootstrappable from config, no hand-built state.
Activity
developing-today commentedon Oct 27, 2026
CODE-227
dezren39 commentedon Oct 27, 2026
Epic map — basement cluster program
This epic: #1086 — TALM + Talos bootstrap
Dependencies: Blocked by #1080, #1083, #1084, #1085; gates #1087
Filed in the 2026-10-26 cluster seed. Project home:
planning/roadmaps/basement-cluster.md.dezren39 commentedon Oct 27, 2026
Predecessor: this epic supersedes dezren39/darwin-nix#503 (filed 2026-10-20 in the nix repo during the program's first filing pass). A superseded-pointer comment is on that issue; work happens here.
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 30 (priority/none). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
dezren39 commentedon Nov 3, 2026
🤖 Agent note · triaged (epic live; all execution gated on the hardware epics, one written deliverable is not)
repo-worker-code), OpenChamber scheduled laneec118cadorigin/main: epic(cluster): TALM + Talos bootstrap #1086 OPEN, no sub-issues (0/0), roadmap rowplanning/roadmaps/basement-cluster.mdlists it as planned under "Next".Dependencies, named and all still open: epic 1 #1080 (hardware inventory), epic 3 #1083 (power & space), epic 4 #1085 (storage assembly), epic 5 #1087 (Cozystack platform). All four are OPEN and hardware-bound, so nothing in the bootstrap flow can be proven yet — no first node exists to boot.
Work that is safely doable now (online, no hardware): the issue's own design question — how heterogeneous per-machine drives are declared in Talos/TALM config — can be answered in writing against the pinned baseline (talm v0.35.0 / Talos v1.14.1, to be rechecked at build time). That is a document, not an implementation, and it is the one acceptance item that does not need a machine.
Verdict: keep open as the epic tracker. When scheduled: write the heterogeneous-drive answer first (now), then run init → per-node config harvest → apply on the first 3–5 machines and the teardown-and-rebuild drill once #1080/#1083/#1085 land. Version pins get rechecked at build time. No children filed and no fix packet — a bootstrap task cannot run ahead of its hardware.
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: cross-link
from: issue #1812 triage (queue task 7746)
#1812 (TALM bootstrap: declarative per-node disk config for non-identical drives) is the concrete child for this epic's "answer Drew's open design question in writing" acceptance item. GitHub refused the sub-issue link ("sub issue may only have one parent" — #1812 likely still carries a parent from its origin in dezren39/nix), so this comment is the linkage.
Triage verdict on #1812: still live, answerable offline. The mechanism is TALM node files:
nodes/<node>.yamlbody below the modeline is applied as a strategic merge patch over the rendered template, somachine.install.diskSelector(serial/wwid, never size/model for the boot disk) andUserVolumeConfigCEL selectors with!system_diskare the per-node declarative hook. Boot-disk swap is a re-template + reinstall drill, i.e. the same rebuild-from-config proof this epic already requires.Follow-up implementation task enqueued: 8148 (small_fix, docs + runbook under
infra/cluster/, local container-flow proof). Bare-metal proof stays gated on #1810.dezren39 commentedon Nov 5, 2026
Home lab build-out (2026-11-04): Drew's lab story names "setting up TALM, Talos Kubernetes, Cozystack" as a build-out step. This epic is the existing execution home for the TALM + Talos half (Cozystack: #1087), so no new ticket was filed — this issue serves as the execution ticket for the tracked goal "Stand up lab cluster (talm, talos, cozystack, postgres, rustfs)" (goal_ba17a5777c21; workspace: ~/workspace/goals/stand-up-lab-cluster-talm-talos-cozystack-postgres-rustfs/).
Sequencing (parent: #6066): physical plant + network first — racking, the Dell switches, edge routing, mesh Wi-Fi — then the cluster interconnect bring-up (#6077: the dozen cluster machines + 2–3 mini PCs, full-mesh reachability), which this ticket depends on; cluster setup after that. Program epic: #1817.