The seL4 organisation on GitHub uses git-repo to manage multiple source repositories, and so there are a large number of projects to get your head around when figuring out the ecosystem.
As an experiment, I have taken the various manifest files across the org, and constructed a graph based on how frequently each pair of repositories is mentioned in a manifest together. See below:
graph G {
layout=fdp;
splines=true;
node [fontname="Arial", fontsize=11];
"sel4test-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" sel4test-manifest "];
"camkes-vm-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" camkes-vm-manifest "];
"picotcp" [style=filled, fillcolor="#2196f3", color="#333333", shape=box, label="picotcp"];
"sel4bench-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" sel4bench-manifest "];
"verification-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" verification-manifest "];
"l4v" [style=filled, fillcolor="#00bcd4", color="#333333", shape=box, label="l4v"];
"nanopb" [style=filled, fillcolor="#cddc39", color="#333333", shape=ellipse, label="nanopb\n(external)"];
"camkes-vm-examples-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" camkes-vm-examples-manifest "];
"cakeml_libs" [style=filled, fillcolor="#4caf50", color="#333333", shape=box, label="cakeml_libs"];
"musllibc" [style=filled, fillcolor="#e91e63", color="#333333", shape=box, label="musllibc"];
"camkes-arm-vm-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" camkes-arm-vm-manifest "];
"camkes-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" camkes-manifest "];
"graph-refine" [style=filled, fillcolor="#00bcd4", color="#333333", shape=box, label="graph-refine"];
"camkes-vm" [style=filled, fillcolor="#2196f3", color="#333333", shape=box, label="camkes-vm"];
"mcs-examples-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" mcs-examples-manifest "];
"HOL" [style=filled, fillcolor="#00bcd4", color="#333333", shape=box, label="HOL"];
"camkes" [style=filled, fillcolor="#4caf50", color="#333333", shape=box, label="camkes"];
"camkes-vm-images" [style=filled, fillcolor="#2196f3", color="#333333", shape=box, label="camkes-vm-images"];
"rumprun" [style=filled, fillcolor="#4caf50", color="#333333", shape=box, label="rumprun"];
"camkes-tool" [style=filled, fillcolor="#ff9800", color="#333333", shape=box, label="camkes-tool"];
"riscv-pk" [style=filled, fillcolor="#3f51b5", color="#333333", shape=box, label="riscv-pk"];
"camkes-vm-linux" [style=filled, fillcolor="#2196f3", color="#333333", shape=box, label="camkes-vm-linux"];
"polyml" [style=filled, fillcolor="#00bcd4", color="#333333", shape=box, label="polyml"];
"sel4-tutorials-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" sel4-tutorials-manifest "];
"isabelle" [style=filled, fillcolor="#00bcd4", color="#333333", shape=box, label="isabelle"];
"lwip" [style=filled, fillcolor="#4caf50", color="#333333", shape=box, label="lwip"];
"sel4-tutorials" [style=filled, fillcolor="#3f51b5", color="#333333", shape=box, label="sel4-tutorials"];
"seL4" [style=filled, fillcolor="#f44336", color="#333333", shape=box, label="seL4"];
"camkes-vm-examples" [style=filled, fillcolor="#2196f3", color="#333333", shape=box, label="camkes-vm-examples"];
"libzmq" [style=filled, fillcolor="#2196f3", color="#333333", shape=ellipse, label="libzmq\n(external)"];
"microkit" [style=filled, fillcolor="#9c27b0", color="#333333", shape=box, label="microkit"];
"sel4runtime" [style=filled, fillcolor="#ff9800", color="#333333", shape=box, label="sel4runtime"];
"mcs-examples" [style=filled, fillcolor="#3f51b5", color="#333333", shape=box, label="mcs-examples"];
"global-components" [style=filled, fillcolor="#ff9800", color="#333333", shape=box, label="global-components"];
"microkit-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" microkit-manifest "];
"capdl" [style=filled, fillcolor="#ff9800", color="#333333", shape=box, label="capdl"];
"pruner" [style=filled, fillcolor="#4caf50", color="#333333", shape=box, label="pruner"];
"opensbi" [style=filled, fillcolor="#cddc39", color="#333333", shape=ellipse, label="opensbi\n(external)"];
"sel4webserver" [style=filled, fillcolor="#3f51b5", color="#333333", shape=box, label="sel4webserver"];
"sel4bench" [style=filled, fillcolor="#cddc39", color="#333333", shape=box, label="sel4bench"];
"sel4webserver-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" sel4webserver-manifest "];
"refos" [style=filled, fillcolor="#9e9e9e", color="#333333", shape=box, label="refos"];
"projects_libs" [style=filled, fillcolor="#ff9800", color="#333333", shape=box, label="projects_libs"];
"sel4test" [style=filled, fillcolor="#cddc39", color="#333333", shape=box, label="sel4test"];
"polly" [style=filled, fillcolor="#2196f3", color="#333333", shape=ellipse, label="polly\n(external)"];
"seL4_projects_libs" [style=filled, fillcolor="#ff9800", color="#333333", shape=box, label="seL4_projects_libs"];
"seL4_tools" [style=filled, fillcolor="#e91e63", color="#333333", shape=box, label="seL4_tools"];
"seL4_libs" [style=filled, fillcolor="#e91e63", color="#333333", shape=box, label="seL4_libs"];
"util_libs" [style=filled, fillcolor="#e91e63", color="#333333", shape=box, label="util_libs"];
"refos-manifest" [style=filled, fillcolor="#ffffff", color="#333333", shape=folder, label=" refos-manifest "];
"lwip" -- "pruner" [weight="25.000", color="#787878", penwidth="3.758"];
"musllibc" -- "nanopb" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"camkes-arm-vm-manifest" -- "global-components" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"rumprun" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"picotcp" -- "rumprun" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"camkes-vm-examples" -- "camkes-vm-examples-manifest" [weight="25.000", color="#787878", penwidth="3.758"];
"graph-refine" -- "polyml" [weight="100.000", color="#101010", penwidth="5.115"];
"HOL" -- "polyml" [weight="100.000", color="#101010", penwidth="5.115"];
"sel4webserver" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"sel4bench" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"mcs-examples" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"polly" -- "seL4" [weight="2.778", color="#bebebe", penwidth="1.829"];
"camkes" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"seL4" -- "util_libs" [weight="69.444", color="#333333", penwidth="4.755"];
"camkes-vm-manifest" -- "picotcp" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"nanopb" -- "seL4_tools" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"seL4_tools" -- "sel4webserver-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"sel4test-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"seL4" -- "sel4test" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-tool" -- "mcs-examples-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-arm-vm-manifest" -- "camkes-tool" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"picotcp" -- "seL4_libs" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"camkes" -- "musllibc" [weight="1.000", color="#cccccc", penwidth="1.193"];
"global-components" -- "libzmq" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"sel4webserver-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"refos-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"seL4" -- "sel4webserver-manifest" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"seL4_libs" -- "sel4test-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"projects_libs" -- "pruner" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"nanopb" -- "sel4bench-manifest" [weight="25.000", color="#787878", penwidth="3.758"];
"libzmq" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"polyml" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"libzmq" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"riscv-pk" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-images" -- "libzmq" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"refos-manifest" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-tool" -- "sel4-tutorials-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"seL4" -- "sel4-tutorials-manifest" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"musllibc" -- "opensbi" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"lwip" -- "musllibc" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"camkes-tool" -- "seL4_projects_libs" [weight="44.444", color="#565656", penwidth="4.316"];
"capdl" -- "lwip" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"camkes-vm" -- "capdl" [weight="51.020", color="#4c4c4c", penwidth="4.452"];
"sel4bench-manifest" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"refos-manifest" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"cakeml_libs" -- "camkes-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"lwip" -- "picotcp" [weight="44.444", color="#565656", penwidth="4.316"];
"camkes-tool" -- "projects_libs" [weight="56.250", color="#444444", penwidth="4.547"];
"opensbi" -- "pruner" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"camkes-vm-images" -- "capdl" [weight="18.367", color="#878787", penwidth="3.464"];
"polyml" -- "verification-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-tool" -- "camkes-vm-examples-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"libzmq" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"projects_libs" -- "util_libs" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"mcs-examples-manifest" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-images" -- "lwip" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-vm" -- "sel4-tutorials" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"opensbi" -- "seL4_tools" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"camkes-arm-vm-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"cakeml_libs" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"opensbi" -- "seL4_projects_libs" [weight="14.062", color="#929292", penwidth="3.212"];
"camkes-tool" -- "musllibc" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"capdl" -- "sel4-tutorials" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"seL4_libs" -- "sel4test" [weight="1.000", color="#cccccc", penwidth="1.193"];
"seL4" -- "sel4test-manifest" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"capdl" -- "rumprun" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"musllibc" -- "polly" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"musllibc" -- "riscv-pk" [weight="1.000", color="#cccccc", penwidth="1.193"];
"libzmq" -- "polly" [weight="25.000", color="#787878", penwidth="3.758"];
"mcs-examples-manifest" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm" -- "seL4_libs" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes-vm-examples-manifest" -- "camkes-vm-linux" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-vm" -- "sel4runtime" [weight="19.753", color="#848484", penwidth="3.533"];
"projects_libs" -- "sel4bench-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-arm-vm-manifest" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-linux" -- "seL4_projects_libs" [weight="25.000", color="#787878", penwidth="3.758"];
"lwip" -- "polly" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"camkes-vm-images" -- "picotcp" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"seL4_libs" -- "seL4_tools" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-arm-vm-manifest" -- "camkes-vm" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"camkes-vm-images" -- "projects_libs" [weight="18.367", color="#878787", penwidth="3.464"];
"camkes-vm-examples-manifest" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"nanopb" -- "seL4_libs" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"nanopb" -- "seL4" [weight="2.778", color="#bebebe", penwidth="1.829"];
"global-components" -- "sel4webserver-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-vm-examples-manifest" -- "polly" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes-tool" -- "seL4" [weight="34.028", color="#676767", penwidth="4.056"];
"lwip" -- "util_libs" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"global-components" -- "seL4" [weight="34.028", color="#676767", penwidth="4.056"];
"seL4_libs" -- "sel4runtime" [weight="64.000", color="#3a3a3a", penwidth="4.674"];
"projects_libs" -- "seL4" [weight="34.028", color="#676767", penwidth="4.056"];
"camkes-vm-manifest" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-images" -- "seL4_libs" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"global-components" -- "opensbi" [weight="1.235", color="#c9c9c9", penwidth="1.304"];
"sel4test-manifest" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"global-components" -- "sel4webserver" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"graph-refine" -- "verification-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"cakeml_libs" -- "camkes" [weight="100.000", color="#101010", penwidth="5.115"];
"capdl" -- "opensbi" [weight="1.235", color="#c9c9c9", penwidth="1.304"];
"camkes-vm-images" -- "camkes-vm-linux" [weight="56.250", color="#444444", penwidth="4.547"];
"global-components" -- "mcs-examples-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"global-components" -- "musllibc" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"camkes-vm-linux" -- "picotcp" [weight="2.778", color="#bebebe", penwidth="1.829"];
"camkes-vm-linux" -- "polly" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes-arm-vm-manifest" -- "projects_libs" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"seL4" -- "sel4-tutorials" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"musllibc" -- "seL4_tools" [weight="100.000", color="#101010", penwidth="5.115"];
"mcs-examples-manifest" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"mcs-examples" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"global-components" -- "pruner" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"isabelle" -- "l4v" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-vm-images" -- "util_libs" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"camkes-vm-examples" -- "sel4runtime" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-vm" -- "musllibc" [weight="25.000", color="#787878", penwidth="3.758"];
"projects_libs" -- "sel4-tutorials-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"opensbi" -- "projects_libs" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-vm-linux" -- "seL4" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"camkes-vm-examples-manifest" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"musllibc" -- "refos" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-arm-vm-manifest" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"pruner" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes" -- "pruner" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-arm-vm-manifest" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-tool" -- "seL4_tools" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"camkes-vm-examples" -- "polly" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"sel4runtime" -- "sel4test" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"sel4bench-manifest" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-tool" -- "camkes-vm" [weight="51.020", color="#4c4c4c", penwidth="4.452"];
"musllibc" -- "sel4-tutorials" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-examples-manifest" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-manifest" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"microkit" -- "microkit-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-vm-images" -- "seL4_tools" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"global-components" -- "seL4_libs" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"libzmq" -- "projects_libs" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-vm-examples-manifest" -- "projects_libs" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"HOL" -- "verification-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"capdl" -- "util_libs" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"mcs-examples-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes" -- "lwip" [weight="25.000", color="#787878", penwidth="3.758"];
"riscv-pk" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"cakeml_libs" -- "global-components" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"pruner" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"global-components" -- "sel4runtime" [weight="44.444", color="#565656", penwidth="4.316"];
"camkes-tool" -- "camkes-vm-images" [weight="18.367", color="#878787", penwidth="3.464"];
"refos" -- "refos-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-tool" -- "lwip" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"pruner" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"mcs-examples" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm" -- "libzmq" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"camkes-arm-vm-manifest" -- "camkes-vm-images" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"opensbi" -- "sel4bench" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"camkes-vm-examples" -- "seL4_projects_libs" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-manifest" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"capdl" -- "seL4" [weight="34.028", color="#676767", penwidth="4.056"];
"camkes-vm-examples" -- "capdl" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"microkit-manifest" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-vm-linux" -- "musllibc" [weight="16.000", color="#8d8d8d", penwidth="3.333"];
"sel4bench" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-images" -- "polly" [weight="6.250", color="#acacac", penwidth="2.481"];
"cakeml_libs" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"cakeml_libs" -- "rumprun" [weight="100.000", color="#101010", penwidth="5.115"];
"mcs-examples-manifest" -- "riscv-pk" [weight="100.000", color="#101010", penwidth="5.115"];
"riscv-pk" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-vm-manifest" -- "capdl" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"musllibc" -- "seL4_projects_libs" [weight="64.000", color="#3a3a3a", penwidth="4.674"];
"camkes-tool" -- "rumprun" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-tool" -- "sel4-tutorials" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"seL4_libs" -- "sel4webserver-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"capdl" -- "mcs-examples-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"riscv-pk" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"mcs-examples-manifest" -- "musllibc" [weight="1.000", color="#cccccc", penwidth="1.193"];
"global-components" -- "polly" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"camkes-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-images" -- "musllibc" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"polly" -- "projects_libs" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"opensbi" -- "sel4runtime" [weight="14.062", color="#929292", penwidth="3.212"];
"musllibc" -- "seL4" [weight="69.444", color="#333333", penwidth="4.755"];
"sel4bench-manifest" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"microkit" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"refos" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"sel4test" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"seL4_libs" -- "sel4-tutorials-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"graph-refine" -- "l4v" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-arm-vm-manifest" -- "musllibc" [weight="1.000", color="#cccccc", penwidth="1.193"];
"mcs-examples" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"sel4runtime" -- "sel4webserver" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"sel4runtime" -- "util_libs" [weight="64.000", color="#3a3a3a", penwidth="4.674"];
"global-components" -- "sel4-tutorials-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-vm-examples" -- "seL4_tools" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"nanopb" -- "util_libs" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"mcs-examples" -- "musllibc" [weight="1.000", color="#cccccc", penwidth="1.193"];
"picotcp" -- "seL4" [weight="6.250", color="#acacac", penwidth="2.481"];
"capdl" -- "libzmq" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"seL4_libs" -- "seL4_projects_libs" [weight="64.000", color="#3a3a3a", penwidth="4.674"];
"camkes-tool" -- "pruner" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"seL4" -- "seL4_libs" [weight="69.444", color="#333333", penwidth="4.755"];
"seL4_projects_libs" -- "sel4test" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"cakeml_libs" -- "musllibc" [weight="1.000", color="#cccccc", penwidth="1.193"];
"musllibc" -- "sel4runtime" [weight="64.000", color="#3a3a3a", penwidth="4.674"];
"camkes-vm-examples" -- "musllibc" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"cakeml_libs" -- "pruner" [weight="100.000", color="#101010", penwidth="5.115"];
"musllibc" -- "util_libs" [weight="100.000", color="#101010", penwidth="5.115"];
"libzmq" -- "picotcp" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"capdl" -- "sel4runtime" [weight="44.444", color="#565656", penwidth="4.316"];
"lwip" -- "rumprun" [weight="25.000", color="#787878", penwidth="3.758"];
"sel4bench" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm" -- "seL4_projects_libs" [weight="19.753", color="#848484", penwidth="3.533"];
"musllibc" -- "sel4-tutorials-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-manifest" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"capdl" -- "sel4webserver-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"capdl" -- "sel4webserver" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"global-components" -- "util_libs" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"seL4" -- "verification-manifest" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"opensbi" -- "picotcp" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"camkes-vm-linux" -- "sel4webserver-manifest" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-vm" -- "seL4_tools" [weight="25.000", color="#787878", penwidth="3.758"];
"isabelle" -- "polyml" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-arm-vm-manifest" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-tool" -- "mcs-examples" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"libzmq" -- "musllibc" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-examples-manifest" -- "lwip" [weight="25.000", color="#787878", penwidth="3.758"];
"HOL" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-vm-images" -- "sel4webserver" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"seL4" -- "sel4bench-manifest" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"nanopb" -- "sel4runtime" [weight="6.250", color="#acacac", penwidth="2.481"];
"cakeml_libs" -- "camkes-tool" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"isabelle" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"global-components" -- "mcs-examples" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"global-components" -- "lwip" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"seL4" -- "seL4_tools" [weight="69.444", color="#333333", penwidth="4.755"];
"seL4_libs" -- "util_libs" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-vm-examples" -- "seL4" [weight="2.778", color="#bebebe", penwidth="1.829"];
"cakeml_libs" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-linux" -- "sel4webserver" [weight="6.250", color="#acacac", penwidth="2.481"];
"lwip" -- "sel4runtime" [weight="6.250", color="#acacac", penwidth="2.481"];
"HOL" -- "isabelle" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes" -- "camkes-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"polly" -- "seL4_tools" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"picotcp" -- "projects_libs" [weight="6.250", color="#acacac", penwidth="2.481"];
"capdl" -- "pruner" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"cakeml_libs" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"polly" -- "sel4runtime" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-vm" -- "sel4webserver-manifest" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"opensbi" -- "util_libs" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"polly" -- "seL4_projects_libs" [weight="6.250", color="#acacac", penwidth="2.481"];
"lwip" -- "seL4_libs" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"camkes-vm-linux" -- "global-components" [weight="32.653", color="#6a6a6a", penwidth="4.016"];
"camkes-arm-vm-manifest" -- "capdl" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-vm-examples" -- "lwip" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"l4v" -- "polyml" [weight="100.000", color="#101010", penwidth="5.115"];
"musllibc" -- "sel4webserver-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"nanopb" -- "seL4_projects_libs" [weight="6.250", color="#acacac", penwidth="2.481"];
"rumprun" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"sel4runtime" -- "seL4_tools" [weight="64.000", color="#3a3a3a", penwidth="4.674"];
"seL4" -- "sel4runtime" [weight="44.444", color="#565656", penwidth="4.316"];
"global-components" -- "sel4-tutorials" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-vm" -- "picotcp" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"cakeml_libs" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-vm-linux" -- "lwip" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"musllibc" -- "rumprun" [weight="1.000", color="#cccccc", penwidth="1.193"];
"capdl" -- "musllibc" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"camkes-vm-images" -- "sel4webserver-manifest" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"musllibc" -- "seL4_libs" [weight="100.000", color="#101010", penwidth="5.115"];
"musllibc" -- "refos-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-examples-manifest" -- "picotcp" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"nanopb" -- "sel4test" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes-vm-examples-manifest" -- "capdl" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"riscv-pk" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-vm-linux" -- "seL4_tools" [weight="16.000", color="#8d8d8d", penwidth="3.333"];
"seL4_tools" -- "sel4webserver" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm" -- "camkes-vm-manifest" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"camkes-manifest" -- "projects_libs" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"seL4_projects_libs" -- "sel4webserver" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"projects_libs" -- "seL4_tools" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"sel4-tutorials" -- "sel4-tutorials-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"lwip" -- "seL4_projects_libs" [weight="6.250", color="#acacac", penwidth="2.481"];
"rumprun" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"polly" -- "sel4-tutorials-manifest" [weight="25.000", color="#787878", penwidth="3.758"];
"pruner" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"seL4_tools" -- "util_libs" [weight="100.000", color="#101010", penwidth="5.115"];
"sel4bench" -- "sel4bench-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-tool" -- "picotcp" [weight="18.367", color="#878787", penwidth="3.464"];
"mcs-examples" -- "riscv-pk" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-vm-examples-manifest" -- "musllibc" [weight="1.000", color="#cccccc", penwidth="1.193"];
"musllibc" -- "sel4test" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-arm-vm-manifest" -- "camkes-vm-linux" [weight="6.250", color="#acacac", penwidth="2.481"];
"sel4runtime" -- "sel4-tutorials" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-tool" -- "sel4webserver-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-manifest" -- "camkes-tool" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-vm-examples-manifest" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"libzmq" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-manifest" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-vm-examples" -- "libzmq" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes-arm-vm-manifest" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-examples" -- "camkes-vm-images" [weight="44.444", color="#565656", penwidth="4.316"];
"riscv-pk" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"capdl" -- "sel4-tutorials-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-arm-vm-manifest" -- "camkes-vm-examples" [weight="25.000", color="#787878", penwidth="3.758"];
"musllibc" -- "projects_libs" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"lwip" -- "seL4" [weight="2.778", color="#bebebe", penwidth="1.829"];
"camkes-vm-images" -- "seL4" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-manifest" -- "rumprun" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-vm-linux" -- "seL4_libs" [weight="16.000", color="#8d8d8d", penwidth="3.333"];
"camkes-vm" -- "global-components" [weight="51.020", color="#4c4c4c", penwidth="4.452"];
"camkes-tool" -- "camkes-vm-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"mcs-examples" -- "mcs-examples-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"refos" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"polly" -- "sel4-tutorials" [weight="25.000", color="#787878", penwidth="3.758"];
"seL4_projects_libs" -- "sel4-tutorials-manifest" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-vm-manifest" -- "global-components" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"picotcp" -- "sel4runtime" [weight="4.938", color="#b2b2b2", penwidth="2.281"];
"polly" -- "util_libs" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"sel4bench" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"seL4" -- "sel4webserver" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-vm-linux" -- "util_libs" [weight="16.000", color="#8d8d8d", penwidth="3.333"];
"camkes-tool" -- "riscv-pk" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"cakeml_libs" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-linux" -- "capdl" [weight="32.653", color="#6a6a6a", penwidth="4.016"];
"camkes-vm-examples-manifest" -- "camkes-vm-images" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"nanopb" -- "opensbi" [weight="44.444", color="#565656", penwidth="4.316"];
"nanopb" -- "sel4test-manifest" [weight="25.000", color="#787878", penwidth="3.758"];
"mcs-examples" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"lwip" -- "projects_libs" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"camkes-vm" -- "camkes-vm-examples" [weight="16.000", color="#8d8d8d", penwidth="3.333"];
"mcs-examples-manifest" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"sel4-tutorials" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"opensbi" -- "seL4" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-manifest" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"cakeml_libs" -- "lwip" [weight="25.000", color="#787878", penwidth="3.758"];
"refos" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"pruner" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"cakeml_libs" -- "picotcp" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"graph-refine" -- "isabelle" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes" -- "projects_libs" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"mcs-examples" -- "projects_libs" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-manifest" -- "capdl" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"l4v" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"capdl" -- "riscv-pk" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"rumprun" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-manifest" -- "musllibc" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm" -- "projects_libs" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes-manifest" -- "opensbi" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"camkes-vm" -- "camkes-vm-linux" [weight="64.000", color="#3a3a3a", penwidth="4.674"];
"musllibc" -- "sel4webserver" [weight="1.000", color="#cccccc", penwidth="1.193"];
"sel4bench-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-tool" -- "camkes-vm-examples" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"pruner" -- "rumprun" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-manifest" -- "global-components" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"projects_libs" -- "sel4webserver-manifest" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes" -- "camkes-tool" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-tool" -- "polly" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"sel4bench" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-vm-examples-manifest" -- "global-components" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"global-components" -- "seL4_projects_libs" [weight="44.444", color="#565656", penwidth="4.316"];
"projects_libs" -- "rumprun" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"projects_libs" -- "riscv-pk" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"seL4_tools" -- "sel4-tutorials-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"capdl" -- "projects_libs" [weight="56.250", color="#444444", penwidth="4.547"];
"sel4webserver" -- "sel4webserver-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-vm-images" -- "seL4_projects_libs" [weight="14.062", color="#929292", penwidth="3.212"];
"musllibc" -- "sel4bench-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"projects_libs" -- "sel4runtime" [weight="76.562", color="#2a2a2a", penwidth="4.851"];
"sel4test" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes" -- "rumprun" [weight="100.000", color="#101010", penwidth="5.115"];
"musllibc" -- "sel4test-manifest" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm" -- "sel4webserver" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"camkes-vm-examples" -- "camkes-vm-linux" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes-tool" -- "capdl" [weight="100.000", color="#101010", penwidth="5.115"];
"projects_libs" -- "sel4webserver" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"capdl" -- "seL4_projects_libs" [weight="44.444", color="#565656", penwidth="4.316"];
"opensbi" -- "rumprun" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"opensbi" -- "sel4test" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"capdl" -- "polly" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"picotcp" -- "util_libs" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"pruner" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-vm-examples" -- "util_libs" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"libzmq" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"seL4_projects_libs" -- "util_libs" [weight="64.000", color="#3a3a3a", penwidth="4.674"];
"camkes-vm-images" -- "sel4runtime" [weight="14.062", color="#929292", penwidth="3.212"];
"camkes-vm-manifest" -- "musllibc" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-images" -- "global-components" [weight="18.367", color="#878787", penwidth="3.464"];
"camkes-tool" -- "camkes-vm-linux" [weight="32.653", color="#6a6a6a", penwidth="4.016"];
"seL4" -- "seL4_projects_libs" [weight="44.444", color="#565656", penwidth="4.316"];
"camkes-manifest" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-vm-linux" -- "projects_libs" [weight="32.653", color="#6a6a6a", penwidth="4.016"];
"camkes-vm" -- "camkes-vm-examples-manifest" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"refos-manifest" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"graph-refine" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"seL4" -- "sel4bench" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"lwip" -- "opensbi" [weight="6.250", color="#acacac", penwidth="2.481"];
"musllibc" -- "picotcp" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"camkes-vm-linux" -- "sel4runtime" [weight="25.000", color="#787878", penwidth="3.758"];
"graph-refine" -- "HOL" [weight="100.000", color="#101010", penwidth="5.115"];
"mcs-examples" -- "seL4_tools" [weight="1.000", color="#cccccc", penwidth="1.193"];
"mcs-examples-manifest" -- "projects_libs" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-vm-examples" -- "seL4_libs" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"sel4runtime" -- "sel4-tutorials-manifest" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"refos" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"opensbi" -- "seL4_libs" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"camkes" -- "capdl" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-tool" -- "seL4_libs" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"camkes" -- "opensbi" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"opensbi" -- "sel4bench-manifest" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"capdl" -- "seL4_tools" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"camkes-manifest" -- "picotcp" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"global-components" -- "riscv-pk" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"camkes-vm-linux" -- "libzmq" [weight="6.250", color="#acacac", penwidth="2.481"];
"seL4_projects_libs" -- "sel4test-manifest" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"cakeml_libs" -- "projects_libs" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"sel4runtime" -- "sel4webserver-manifest" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-vm-examples" -- "global-components" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"camkes-vm" -- "util_libs" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes" -- "global-components" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"capdl" -- "picotcp" [weight="18.367", color="#878787", penwidth="3.464"];
"camkes-vm" -- "sel4-tutorials-manifest" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"musllibc" -- "sel4bench" [weight="1.000", color="#cccccc", penwidth="1.193"];
"capdl" -- "mcs-examples" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"projects_libs" -- "seL4_libs" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"camkes-tool" -- "libzmq" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"seL4_projects_libs" -- "sel4runtime" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes-vm-examples-manifest" -- "libzmq" [weight="100.000", color="#101010", penwidth="5.115"];
"picotcp" -- "pruner" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"camkes-tool" -- "sel4webserver" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"picotcp" -- "polly" [weight="6.250", color="#acacac", penwidth="2.481"];
"capdl" -- "seL4_libs" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"camkes-vm-linux" -- "sel4-tutorials" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes-vm-examples-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"sel4runtime" -- "sel4test-manifest" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-tool" -- "opensbi" [weight="1.235", color="#c9c9c9", penwidth="1.304"];
"global-components" -- "projects_libs" [weight="56.250", color="#444444", penwidth="4.547"];
"picotcp" -- "seL4_tools" [weight="9.000", color="#a2a2a2", penwidth="2.803"];
"libzmq" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"rumprun" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"seL4_libs" -- "sel4webserver" [weight="1.000", color="#cccccc", penwidth="1.193"];
"musllibc" -- "pruner" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm-linux" -- "sel4-tutorials-manifest" [weight="6.250", color="#acacac", penwidth="2.481"];
"seL4_tools" -- "sel4-tutorials" [weight="1.000", color="#cccccc", penwidth="1.193"];
"picotcp" -- "seL4_projects_libs" [weight="4.938", color="#b2b2b2", penwidth="2.281"];
"camkes-vm" -- "polly" [weight="16.000", color="#8d8d8d", penwidth="3.333"];
"camkes-manifest" -- "pruner" [weight="100.000", color="#101010", penwidth="5.115"];
"cakeml_libs" -- "opensbi" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"opensbi" -- "sel4test-manifest" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"mcs-examples-manifest" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"camkes-vm-examples" -- "picotcp" [weight="6.250", color="#acacac", penwidth="2.481"];
"camkes" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"seL4_projects_libs" -- "sel4webserver-manifest" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"projects_libs" -- "sel4bench" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"rumprun" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-vm" -- "lwip" [weight="2.778", color="#bebebe", penwidth="1.829"];
"seL4_projects_libs" -- "seL4_tools" [weight="64.000", color="#3a3a3a", penwidth="4.674"];
"camkes-tool" -- "sel4runtime" [weight="44.444", color="#565656", penwidth="4.316"];
"global-components" -- "rumprun" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"projects_libs" -- "seL4_projects_libs" [weight="76.562", color="#2a2a2a", penwidth="4.851"];
"global-components" -- "seL4_tools" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"camkes-tool" -- "util_libs" [weight="49.000", color="#4f4f4f", penwidth="4.412"];
"camkes-manifest" -- "lwip" [weight="25.000", color="#787878", penwidth="3.758"];
"polly" -- "seL4_libs" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"camkes-vm-examples" -- "projects_libs" [weight="8.163", color="#a5a5a5", penwidth="2.715"];
"seL4_libs" -- "sel4-tutorials" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes" -- "picotcp" [weight="11.111", color="#9b9b9b", penwidth="2.994"];
"nanopb" -- "sel4bench" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes-vm-examples-manifest" -- "seL4_projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"lwip" -- "seL4_tools" [weight="4.000", color="#b7b7b7", penwidth="2.109"];
"libzmq" -- "lwip" [weight="25.000", color="#787878", penwidth="3.758"];
"camkes-vm" -- "camkes-vm-images" [weight="36.000", color="#646464", penwidth="4.111"];
"nanopb" -- "projects_libs" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"l4v" -- "verification-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"seL4_projects_libs" -- "sel4-tutorials" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-vm" -- "seL4" [weight="17.361", color="#8a8a8a", penwidth="3.410"];
"HOL" -- "l4v" [weight="100.000", color="#101010", penwidth="5.115"];
"capdl" -- "global-components" [weight="100.000", color="#101010", penwidth="5.115"];
"camkes" -- "seL4" [weight="0.694", color="#cfcfcf", penwidth="1.027"];
"sel4-tutorials-manifest" -- "util_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"projects_libs" -- "sel4-tutorials" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"sel4bench-manifest" -- "sel4runtime" [weight="1.562", color="#c6c6c6", penwidth="1.441"];
"camkes-vm-manifest" -- "seL4_libs" [weight="1.000", color="#cccccc", penwidth="1.193"];
"camkes-tool" -- "global-components" [weight="100.000", color="#101010", penwidth="5.115"];
"cakeml_libs" -- "capdl" [weight="2.041", color="#c3c3c3", penwidth="1.612"];
"sel4test" -- "sel4test-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
"global-components" -- "picotcp" [weight="18.367", color="#878787", penwidth="3.464"];
"isabelle" -- "verification-manifest" [weight="100.000", color="#101010", penwidth="5.115"];
}
[This may render badly when syndicated outside of my blog; and also on small screens. And probably large screens. I’ve attempted to make sure there’s a non-JS fallback – on my site with JS enabled, if you hover over a node, it should highlight connected nodes.]
The colouring of the nodes is mostly manual; I experimented with graph clustering algorithms but have not found a satisfactory result so far. Still, some clusters are obvious:
-
Kernel – the
seL4microkernel proper. This often but not always co-exists with the main cluster of core libraries, but it is pulled away slightly by the verification and microkit manifests. -
Verification – the verification repositories (
l4v,HOL,graph-refine,polyml,isabelle) form a very distinct group. These are connected only to the seL4 microkernel itself, which is the only component formally verified. -
Microkit –
microkitis a newer operating system framework that does not use CAmkES, so stands apart from the rest of the pack. I chose to scope this work to the seL4 org, so the LionsOS ecosystem and sDDF which are maintained by Trustworthy Systems are not shown. Also not linked isrust-sel4, because this modern world isn’t using git-repo in the main to manage its repositories. -
RefOS – I’d not come across
refosbefore, but it appears to be an example OS from 2021 built on the seL4 kernel.
It’s quite hard to pull apart the CAmkES framework and the core
libraries; there are definitely some which are more associated with VM
management, but the overall shape of this co-occurence data is a messy
ball in the middle with some outliers in orbit. One observation is
that camkes is correctly identified as more peripheral than
camkes-tool, which contains the actual core CAmkES code.
Reflecting on this approach, in hindsight I’m surprised that using co-occurences worked as well as it did – there was no attempt to actually inspect the code and find direct mentions of other code e.g. library header dependencies. As the newer microkit effort largely eschews git-repo, better results might be found by actually taking that more detailed approach, so that graph edges could represent real dependencies between two packages. Additionally, this could allow diving into the various libraries held in the different ’libs’ repos, to get a more granular graph of relationships between them.
However, I think I spent more time on making it possible to render graphviz graphs easily on my blog than actually gaining any insight into the codebase!