1digraph { 2 rankdir = "BT" 3 audio_server [label = "internal/audio_server.sock", shape = "rectangle"] 4 browser [label = "Browser"] 5 confirmationui_sign [label = "internal/confui_sign.sock", shape = "rectangle"] 6 gnss_grpc_proxy 7 gnss_grpc_server [label = "GNSS gRPC server", shape = "rectangle"] 8 host_bluetooth [label = "Host bluetooth (netsim / rootcanal)"] 9 host_confirmationui_in [label = "internal/confui_fifo_vm.in", shape = "rectangle"] 10 host_confirmationui_out [label = "internal/confui_fifo_vm.out", shape = "rectangle"] 11 keyboard_server [label = "internal/keyboard.sock", shape = "rectangle"] 12 touch_server [label = "internal/touch_N.sock", shape = "rectangle"] 13 run_cvd 14 operator_proxy 15 secure_env 16 socket_vsock_proxy 17 wayland_socket [label = "internal/frames.sock", shape = "rectangle"] 18 webrtc [label = < <B>webrtc</B> >, penwidth = 2] 19 vmm [label = "crosvm"] 20 21 subgraph cluster_host { 22 label = "cuttlefish-user Debian package" 23 24 operator [label = "Host Orchestrator"] 25 operator_socket [label = "/run/cuttlefish/operator", shape = "rectangle"] 26 } 27 28 subgraph cluster_android { 29 label = "Cuttlefish VM" 30 subgraph devices { 31 rank = same; 32 confirmationui_console [label = "/dev/hvc8", shape = "rectangle"] 33 keyboard_input [label = "/dev/input/event3 | keyboard", shape = "rectangle"] 34 touch_input [label = "/dev/input/event2 | touch", shape = "rectangle"] 35 } 36 adb_daemon [label = "ADB Daemon"] 37 confirmationui [label = "ConfirmationUI HAL"] 38 } 39 40 operator -> browser [label = < <I>HTTPS</I> (1443) >, dir = both] 41 webrtc -> browser [label = < <I>WebRTC</I> >, dir = both] 42 operator_proxy -> browser [label = < <I>HTTPS</I> (8443) >, dir = both] 43 operator -> operator_proxy [label = < <I>HTTP</I> (1080) >, dir = both] 44 operator_socket -> operator [label = < <I>JSON</I> >, dir = both] 45 webrtc -> operator_socket [label = < <I>JSON</I> >, dir = both] 46 webrtc -> run_cvd [dir = back] 47 webrtc -> host_bluetooth 48 49 webrtc -> confirmationui_sign -> secure_env [dir = both] 50 webrtc -> gnss_grpc_server -> gnss_grpc_proxy [dir = both, label = "TCP"] 51 52 adb_daemon -> socket_vsock_proxy -> webrtc [dir = both] 53 54 audio_server -> webrtc [dir = both] 55 vmm -> audio_server [dir = both] 56 57 vmm -> wayland_socket -> webrtc [label = < <I>Wayland</I> >, dir = both] 58 59 vmm -> keyboard_server -> webrtc [dir = back] 60 61 vmm -> touch_server -> webrtc [dir = back] 62 63 vmm -> host_confirmationui_out -> webrtc 64 vmm -> host_confirmationui_in -> webrtc [dir = back] 65 66 confirmationui -> confirmationui_console -> vmm [dir = both] 67 68 keyboard_input -> vmm 69 touch_input -> vmm 70} 71