// house = application
// circle (default) = service
// box = daemon
// diamond = library
// black line = dependency
// blue line = extension via plugin
// red line = possibly useful
// dashed = in planning

// this is what we have...o
digraph tng {
  // splines = true;
  compound=true;
  subgraph cluster0 {
    label="Our peer";
    style=dashed;
    color=black;
  subgraph cluster1 {
    style=solid;
    color=black;
    tcp;
    udp;
    others [style=dotted];
    label="Communicators";
  }
  subgraph cluster2 {
    style=solid;
    color=black;
    dht;
    fs;
    cadet;
    label="Applications";
  }
  cadet -> core [ltail=cluster2,label="Communicate with peers"];
  dht -> transport [ltail=cluster2,label="Suggest connection to peer"];
  core -> transport [label="Send/receive messages via secure channel"];
  transport -> tcp [lhead=cluster1,dir=both,label="Offer connectivity/channel to other peer"];
  udp -> nat [label="Get addresses"];
  tcp -> nat;
  }
  subgraph cluster3 {
    rank = sink;
    style=dashed;
    color=black;
    peer3;
    peer1;
    peer2;
    label="Other peers";
  }


  tcp -> peer1 [dir=both];
  udp -> peer2;
  transport->peer1 [style=invis];
}
