Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/holger

.nornir/assets/holger-tiers.svg

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 860 430" font-family="-apple-system,Segoe UI,Roboto,sans-serif" font-size="14">
  <defs>
    <marker id="a" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto">
      <path d="M0,0 L7,3 L0,6 Z" fill="#555"/>
    </marker>
  </defs>
  <text x="30" y="28" font-weight="700" font-size="16">Holger — one engine, three build variants (crate boundary, not #[cfg])</text>

  <!-- three variant boxes across the top -->
  <!-- embedded -->
  <rect x="30" y="60" width="240" height="92" rx="8" fill="#eef3fb" stroke="#2b5fb3" stroke-width="1.5"/>
  <text x="150" y="86" text-anchor="middle" font-weight="600">embedded  (library)</text>
  <text x="150" y="106" text-anchor="middle" fill="#555" font-size="12">no process — linked in-process</text>
  <text x="150" y="124" text-anchor="middle" fill="#555" font-size="12">by a host (nornir embed-holger)</text>
  <text x="150" y="142" text-anchor="middle" fill="#2b5fb3" font-size="12">✅ built · direct Rust, no socket</text>
  <!-- mini -->
  <rect x="310" y="60" width="240" height="92" rx="8" fill="#eefaf0" stroke="#2f8f4e" stroke-width="1.5"/>
  <text x="430" y="86" text-anchor="middle" font-weight="600">mini  (static-holger)</text>
  <text x="430" y="106" text-anchor="middle" fill="#555" font-size="12">stripped, read-only, zero egress</text>
  <text x="430" y="124" text-anchor="middle" fill="#555" font-size="12">airgap / red-zone SBC</text>
  <text x="430" y="142" text-anchor="middle" fill="#c26a2b" font-size="12">🧭 design · crate-split refactor</text>
  <!-- full -->
  <rect x="590" y="60" width="240" height="92" rx="8" fill="#fdf2ec" stroke="#c26a2b" stroke-width="1.5"/>
  <text x="710" y="86" text-anchor="middle" font-weight="600">full  (holger-server)</text>
  <text x="710" y="106" text-anchor="middle" fill="#555" font-size="12">writable + proxy + remote + RON</text>
  <text x="710" y="124" text-anchor="middle" fill="#555" font-size="12">developer / build side default</text>
  <text x="710" y="142" text-anchor="middle" fill="#2b5fb3" font-size="12">✅ built · un-split binary</text>

  <!-- arrows down to the shared engine -->
  <path d="M150,152 L150,196" fill="none" stroke="#555" stroke-width="1.5" marker-end="url(#a)"/>
  <path d="M430,152 L430,196" fill="none" stroke="#555" stroke-width="1.5" marker-end="url(#a)"/>
  <path d="M710,152 L710,196" fill="none" stroke="#555" stroke-width="1.5" marker-end="url(#a)"/>

  <!-- shared serve engine -->
  <rect x="30" y="200" width="800" height="72" rx="8" fill="#f6eefb" stroke="#7a3fb3" stroke-width="1.5"/>
  <text x="430" y="226" text-anchor="middle" font-weight="600">holger-server-lib — wire_holger() · FastRoutes O(1) dispatch · gRPC + native-HTTP doors</text>
  <text x="430" y="250" text-anchor="middle" fill="#555" font-size="12">the serve engine never names a concrete backend — it dispatches through Arc&lt;dyn RepositoryBackendTrait&gt;</text>

  <!-- backends row -->
  <rect x="30" y="298" width="380" height="60" rx="8" fill="#eef3fb" stroke="#2b5fb3" stroke-width="1.5"/>
  <text x="220" y="322" text-anchor="middle" font-weight="600">read-only znippy backends (13 ecosystems)</text>
  <text x="220" y="342" text-anchor="middle" fill="#555" font-size="12">maven·python·rust·npm·nuget·go·gem·deb·rpm·helm·docker·conda·composer·package</text>

  <rect x="450" y="298" width="380" height="60" rx="8" fill="#fdf2ec" stroke="#c26a2b" stroke-width="1.5"/>
  <text x="640" y="322" text-anchor="middle" font-weight="600">writable + egress (full only)</text>
  <text x="640" y="342" text-anchor="middle" fill="#555" font-size="12">file-rust · file-oci · ProxyBackend · RemoteUpstream (Nexus/Artifactory)</text>

  <path d="M220,272 L220,296" fill="none" stroke="#555" stroke-width="1.5" marker-end="url(#a)"/>
  <path d="M640,272 L640,296" fill="none" stroke="#555" stroke-width="1.5" marker-end="url(#a)"/>

  <!-- traits floor -->
  <rect x="30" y="382" width="800" height="34" rx="8" fill="#eefaf0" stroke="#2f8f4e" stroke-width="1.5"/>
  <text x="430" y="404" text-anchor="middle" font-weight="600" font-size="13">traits/ — RepositoryBackendTrait · ConnectorTrait · HolgerObject · ArtifactFormat (shared by all variants)</text>
</svg>