Setup checklist
Proves Alkio hosting: worktree owns the app; mesh self-hosts previews; funnel for public.
- 01
Product host on OSS Tailscale
Studio uses open-source tailscaled (brew formula). Standalone GUI cannot Funnel or host Tailscale SSH.
- 02
Mesh members
MBP + iPhone + Studio show in `tailscale status` on the same tailnet.
- 03
SSH paths
OpenSSH + 1Password agent over MagicDNS (keys). Optional: `tailscale set --ssh` for identity SSH (not 1P keys).
- 04
Install deps in worktree
cd templates/web-app && npm install (Node ≥ 24; product host uses 26).
- 05
Mesh preview
npm run dev → http://<tailscale-ip>:8080 or npm run preview:mesh
- 06
Production funnel
npm run build && npm run prod:funnel (or hosting/funnel.sh --port 8080)
- 07
Passkeys
Register once per hostname (RP ID). Mesh MagicDNS and funnel hostnames are different RPs.
# Authoring Mac tailscale status ssh studio # LAN ssh studio-ts # MagicDNS after join (OpenSSH + 1P) # Studio (Role H) brew install --formula tailscale sudo brew services start tailscale sudo tailscale up --ssh --accept-dns --hostname=studio # This app cd templates/web-app && npm i && npm run dev