1digraph {
2  console_forwarder [label = < <B>console_forwarder</B> >, penwidth = 2]
3  host_console_in [label = "internal/console.in", shape = "rectangle"]
4  host_console_out [label = "internal/console.out", shape = "rectangle"]
5  host_pty [label = "/dev/pty/###", shape = "rectangle"]
6  run_cvd
7  screen
8  user [label = "User CLI"]
9  vmm [label = "crosvm / qemu"]
10  subgraph cluster_android {
11    label = "Android VM"
12    vm_console [label = "/dev/ttyS0", shape = "rectangle"]
13    shell [label = "toybox / sh"]
14  }
15
16  run_cvd -> console_forwarder
17  user -> screen
18  screen -> host_pty -> console_forwarder [dir = "both"]
19
20  console_forwarder -> host_console_out -> vmm [dir = "back"]
21  console_forwarder -> host_console_in -> vmm
22
23  vmm -> vm_console -> shell [dir = "both"]
24}
25