← index2026-05-11 15:38 (Beirut)Mac ↔ Hetzner control panel shipped — bento grid, 43 functions, single-password login

Mac ↔ Hetzner Control Panel — shipped 2026-05-11

Mac ↔ Hetzner Control Panel — shipped 2026-05-11

URL: mac.jonahtebaa.com — Caddy gate password is the only password now.

What changed in this session

Bento grid layout

Collapsed grid

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-to-expand drawer

Schedulers expanded

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.

Final shipped state

Final state

What's left

  1. Your eyes on it. I tested through Playwright — you haven't opened it in Mac Chrome yet. That's the acceptance.
  2. Live Mac verbs untested. Your Mac shows offline (HB :9100 unreachable, tunnel inactive). Mac-side verbs (revive HB, screencap, notify-toast, hammerspoon reload, meeting start/stop) compile clean but can only be proven once HB is up.
  3. No sparklines / no inline log viewer. Logs come back as JSON when you click logs; we'd need a modal to render them readably. Easy follow-up.
  4. No configure forms. Things like wake-word threshold accept params via API but have no UI form yet.

Hammerspoon question

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.

Files touched this session