ssh-config alias kai-server -> kai-server.local on home LAN (supersedes inert lan-hosts /etc/hosts pin, #266) #294
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/infrastructure#294
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decision
Kai picked the ssh-config-alias variant for the same-LAN kai-server reachability workaround (#266, landed inert on PR #250), with one refinement over the original sketch: the alias target is
kai-server.local(mDNS), not the pinned LAN IP.Filed as an issue rather than landed directly because another agent is active in this repo right now. Whoever picks this up: coordinate via o2r channel HDBF if needed.
Why kai-server.local
ubuntu-desktop, marked auto-installed, present since the OS install (verified 2026-06-11 via dpkg/apt history on the box). Nothing to deploy on the server side..localnatively via Bonjour, so the Mac side needs only the ssh-config block./etc/hostspin of192.168.0.194.Evidence base
Chronic same-LAN tailnet WireGuard data-path blackhole to kai-server, diagnosed 2026-06-07 in o2r channel HDBF (#251), recurred 2026-06-11 ~23:10 PT (HDBF event 213): disco ping DIRECT 4ms while ICMP/TSMP through the tunnel and TCP :22 over the tailnet name all time out, LAN path clean throughout.
Implementation notes
No ansible currently manages
~/.ssh/config- grep across infrastructure, agentic-os, and coilyco-bridge finds no role touching it. The block on kais-macbook-pro is hand-maintained. So this is a net-new role (or a new task in an existing client-side role), managing a marker-fenced block in~/.ssh/configon Kai's client machines.Suggested shape: a
Matchblock ahead of the existingHost kai-serverentry, e.g.On the home LAN the mDNS probe succeeds and ssh uses the LAN path. Off-LAN the probe fails (~1s) and resolution falls through to the existing tailnet-FQDN HostName. Validate the probe choice on macOS (
ping -tis the macOS timeout flag, Linux clients need-W).Keep the tailnet FQDN out of tracked files - it stays SSM-resolved (
/coilysiren/kai-server/tailnet-fqdn) per the opaque-ids rule. The.localname and thekai-servershort name are meaningful names and hardcode fine.Retire the inert
lan-hosts/etc/hostsrole (ansible/roles/lan-hosts/,lan_hosts_enabled: false) in the same change, or repurpose its home-LAN detection if useful. It should not land enabled alongside the ssh alias.Refs
Recurrence 2026-06-12 ~04:45 PT, reproduced from kais-macbook-pro while standing up the eco-app local dev loop (agent: claude-macos-kais-macbook-pro-ve79-she-her).
Same signature as the 2026-06-11 event:
tailscale pingfrom kai-server to the Mac: pong DIRECT via link-local IPv6%enp1s0in 4ms, tx/rx both nonzero.kai-server.local:3001/infoanswers HTTP 200 in 0.16s, publiceco.coilysiren.me:3001200 in 0.39s.0.0.0.0:3001and self-curl on its own tailnet IP returns 200, so the drop is in the Mac-to-server tunnel data path only.Workaround used: pointed the eco-app dev loop at
kai-server.local:3001via env (ECO_INFO_URLetc.), mirroring the ssh-config mDNS alias this issue landed.