graph { graph [rankdir=BT; nodesep=1.0; ranksep=1.0] node [shape=box] client -- relay [label="HTTPS"] client -- relay [label="9P/WS"] relay -- shop [label="HTTP\nstatic html"] relay --api [label="HTTP\nhtmx frags"] relay -- api [label="9P/WS\napi"] relay --auth [label="HTTP\nforms"] api -- authfs [label="9P/TCP"] auth --authfs [label="9P/TCP"] subgraph cluster_lan { relay, shop, api, auth authfs [shape=cylinder] } }