<svg viewBox="0 0 1540 900" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" font-family="-apple-system, 'Segoe UI', Helvetica, Arial, sans-serif">
  <rect width="1540" height="900" fill="#ffffff"/>
  <defs>
    <marker id="arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M 0 0 L 10 5 L 0 10 z" fill="#64748b"/>
    </marker>
    <g id="i-person" fill="none"><circle cx="9" cy="4.5" r="3.5"/><path d="M2 17 c0 -5 3.5 -7 7 -7 s7 2 7 7"/></g>
    <g id="i-robot" fill="none"><rect x="2" y="6" width="14" height="9" rx="2"/><line x1="9" y1="6" x2="9" y2="2.5"/><circle cx="9" cy="1.8" r="1"/><circle cx="6.3" cy="10.5" r="1"/><circle cx="11.7" cy="10.5" r="1"/></g>
    <g id="i-funnel" fill="none"><path d="M1 2 h16 l-6 7 v7 l-4 -2.5 v-4.5 z"/></g>
    <g id="i-chip" fill="none"><rect x="4" y="4" width="10" height="10" rx="1.5"/><rect x="7" y="7" width="4" height="4"/><line x1="6.5" y1="4" x2="6.5" y2="1.5"/><line x1="11.5" y1="4" x2="11.5" y2="1.5"/><line x1="6.5" y1="14" x2="6.5" y2="16.5"/><line x1="11.5" y1="14" x2="11.5" y2="16.5"/><line x1="4" y1="6.5" x2="1.5" y2="6.5"/><line x1="4" y1="11.5" x2="1.5" y2="11.5"/><line x1="14" y1="6.5" x2="16.5" y2="6.5"/><line x1="14" y1="11.5" x2="16.5" y2="11.5"/></g>
    <g id="i-server" fill="none"><rect x="1" y="2" width="16" height="6" rx="1.5"/><rect x="1" y="10" width="16" height="6" rx="1.5"/><circle cx="4.5" cy="5" r="0.9"/><circle cx="4.5" cy="13" r="0.9"/></g>
  </defs>

  <text x="60" y="64" font-size="30" font-weight="700" fill="#0f172a">Who can read your prompt on an agent stack</text>
  <text x="60" y="96" font-size="19" fill="#475569">Every box on the main path handles cleartext; whether it retains is per-box policy.</text>

  <!-- legend -->
  <rect x="1050" y="38" width="430" height="94" rx="10" fill="#f8fafc" stroke="#e2e8f0" stroke-width="1.5"/>
  <circle cx="1076" cy="60" r="7" fill="#dc2626"/>
  <text x="1092" y="65" font-size="15" fill="#0f172a">Retains payloads by default or by design</text>
  <circle cx="1076" cy="86" r="7" fill="#d97706"/>
  <text x="1092" y="91" font-size="15" fill="#0f172a">Retention depends on plan, setting, or contract</text>
  <circle cx="1076" cy="112" r="7" fill="#059669"/>
  <text x="1092" y="117" font-size="15" fill="#0f172a">Retention is your own configuration</text>

  <!-- Column 1: user -->
  <rect x="60" y="255" width="180" height="100" rx="14" fill="#f1f5f9" stroke="#94a3b8" stroke-width="2"/>
  <use xlink:href="#i-person" href="#i-person" transform="translate(138,264) scale(1.3)" stroke="#334155" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="150" y="314" font-size="21" font-weight="600" fill="#0f172a" text-anchor="middle">Your user</text>
  <text x="150" y="338" font-size="16" fill="#475569" text-anchor="middle">The prompt is born</text>
  <text x="150" y="380" font-size="14" fill="#b45309" text-anchor="middle">Where browser extensions harvested</text>
  <text x="150" y="399" font-size="14" fill="#b45309" text-anchor="middle">8M users' AI chats (2025)</text>

  <line x1="240" y1="315" x2="286" y2="315" stroke="#64748b" stroke-width="3" marker-end="url(#arr)"/>

  <!-- Column 2: agent layer -->
  <rect x="290" y="150" width="300" height="334" rx="16" fill="#eef2ff" stroke="#6366f1" stroke-width="2.5"/>
  <use xlink:href="#i-robot" href="#i-robot" transform="translate(345,169) scale(1.2)" stroke="#334155" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="454" y="188" font-size="22" font-weight="700" fill="#0f172a" text-anchor="middle">Agent layer</text>
  <rect x="306" y="208" width="268" height="56" rx="10" fill="#ffffff" stroke="#a5b4fc" stroke-width="1.5"/>
  <circle cx="326" cy="236" r="7" fill="#d97706"/>
  <text x="342" y="241" font-size="16" fill="#0f172a">App / framework telemetry</text>
  <rect x="306" y="276" width="268" height="56" rx="10" fill="#ffffff" stroke="#a5b4fc" stroke-width="1.5"/>
  <circle cx="326" cy="304" r="7" fill="#dc2626"/>
  <text x="342" y="309" font-size="16" fill="#0f172a">Tracing / observability SaaS</text>
  <rect x="306" y="344" width="268" height="56" rx="10" fill="#ffffff" stroke="#a5b4fc" stroke-width="1.5"/>
  <circle cx="326" cy="372" r="7" fill="#dc2626"/>
  <text x="342" y="377" font-size="16" fill="#0f172a">Memory / vector stores</text>
  <rect x="306" y="412" width="268" height="56" rx="10" fill="#ffffff" stroke="#a5b4fc" stroke-width="1.5"/>
  <circle cx="326" cy="440" r="7" fill="#dc2626"/>
  <text x="342" y="445" font-size="16" fill="#0f172a">Session replay / analytics</text>

  <line x1="590" y1="315" x2="646" y2="315" stroke="#64748b" stroke-width="3" marker-end="url(#arr)"/>

  <!-- Column 3: gateway -->
  <rect x="650" y="150" width="260" height="406" rx="16" fill="#ecfdf5" stroke="#10b981" stroke-width="2.5"/>
  <use xlink:href="#i-funnel" href="#i-funnel" transform="translate(682,169) scale(1.2)" stroke="#334155" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="794" y="188" font-size="22" font-weight="700" fill="#0f172a" text-anchor="middle">AI gateway</text>
  <rect x="662" y="208" width="236" height="72" rx="10" fill="#ffffff" stroke="#6ee7b7" stroke-width="1.5"/>
  <circle cx="682" cy="234" r="7" fill="#d97706"/>
  <text x="698" y="239" font-size="16" fill="#0f172a">SaaS aggregator gateway</text>
  <text x="698" y="262" font-size="14" fill="#64748b">Its policy + routed host's</text>
  <rect x="662" y="292" width="236" height="52" rx="10" fill="#ffffff" stroke="#6ee7b7" stroke-width="1.5"/>
  <circle cx="682" cy="318" r="7" fill="#dc2626"/>
  <text x="698" y="323" font-size="16" fill="#0f172a">Security / DLP gateway</text>
  <rect x="662" y="356" width="236" height="52" rx="10" fill="#ffffff" stroke="#6ee7b7" stroke-width="1.5"/>
  <circle cx="682" cy="382" r="7" fill="#dc2626"/>
  <text x="698" y="387" font-size="16" fill="#0f172a">Observability console</text>
  <rect x="662" y="420" width="236" height="52" rx="10" fill="#ffffff" stroke="#6ee7b7" stroke-width="1.5"/>
  <circle cx="682" cy="446" r="7" fill="#dc2626"/>
  <text x="698" y="451" font-size="16" fill="#0f172a">Gateway-side caches</text>
  <rect x="662" y="484" width="236" height="52" rx="10" fill="#ffffff" stroke="#6ee7b7" stroke-width="1.5"/>
  <circle cx="682" cy="510" r="7" fill="#059669"/>
  <text x="698" y="515" font-size="16" fill="#0f172a">Self-hosted gateway</text>

  <line x1="910" y1="315" x2="966" y2="315" stroke="#64748b" stroke-width="3" marker-end="url(#arr)"/>

  <!-- Column 4: providers -->
  <rect x="970" y="150" width="330" height="384" rx="16" fill="#fff7ed" stroke="#f59e0b" stroke-width="2.5"/>
  <use xlink:href="#i-chip" href="#i-chip" transform="translate(1000,169) scale(1.2)" stroke="#334155" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="1149" y="188" font-size="22" font-weight="700" fill="#0f172a" text-anchor="middle">Inference providers</text>
  <rect x="992" y="208" width="286" height="72" rx="10" fill="#ffffff" stroke="#fcd34d" stroke-width="1.5"/>
  <circle cx="1012" cy="232" r="7" fill="#d97706"/>
  <text x="1028" y="237" font-size="17" fill="#0f172a">Model vendor's official API</text>
  <text x="1028" y="261" font-size="14" fill="#64748b">Runs where the vendor runs</text>
  <rect x="992" y="292" width="286" height="72" rx="10" fill="#ffffff" stroke="#fcd34d" stroke-width="1.5"/>
  <circle cx="1012" cy="316" r="7" fill="#d97706"/>
  <text x="1028" y="321" font-size="17" fill="#0f172a">Cloud-hosted model</text>
  <text x="1028" y="345" font-size="14" fill="#64748b">Region-pinned, cloud is processor</text>
  <rect x="992" y="376" width="286" height="72" rx="10" fill="#ffffff" stroke="#fcd34d" stroke-width="1.5"/>
  <circle cx="1012" cy="400" r="7" fill="#d97706"/>
  <text x="1028" y="405" font-size="17" fill="#0f172a">GPU host, open weights</text>
  <text x="1028" y="429" font-size="14" fill="#64748b">Policies vary host by host</text>
  <text x="1135" y="482" font-size="14" fill="#475569" text-anchor="middle">Plus: caches, batch files, abuse logs,</text>
  <text x="1135" y="504" font-size="14" fill="#475569" text-anchor="middle">safety classifiers, subprocessors, backups</text>

  <!-- self-host branch -->
  <line x1="780" y1="556" x2="780" y2="656" stroke="#64748b" stroke-width="3" stroke-dasharray="8 6" marker-end="url(#arr)"/>
  <rect x="560" y="664" width="440" height="150" rx="16" fill="#f8fafc" stroke="#64748b" stroke-width="2.5"/>
  <use xlink:href="#i-server" href="#i-server" transform="translate(575,684) scale(1.2)" stroke="#334155" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
  <text x="806" y="702" font-size="21" font-weight="700" fill="#0f172a" text-anchor="middle">Self-hosted inference (the bypass)</text>
  <rect x="582" y="718" width="190" height="74" rx="10" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5"/>
  <circle cx="598" cy="755" r="7" fill="#059669"/>
  <text x="677" y="748" font-size="16" fill="#0f172a" text-anchor="middle">Dedicated cloud</text>
  <text x="677" y="770" font-size="16" fill="#0f172a" text-anchor="middle">tenant / VPC</text>
  <rect x="788" y="718" width="190" height="74" rx="10" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.5"/>
  <circle cx="803" cy="755" r="7" fill="#059669"/>
  <text x="883" y="748" font-size="16" fill="#0f172a" text-anchor="middle">Your own</text>
  <text x="883" y="770" font-size="16" fill="#0f172a" text-anchor="middle">datacenter GPUs</text>
  <text x="780" y="842" font-size="15" fill="#475569" text-anchor="middle">No third party sees cleartext, but your own access logs and traces become the retention surface</text>
</svg>
