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