digraph static {
        label="GitLab / static mirror integration architecture, SSH deploy design\nanarcat@torproject.org, september 2021"
        subgraph "clustergitlab" {
                label="GitLab"
                labelloc=top

                CI [ label="CI runners" ]
                GitLab [ label="GitLab rails\n app" shape=box ]
                GitLab -> CI [ label="dispatches jobs" ]
        }
        subgraph "clustersource" {
                label="static source"
                labelloc=bottom
                rsync [ label="files" shape=cylinder ]
                update [ label="static-update-component" ]
        }
        subgraph "clusterlegend" {
                service [ shape=box ]
                files [ shape=cylinder ]
                process [ shape=oval ]
                label="legend"
                labelloc=bottom
        }
        CI -> rsync [ label="rsync" ]
        CI -> update [ label="runs" ]
        master [ label="static master\nand mirrors..." ]
        update -> master [ label="notifies" ]
        rsync -> master [ label="pulls" ]
}
