<svg width="100%" viewBox="0 0 1000 200" role="img" xmlns="http://www.w3.org/2000/svg">
  <title>Plugin path — how we add a surface without forking hermes</title>
  <desc>Source under cloud/hermes/plugins/&lt;name&gt; is bind-mounted read-only into each per-user container at /opt/data/plugins/; upstream's loader auto-discovers it and registers a first-class platform.</desc>
  <style>
    text{font-family:"Anthropic Sans",-apple-system,system-ui,"Segoe UI",sans-serif}
    .t{font-size:14px;font-weight:500;text-anchor:middle;dominant-baseline:central}
    .s{font-size:12px;text-anchor:middle;dominant-baseline:central}
    rect{stroke-width:.5}
    .blue{fill:#1f3b7a;stroke:#8aaef0}    .bt{fill:#cfdcf4} .bs{fill:#8aaef0}
    .orange{fill:#712b13;stroke:#f0997b}  .ot{fill:#f5c4b3} .os{fill:#f0997b}
    .green{fill:#27500a;stroke:#97c459}   .gt{fill:#c0dd97} .gs{fill:#97c459}
    .arrow{fill:none;stroke:#9c9a92;stroke-width:1.5}
    .arrow-ok{fill:none;stroke:#1d9e75;stroke-width:1.5}
  </style>
  <defs>
    <marker id="a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
      <path d="M2 1L8 5L2 9" fill="none" stroke="context-stroke" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
    </marker>
  </defs>

  <rect class="green" x="20" y="80" width="200" height="80" rx="8"/>
  <text class="t gt" x="120" y="106">source on disk</text>
  <text class="s gs" x="120" y="128">cloud/hermes/plugins/</text>
  <text class="s gs" x="120" y="146">&lt;your_platform&gt;/</text>

  <rect class="blue" x="260" y="80" width="220" height="80" rx="8"/>
  <text class="t bt" x="370" y="106">bind-mounted at docker run</text>
  <text class="s bs" x="370" y="128">→ /opt/data/plugins/ (ro)</text>
  <text class="s bs" x="370" y="146">handled by provisioner</text>

  <rect class="orange" x="520" y="80" width="220" height="80" rx="8"/>
  <text class="t ot" x="630" y="106">upstream plugin loader</text>
  <text class="s os" x="630" y="128">auto-discovers</text>
  <text class="s os" x="630" y="146">registers as a platform</text>

  <rect class="orange" x="780" y="80" width="200" height="80" rx="8"/>
  <text class="t ot" x="880" y="106">native API</text>
  <text class="s os" x="880" y="128">send_message · cronjob</text>
  <text class="s os" x="880" y="146">+ system-prompt hints</text>

  <path class="arrow"    d="M 220 120 L 258 120" marker-end="url(#a)"/>
  <path class="arrow"    d="M 480 120 L 518 120" marker-end="url(#a)"/>
  <path class="arrow-ok" d="M 740 120 L 778 120" marker-end="url(#a)"/>
</svg>
