Umbrella: shed the service-router tunnel business
Owner-approved 2026-06-18. Review (comment) established: agentwire ships zero tunnel-provider code. The phone→portal "from anywhere" path is already 100% bring-your-own (cloudflared/tailscale, docs-only). The only "tunnel" code is an internal SSH service-router (agentwire tunnels * / tunnels.py) — outbound ssh -L port-forwards auto-spawned at portal startup to reach a service on another box. It only ever served remote-GPU TTS/STT, which is now unused (TTS default = browser/OS voice, STT default = in-process shim). It's inert on single-box installs.
Target posture
agentwire owns the portal's local security boundary (127.0.0.1 default, token-gated LAN opt-in, self-signed TLS — see #396) and SSH-based remote session management (machines list, /api/sessions/remote, ssh -t … tmux attach). It does not own internet exposure or service-routing tunnels — those are bring-your-own, documented but never code.
KEEP (untouched): portal bind/token/TLS (#396); machine add/remove/list; cross-machine sessions + remote terminal-attach (plain SSH, independent of tunnels.py).
Follow-ups
Verification
After the cut: a single-box portal starts with no auto-spawned ssh processes; cross-machine session listing + remote terminal-attach still work; docs state the BYO posture plainly.
Umbrella: shed the service-router tunnel business
Owner-approved 2026-06-18. Review (comment) established: agentwire ships zero tunnel-provider code. The phone→portal "from anywhere" path is already 100% bring-your-own (cloudflared/tailscale, docs-only). The only "tunnel" code is an internal SSH service-router (
agentwire tunnels */tunnels.py) — outboundssh -Lport-forwards auto-spawned at portal startup to reach a service on another box. It only ever served remote-GPU TTS/STT, which is now unused (TTS default = browser/OS voice, STT default = in-process shim). It's inert on single-box installs.Target posture
KEEP (untouched): portal bind/token/TLS (#396); machine add/remove/list; cross-machine sessions + remote terminal-attach (plain SSH, independent of
tunnels.py).Follow-ups
ensure_tunnelsfrom portal startup (__main__.py:802); delete-vs-thin-helper foragentwire tunnels */tunnels.py/network.pytunnel pathsdocs/wiki/deployment/remote-access.mdas provider-agnostic BYO-tunnel guide; strip personalsolodev.devspecifics; state agentwire ships no tunnel codeautossh -R,~/.local/bin/agentwire-tunnels) frommachine add/removeoutput — keep pure session managementnetwork status/network_statusto read-only diagnostics (decouple from tunnel management)Verification
After the cut: a single-box portal starts with no auto-spawned
sshprocesses; cross-machine session listing + remote terminal-attach still work; docs state the BYO posture plainly.