From 3037e9808ed591046f3aa2ca57977d5ec8418a2b Mon Sep 17 00:00:00 2001 From: archipelago Date: Thu, 23 Jul 2026 19:12:46 -0400 Subject: [PATCH] =?UTF-8?q?docs(handoff):=20app=20direct=20ports=20over=20?= =?UTF-8?q?mesh=20=E2=80=94=20DONE,=20mesh-verified?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- docs/HANDOFF-2026-07-23-companion-apk-deploy.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/HANDOFF-2026-07-23-companion-apk-deploy.md b/docs/HANDOFF-2026-07-23-companion-apk-deploy.md index 4e0bae18..17258ac9 100644 --- a/docs/HANDOFF-2026-07-23-companion-apk-deploy.md +++ b/docs/HANDOFF-2026-07-23-companion-apk-deploy.md @@ -187,3 +187,19 @@ shapes; pick what fits the container layer best: Either way: extend the bootstrap self-heal, and verify from the MESH side (curl the ULA on 2–3 app ports incl. :8334 from vps2 or .116) — not just from the LAN. + +## DONE (00:30, dev-box agent): app direct ports live over the mesh + +Shape 2-variant implemented INSIDE the backend (`mesh_ports.rs`, `2ad57c63`): +a reconcile loop mirrors every public IPv4 listener (>=1024, bound 0.0.0.0, +no existing IPv6 any-listener) as a v6-ONLY `[::]:` forwarder to +`127.0.0.1:`, following `/proc/net/tcp*` every 15s — so app +install/remove and hardcoded companion ports (bitcoin-ui :8334) are covered +with zero container changes and no generated units; self-healing because it +lives in the binary. Strictly ADDITIVE: IPv4/LAN/Tor paths untouched, v6only +cannot intercept v4, foreign IPv6 listeners win. + +Verified FROM THE MESH (vps2 → node ULA): :8334 HTTP 200 (466ms), +:18083 200 (306ms), :50002 200 (239ms); LAN :8334 still 200. Deployed to +framework-pt + .116 (binary sha 52ac0d8a…). Direct-port apps should now +open in the companion over 5G.