Skip to content

backlog(B-0792 P1): iter-5 wifi-credentials injection via USB ESP — homelab persona has NO ethernet; cluster must remember wifi on setup (Aaron 2026-05-26)#5102

Merged
AceHack merged 1 commit into
mainfrom
otto-cli/b0792-iter5-multi-node-substrate-per-usb-hostname-mdns-cluster-join-2026-05-26
May 26, 2026
Merged

backlog(B-0792 P1): iter-5 wifi-credentials injection via USB ESP — homelab persona has NO ethernet; cluster must remember wifi on setup (Aaron 2026-05-26)#5102
AceHack merged 1 commit into
mainfrom
otto-cli/b0792-iter5-multi-node-substrate-per-usb-hostname-mdns-cluster-join-2026-05-26

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 26, 2026

Summary

Aaron 2026-05-26 surfaced the load-bearing substrate gap during iter-4.2 PC1 empirical test:

"we won't have ethernet for most machines it needs to remember the wifi on setup"

Today's NixOS install enables NetworkManager but bakes ZERO wifi credentials → first boot has no network on wifi-only mini-PCs (the homelab persona's default hardware). Defeats zero-typing discipline.

Five sub-targets

  1. zflash extension — write `zeta-wifi-credentials.json` to ESP from operator's `~/.zeta/wifi-credentials.json` (or CLI flags / env vars)
  2. zeta-install.sh extension — read ESP creds + write NetworkManager profile to `/etc/NetworkManager/system-connections/zeta-wifi.nmconnection` (chmod 0600)
  3. NixOS config — NetworkManager wireless backend verify + Avahi mDNS publishing (so `ssh zeta@control-plane.local` resolves from operator Mac)
  4. Multi-node hostname selection — `--host` flag → `zeta-hostname.txt` on ESP → install picks per-host config
  5. Worker cluster join token (deferred; downstream of B-0776)

Empirical anchor

Aaron's PC1 booted iter-4.2-flashed USB; installed; rebooted; came up on console with no wifi configured (NetworkManager + zero creds = no network). `ssh zeta@control-plane.local` from operator Mac failed to resolve (no mDNS publishing). Cluster-side workaround would be `nmtui` on console (defeats zero-typing). Aaron's call: "lets just create another usb we are having cascading failures no need to continue" — fix substrate, re-flash with iter-5, retry.

Composes with

  • B-0789 (iter-4 SSH+password substrate; depends_on; iter-5 extends ESP-injection pattern)
  • B-0754 / B-0759 / B-0770 / B-0778 / B-0790
  • `.claude/rules/human-audit-and-legal-risk-acceptance-pattern-in-settings.md` (potential `_wifi_credentials_acceptance` block if cluster goes beyond personal homelab)

Security framing

Wifi password on ESP = plaintext to anyone who can read the partition. Acceptance: homelab + maintainer persona under physical-USB-control assumption. NOT acceptable for shared infrastructure / multi-tenant. Future hardening (encrypted creds + Touch ID gate at boot) out-of-scope this row.

Out of scope

  • Cluster orchestration substrate (k3s vs Talos vs whatever) — B-0776
  • Worker join token / control-plane discovery — sub-target 5; deferred
  • Encrypted credentials / Touch ID gate — future hardening
  • WPA-Enterprise / 802.1X / corporate wifi — not homelab scope

Test plan

  • Backlog row scoped + filed
  • iter-5.1 PR: Avahi mDNS publishing + zflash wifi-creds injection + zeta-install.sh wifi-creds read (next; same session)
  • Empirical: wifi-only mini-PC boots → joins wifi via injected creds → ssh-able via `.local` with NO console intervention

🤖 Generated with Claude Code

…omelab persona has NO ethernet; cluster must "remember the wifi on setup"

Aaron 2026-05-26 surfaced the load-bearing substrate gap during
iter-4.2 PC1 empirical test:

> "we won't have ethernet for most machines it needs to remember
> the wifi on setup"

Today (full-ai-cluster/nixos/modules/common.nix) enables
NetworkManager but bakes in ZERO wifi credentials. Wifi requires
console-side nmtui / nmcli on first boot; defeats zero-typing
for homelab persona where most cluster nodes are wifi-only
mini-PCs with no ethernet jack populated.

Extends iter-4.x ESP-injection pattern (which carries
zeta-authorized-keys.pub) to also carry wifi credentials +
hostname selection.

Five sub-targets:

1. zflash extension: write zeta-wifi-credentials.json to ESP
   from operator's ~/.zeta/wifi-credentials.json (or CLI flags
   / env vars)
2. zeta-install.sh extension: read ESP creds + write
   NetworkManager profile to /etc/NetworkManager/
   system-connections/zeta-wifi.nmconnection (chmod 0600)
3. NixOS config: NetworkManager wireless backend verify +
   Avahi mDNS publishing (so ssh zeta@control-plane.local
   resolves from operator Mac)
4. Multi-node hostname selection: --host flag → write
   zeta-hostname.txt to ESP → install picks right
   nixos/hosts/<host>/configuration.nix
5. Worker cluster join token (deferred; downstream of B-0776
   simplest-first plugin sequence)

Security framing: wifi password on ESP = plaintext to anyone
who can read the partition. Acceptance: homelab + maintainer
persona under physical-USB-control assumption. NOT acceptable
for shared infrastructure / multi-tenant. Future hardening
out-of-scope this row.

Composes with B-0789 (depends_on; iter-4 substrate this
extends) + B-0754 + B-0759 + B-0770 + B-0778 + B-0790 +
.claude/rules/human-audit-and-legal-risk-acceptance-pattern-in-settings.md.

Out-of-scope: cluster orchestration substrate (B-0776),
worker join token (sub-target 5; deferred), encrypted
credentials / Touch ID gate (future hardening),
WPA-Enterprise / corporate wifi (not homelab scope).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 26, 2026 05:38
@AceHack AceHack enabled auto-merge (squash) May 26, 2026 05:38
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@AceHack AceHack merged commit f77bd77 into main May 26, 2026
29 of 30 checks passed
@AceHack AceHack deleted the otto-cli/b0792-iter5-multi-node-substrate-per-usb-hostname-mdns-cluster-join-2026-05-26 branch May 26, 2026 05:40
@AceHack AceHack review requested due to automatic review settings May 26, 2026 06:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant