URL: mac.jonahtebaa.com — Caddy gate password is the only password now.
POST /api/mac/auth-via-gate. No second login form. Endpoint refuses outside mac.jonahtebaa.com so the same surface on the main domain can't bypass auth._mac_ssh() now uses raw SSH; only write-verbs (revive, kill, screencap, notify, type, applescript) open a real MacSession. Sacred rule preserved.mac-control-v8-shipped. Script tags cache-busted to v=8.
5 tiles, per-group accent colors, 3 quick verbs visible on each (top function's verbs). Header pills show real-time roll-up: Mac OK · Tunnel OK · CDP — · 26/26 OK. Master toggle subtitle shows live state of mac_app group.

Click any tile → drawer reveals every function in that group with its full verb set (start / stop / restart / logs / etc). Each function row has its own status pill, ID, description, and action buttons. Tested end-to-end via Playwright: click logs on Tailscale → returns 5 real journal lines → green toast.

logs; we'd need a modal to render them readably. Easy follow-up.You asked if we can remove it. My take: not yet, but here's the path.
Hammerspoon does three things in the current stack:
1. Lua HTTP server on :8765 — fallback when HeyBrian's :9100 is down.
2. brian_controller_ui Spoon — secondary path for orb / pill / statusbox / border overlays.
3. Dead-man's switch — independent watchdog that tears down state if HB stops heartbeating.
HeyBrian.app does all three natively now. Hammerspoon is the safety net for sacred-rule compliance — if HB crashes, the only thing that can still paint the visible border is Lua. Without it, an HB crash silently disables mac_ssh until HB is revived.
Cost of keeping: ~30MB resident on your Mac, one extra LaunchAgent to maintain.
Cost of removing: single point of failure on :9100, no D14 dead-man's switch.
Recommended path (two phases):
1. Now — tighten the C05 HB watchdog to revive HB within 30–60s of any crash. Shrinks the window where Hammerspoon's fallback matters to almost nothing.
2. After a clean week of HB stability — kill the Hammerspoon LaunchAgent + uninstall the Spoon.
Or if your real reason is memory / clutter / it bugs you — tell me which, and I'll target that without giving up the redundancy.
/var/www/mac/index.html — script tag bump to v=8/var/www/mac/static/app.js — full slim rewrite, auto-mint via gate, conv backoff/var/www/mac/static/panel.js — header pill roll-up treats idle as neutral/var/www/mac/static/panel.css — function-summary block (already in place from earlier session)/var/www/mac/sw.js — cache name mac-control-v8-shipped/opt/agent/core/mac_panel_routes.py — _mac_ssh() raw SSH for status, new _mac_ssh_session() for writes, 22 new registry entries, ~12 new helper functions/opt/agent/core/mac_control_routes.py — new POST /api/mac/auth-via-gate endpoint