565 lines
38 KiB
XML
565 lines
38 KiB
XML
<svg viewBox="0 0 1280 900" xmlns="http://www.w3.org/2000/svg">
|
|
<style>
|
|
.orbit-flow { animation: orbit-dash 4s linear infinite; }
|
|
@keyframes orbit-dash { from { stroke-dashoffset: 40; } to { stroke-dashoffset: 0; } }
|
|
|
|
.ring-glow { animation: ring-breathe 3s ease-in-out infinite; }
|
|
@keyframes ring-breathe { 0%,100% { opacity: 0.06; } 50% { opacity: 0.18; } }
|
|
|
|
.spoke { animation: spoke-dash 2s linear infinite; }
|
|
@keyframes spoke-dash { from { stroke-dashoffset: 16; } to { stroke-dashoffset: 0; } }
|
|
|
|
.health { animation: pulse 2.2s ease-in-out infinite; }
|
|
.health-d1 { animation-delay: 0.4s; }
|
|
.health-d2 { animation-delay: 0.8s; }
|
|
.health-d3 { animation-delay: 1.2s; }
|
|
.health-d4 { animation-delay: 1.6s; }
|
|
@keyframes pulse { 0%,100% { opacity: 0.35; } 50% { opacity: 1; } }
|
|
|
|
.https-beam { animation: https-p 4s ease-in-out infinite; }
|
|
@keyframes https-p { 0%,100% { opacity: 0.15; stroke-width: 1.5; } 50% { opacity: 0.7; stroke-width: 2.5; } }
|
|
.https-label { animation: https-lbl 4s ease-in-out infinite; }
|
|
@keyframes https-lbl { 0%,100% { opacity: 0.3; } 50% { opacity: 1; } }
|
|
|
|
.solid-border { animation: solid-glow 3.5s ease-in-out infinite; }
|
|
@keyframes solid-glow { 0%,100% { stroke-opacity: 0.3; } 50% { stroke-opacity: 0.7; } }
|
|
|
|
.hub-pulse { animation: hub-beat 3s ease-in-out infinite; }
|
|
@keyframes hub-beat { 0%,100% { opacity: 0.3; } 50% { opacity: 0.6; } }
|
|
|
|
.cred-dot { opacity: 0; }
|
|
.db-flow { animation: db-dash 2.5s linear infinite; }
|
|
@keyframes db-dash { from { stroke-dashoffset: 12; } to { stroke-dashoffset: 0; } }
|
|
</style>
|
|
|
|
<defs>
|
|
<filter id="glow-blue" x="-50%" y="-50%" width="200%" height="200%">
|
|
<feGaussianBlur in="SourceGraphic" stdDeviation="6" result="blur"/>
|
|
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
</filter>
|
|
<filter id="glow-orange" x="-50%" y="-50%" width="200%" height="200%">
|
|
<feGaussianBlur in="SourceGraphic" stdDeviation="5" result="blur"/>
|
|
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
</filter>
|
|
<filter id="glow-pink" x="-50%" y="-50%" width="200%" height="200%">
|
|
<feGaussianBlur in="SourceGraphic" stdDeviation="5" result="blur"/>
|
|
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
</filter>
|
|
<filter id="glow-purple" x="-50%" y="-50%" width="200%" height="200%">
|
|
<feGaussianBlur in="SourceGraphic" stdDeviation="5" result="blur"/>
|
|
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
</filter>
|
|
<filter id="glow-cyan" x="-50%" y="-50%" width="200%" height="200%">
|
|
<feGaussianBlur in="SourceGraphic" stdDeviation="5" result="blur"/>
|
|
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
</filter>
|
|
<filter id="glow-gold" x="-50%" y="-50%" width="200%" height="200%">
|
|
<feGaussianBlur in="SourceGraphic" stdDeviation="6" result="blur"/>
|
|
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
</filter>
|
|
<filter id="soft-shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
<feDropShadow dx="0" dy="2" stdDeviation="8" flood-color="#000" flood-opacity="0.5"/>
|
|
</filter>
|
|
<filter id="ring-glow-f" x="-20%" y="-20%" width="140%" height="140%">
|
|
<feGaussianBlur in="SourceGraphic" stdDeviation="8" result="blur"/>
|
|
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
</filter>
|
|
|
|
<radialGradient id="bg-radial" cx="50%" cy="42%" r="55%">
|
|
<stop offset="0%" stop-color="#111520"/>
|
|
<stop offset="100%" stop-color="#0a0c10"/>
|
|
</radialGradient>
|
|
<radialGradient id="hub-glow" cx="50%" cy="50%" r="50%">
|
|
<stop offset="0%" stop-color="#94a3b8" stop-opacity="0.15"/>
|
|
<stop offset="100%" stop-color="#94a3b8" stop-opacity="0"/>
|
|
</radialGradient>
|
|
<linearGradient id="orch-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#2a2016"/><stop offset="100%" stop-color="#1a150f"/>
|
|
</linearGradient>
|
|
<linearGradient id="ctrl-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#1a1630"/><stop offset="100%" stop-color="#110f1e"/>
|
|
</linearGradient>
|
|
<linearGradient id="vault-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#2a1630"/><stop offset="100%" stop-color="#1a0f1e"/>
|
|
</linearGradient>
|
|
<linearGradient id="ext-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#2a1620"/><stop offset="100%" stop-color="#1a0f14"/>
|
|
</linearGradient>
|
|
<linearGradient id="mcp-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#0f2a2e"/><stop offset="100%" stop-color="#0a1c1e"/>
|
|
</linearGradient>
|
|
<linearGradient id="surreal-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#1a1428"/><stop offset="100%" stop-color="#110e1c"/>
|
|
</linearGradient>
|
|
<linearGradient id="cli-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#1a2a42"/><stop offset="100%" stop-color="#0f1a2e"/>
|
|
</linearGradient>
|
|
|
|
<!-- Animated gradient for infinity engine color cycling -->
|
|
<linearGradient id="infinityGradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
<stop offset="0%" style="stop-color:#00D4FF;stop-opacity:1">
|
|
<animate attributeName="stop-color" values="#00D4FF;#7B2BFF;#00FFB3;#00D4FF" dur="4s" repeatCount="indefinite"/>
|
|
</stop>
|
|
<stop offset="50%" style="stop-color:#7B2BFF;stop-opacity:1">
|
|
<animate attributeName="stop-color" values="#7B2BFF;#00FFB3;#00D4FF;#7B2BFF" dur="4s" repeatCount="indefinite"/>
|
|
</stop>
|
|
<stop offset="100%" style="stop-color:#00FFB3;stop-opacity:1">
|
|
<animate attributeName="stop-color" values="#00FFB3;#00D4FF;#7B2BFF;#00FFB3" dur="4s" repeatCount="indefinite"/>
|
|
</stop>
|
|
</linearGradient>
|
|
|
|
<marker id="arr-blue" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
|
|
<polygon points="0 0, 8 3, 0 6" fill="#4a9eff"/>
|
|
</marker>
|
|
<marker id="arr-silver" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
|
|
<polygon points="0 0, 8 3, 0 6" fill="#94a3b8"/>
|
|
</marker>
|
|
<marker id="arr-gold" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
|
|
<polygon points="0 0, 8 3, 0 6" fill="#fbbf24"/>
|
|
</marker>
|
|
|
|
<path id="orbit-cw" d="M 640,185 A 135,135 0 1,1 640,455 A 135,135 0 1,1 640,185 Z" fill="none"/>
|
|
<path id="orbit-ccw" d="M 640,185 A 135,135 0 1,0 640,455 A 135,135 0 1,0 640,185 Z" fill="none"/>
|
|
|
|
<path id="path-orch-vault" d="M 640,185 A 135,135 0 0,0 508,276" fill="none"/>
|
|
<path id="path-vault-orch" d="M 508,276 A 135,135 0 0,1 640,185" fill="none"/>
|
|
<path id="path-cli-orch" d="M 640,98 L 640,115" fill="none"/>
|
|
</defs>
|
|
|
|
<!-- ═══ BACKGROUND ═══ -->
|
|
<rect width="1280" height="900" fill="url(#bg-radial)"/>
|
|
<g opacity="0.03">
|
|
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
|
|
<path d="M 40 0 L 0 0 0 40" fill="none" stroke="#fff" stroke-width="0.5"/>
|
|
</pattern>
|
|
<rect width="1280" height="900" fill="url(#grid)"/>
|
|
</g>
|
|
|
|
<!-- Star field -->
|
|
<g opacity="0.35">
|
|
<circle cx="95" cy="145" r="0.8" fill="#fff"/><circle cx="340" cy="78" r="0.6" fill="#fff"/>
|
|
<circle cx="890" cy="115" r="1" fill="#fff"/><circle cx="1120" cy="210" r="0.7" fill="#fff"/>
|
|
<circle cx="180" cy="460" r="0.5" fill="#fff"/><circle cx="1160" cy="510" r="0.8" fill="#fff"/>
|
|
<circle cx="72" cy="660" r="0.6" fill="#fff"/><circle cx="960" cy="710" r="0.9" fill="#fff"/>
|
|
</g>
|
|
|
|
<!-- ═══ TITLE ═══ -->
|
|
<text x="640" y="28" text-anchor="middle" fill="#e2e6ee" font-family="'DM Sans',sans-serif" font-weight="700" font-size="17" letter-spacing="1.5">INFRASTRUCTURE PROVISIONING SYSTEM</text>
|
|
<text x="640" y="48" text-anchor="middle" fill="#5a6070" font-family="'IBM Plex Mono',monospace" font-size="10" letter-spacing="3">CONTROL PLANE ARCHITECTURE</text>
|
|
<line x1="510" y1="56" x2="770" y2="56" stroke="#333" stroke-width="0.8"/>
|
|
|
|
<!-- ═══ CLI ═══ -->
|
|
<g>
|
|
<rect x="535" y="64" width="210" height="34" rx="8" fill="url(#cli-grad)" filter="url(#soft-shadow)"/>
|
|
<rect x="535" y="64" width="210" height="34" rx="8" fill="none" stroke="#1c2a3a" stroke-width="1"/>
|
|
<rect x="535" y="67" width="3" height="28" rx="1.5" fill="#4a9eff" opacity="0.6"/>
|
|
<circle cx="556" cy="78" r="7" fill="#2d3748" stroke="#4a9eff" stroke-width="1" opacity="0.8"/>
|
|
<text x="556" y="81" text-anchor="middle" fill="#4a9eff" font-size="8" font-family="'IBM Plex Mono',monospace">$</text>
|
|
<text x="570" y="78" fill="#4a9eff" font-family="'DM Sans',sans-serif" font-weight="600" font-size="11">CLI</text>
|
|
<text x="548" y="92" fill="#6b8aaa" font-family="'IBM Plex Mono',monospace" font-size="8">provisioning create server</text>
|
|
</g>
|
|
|
|
<!-- Arrow: CLI → Orchestrator -->
|
|
<line x1="640" y1="98" x2="640" y2="115" stroke="#4a9eff" stroke-width="1.5" stroke-dasharray="5 3" class="spoke" opacity="0.7" marker-end="url(#arr-blue)"/>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════ -->
|
|
<!-- NATS ORBITAL RING SYSTEM -->
|
|
<!-- ═══════════════════════════════════════ -->
|
|
|
|
<!-- Ring outer glow -->
|
|
<circle cx="640" cy="320" r="138" fill="none" stroke="#94a3b8" stroke-width="10" opacity="0.04" class="ring-glow" filter="url(#ring-glow-f)"/>
|
|
|
|
<!-- Main orbit ring (flowing dashes) -->
|
|
<circle cx="640" cy="320" r="135" fill="none" stroke="#94a3b8" stroke-width="2" stroke-dasharray="10 8" class="orbit-flow" opacity="0.45"/>
|
|
|
|
<!-- ═══ INFINITY ENGINE (∞ dual-wheel perpetual motion from logo) ═══ -->
|
|
<!-- Centered at (640,320), scale 0.55 from original logo coordinates -->
|
|
<!-- Left wheel center: (115.86, 113.25) | Right wheel center: (261.91, 113.28) -->
|
|
<g transform="translate(640, 320) scale(0.55) translate(-188.88, -113.27)" opacity="0.82">
|
|
|
|
<!-- Left wheel — clockwise 8s -->
|
|
<g opacity="0.78">
|
|
<path d="M3.04,87.53c-3.66,16.4-3.36,33.43,.85,49.7l18.49-.31c2.12,7.08,5.09,13.89,8.85,20.26l-12.81,13.12c9.22,14.08,21.56,25.9,36.09,34.55l12.81-13.13c6.56,3.51,13.52,6.22,20.74,8.08l.31,18.3c16.56,3.62,33.75,3.33,50.18-.85l-.31-18.3c7.15-2.1,14.02-5.04,20.46-8.77l13.25,12.69c14.22-9.14,26.14-21.36,34.87-35.75l-13.25-12.68c3.54-6.5,6.28-13.4,8.15-20.55l18.49-.31c3.65-16.4,3.36-33.43-.85-49.7l-18.49,.31c-2.12-7.08-5.09-13.88-8.85-20.26l12.8-13.12c-9.22-14.08-21.56-25.9-36.08-34.55l-12.81,13.13c-6.56-3.51-13.53-6.23-20.75-8.08l-.31-18.3c-16.56-3.62-33.75-3.33-50.18,.85l.31,18.3c-7.15,2.1-14.01,5.04-20.45,8.77l-13.25-12.69c-14.22,9.14-26.15,21.36-34.88,35.75l13.25,12.68c-3.54,6.5-6.28,13.4-8.15,20.55l-18.49,.31Z" style="fill:#7abde8; fill-rule:evenodd; stroke:#1a3050; stroke-miterlimit:10; stroke-width:0.8;">
|
|
<animateTransform attributeName="transform" type="rotate"
|
|
values="0 115.86 113.25;360 115.86 113.25" dur="8s" repeatCount="indefinite"/>
|
|
</path>
|
|
</g>
|
|
|
|
<!-- Right wheel — counter-clockwise 6s -->
|
|
<g opacity="0.78">
|
|
<path d="M167.28,92.87c-3.19,14.31-2.94,29.17,.74,43.37l16.13-.27c1.85,6.18,4.44,12.12,7.72,17.68l-11.18,11.45c8.05,12.29,18.82,22.6,31.49,30.15l11.18-11.46c5.72,3.06,11.8,5.43,18.1,7.05l.27,15.97c14.45,3.16,29.45,2.91,43.78-.74l-.27-15.97c6.24-1.83,12.23-4.4,17.85-7.66l11.56,11.08c12.41-7.97,22.81-18.64,30.43-31.19l-11.56-11.06c3.09-5.67,5.48-11.69,7.11-17.93l16.13-.27c3.18-14.31,2.93-29.17-.74-43.37l-16.13,.27c-1.85-6.18-4.44-12.11-7.72-17.68l11.17-11.44c-8.04-12.29-18.81-22.6-31.48-30.15l-11.18,11.46c-5.72-3.07-11.8-5.43-18.1-7.05l-.27-15.97c-14.45-3.16-29.45-2.91-43.78,.74l.27,15.97c-6.24,1.83-12.23,4.4-17.84,7.66l-11.56-11.08c-12.41,7.97-22.81,18.64-30.44,31.19l11.56,11.06c-3.09,5.67-5.48,11.69-7.11,17.93l-16.13,.27Z" style="fill:#7abde8; fill-rule:evenodd; stroke:#1a3050; stroke-miterlimit:10; stroke-width:0.8;">
|
|
<animateTransform attributeName="transform" type="rotate"
|
|
values="0 261.91 113.28;-360 261.91 113.28" dur="6s" repeatCount="indefinite"/>
|
|
</path>
|
|
</g>
|
|
|
|
<!-- Left wheel golden center -->
|
|
<path d="M115.86,78.19c19.55,0,35.4,15.7,35.4,35.06s-15.85,35.06-35.4,35.06-35.4-15.7-35.4-35.06,15.85-35.06,35.4-35.06" style="fill:#f2b03f;"/>
|
|
<ellipse cx="116.42" cy="115.68" rx="20.17" ry="20.15" style="fill:none; stroke:#4159a4; stroke-miterlimit:10; stroke-width:1.58px;"/>
|
|
<path d="M116.42,107.88c4.35-.04,7.91,3.43,7.95,7.73,.04,4.31-3.46,7.83-7.81,7.87-4.35,.04-7.91-3.43-7.95-7.73,0-.02,0-.05,0-.07-.02-4.29,3.48-7.78,7.81-7.8" style="fill:#fff;"/>
|
|
|
|
<!-- Right wheel golden center -->
|
|
<ellipse cx="261.91" cy="113.28" rx="35.65" ry="35.31" style="fill:#f9b224;"/>
|
|
|
|
<!-- Right wheel — dashboard display (simplified from logo chronometer) -->
|
|
<circle cx="261.91" cy="113.28" r="26" style="fill:#3d5070; opacity:0.85;"/>
|
|
<!-- Window controls (3 dots) -->
|
|
<circle cx="243" cy="95" r="1.2" style="fill:#d68a87; opacity:0.6;"/>
|
|
<circle cx="247" cy="95" r="1.2" style="fill:#c9a558; opacity:0.6;"/>
|
|
<circle cx="251" cy="95" r="1.2" style="fill:#5a7093; opacity:0.6;"/>
|
|
<!-- Terminal header bar -->
|
|
<rect x="243" y="99" width="38" height="3.2" rx="1.5" style="fill:#6a7a98; opacity:0.5;"/>
|
|
<!-- Status bars (staggered widths = data readout) -->
|
|
<rect x="243" y="105" width="28" height="2.8" rx="1" style="fill:#7a8aaa; opacity:0.5;"/>
|
|
<rect x="243" y="110" width="34" height="2.8" rx="1" style="fill:#a89870; opacity:0.5;"/>
|
|
<rect x="243" y="115" width="20" height="2.8" rx="1" style="fill:#6a7a8a; opacity:0.4;"/>
|
|
<rect x="243" y="120" width="30" height="2.8" rx="1" style="fill:#7a8aaa; opacity:0.4;"/>
|
|
<!-- Green health indicator -->
|
|
<circle cx="271" cy="127" r="5.5" style="fill:#4a9e8f; opacity:0.7;">
|
|
<animate attributeName="opacity" values="0.7;0.4;0.7" dur="2s" repeatCount="indefinite"/>
|
|
</circle>
|
|
<!-- Animated checkmark -->
|
|
<path d="M268,126.5l2.5,2.5,4.2-4.2" style="fill:none; stroke:#a0c0b0; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; opacity:0.8;">
|
|
<animate attributeName="stroke-dasharray" values="0 15;15 15" dur="1.5s" repeatCount="indefinite"/>
|
|
</path>
|
|
|
|
<!-- ∞ path segments — staggered color cycling -->
|
|
|
|
<!-- Top left of ∞ -->
|
|
<path d="M225.8,83.92c1.22-1.35,2.46-2.66,3.75-3.94,16.69-16.54,43.22-18.12,61.79-3.68l17.46-2.65,2.57-16.63c-29.5-25.42-73.83-23.89-101.47,3.5-1.24,1.23-2.45,2.49-3.63,3.77l16.89,2.56,2.64,17.07Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
|
|
<animate attributeName="fill" values="#5e74b7;#00D4FF;#7B2BFF;#00FFB3;#5e74b7" dur="2s" repeatCount="indefinite"/>
|
|
<animate attributeName="stroke-width" values="0.5;2;0.5" dur="2s" repeatCount="indefinite"/>
|
|
</path>
|
|
|
|
<!-- Bottom left of ∞ -->
|
|
<path d="M78.59,141.18c-14.54-18.4-12.95-44.65,3.71-61.2,1.33-1.31,2.73-2.54,4.2-3.68l-17.46-2.65-2.57-16.63c-1.3,1.13-2.58,2.28-3.82,3.5-27.79,27.53-28.96,71.57-3.53,100.51l16.79-2.55,2.67-17.3Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
|
|
<animate attributeName="fill" values="#5e74b7;#7B2BFF;#00FFB3;#00D4FF;#5e74b7" dur="2s" begin="0.5s" repeatCount="indefinite"/>
|
|
<animate attributeName="stroke-width" values="0.5;2;0.5" dur="2s" begin="0.5s" repeatCount="indefinite"/>
|
|
</path>
|
|
|
|
<!-- Top right of ∞ -->
|
|
<path d="M86.5,76.3c18.57-14.44,45.1-12.86,61.79,3.68,1.29,1.27,2.53,2.6,3.75,3.94l2.64-17.07,16.89-2.56c-1.18-1.28-2.39-2.54-3.63-3.77-27.64-27.39-71.97-28.92-101.48-3.5l2.57,16.63,17.46,2.65Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
|
|
<animate attributeName="fill" values="#8d9ccf;#00FFB3;#00D4FF;#7B2BFF;#8d9ccf" dur="2s" begin="1s" repeatCount="indefinite"/>
|
|
<animate attributeName="stroke-width" values="0.5;2;0.5" dur="2s" begin="1s" repeatCount="indefinite"/>
|
|
</path>
|
|
|
|
<!-- Bottom right of ∞ -->
|
|
<path d="M299.26,141.18c-15.88,20.08-45.19,23.61-65.46,7.88l-.04-.03-17.46,2.65-2.57,16.63c29.5,25.42,73.83,23.89,101.47-3.5,1.24-1.22,2.4-2.49,3.53-3.78l-16.79-2.55-2.68-17.3Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
|
|
<animate attributeName="fill" values="#8d9ccf;#7B2BFF;#00D4FF;#00FFB3;#8d9ccf" dur="2s" begin="1.5s" repeatCount="indefinite"/>
|
|
<animate attributeName="stroke-width" values="0.5;2;0.5" dur="2s" begin="1.5s" repeatCount="indefinite"/>
|
|
</path>
|
|
|
|
<!-- ∞ connector arcs (static deep blue) -->
|
|
<path d="M315.19,60.52c-1.23-1.22-2.51-2.38-3.82-3.5l-2.57,16.63-17.46,2.65c1.47,1.14,2.88,2.37,4.2,3.68,16.66,16.55,18.25,42.8,3.71,61.2l2.68,17.3,16.79,2.55c25.42-28.93,24.26-72.98-3.53-100.5m-171.1,88.5c-20.2,15.76-49.48,12.31-65.39-7.7-.04-.05-.08-.1-.12-.15l-2.68,17.3-16.79,2.55c1.13,1.29,2.3,2.56,3.53,3.78,27.64,27.39,71.97,28.92,101.47,3.5l-2.57-16.63-17.46-2.65Z" style="fill:#455aa5; stroke:#3a5a7a; stroke-miterlimit:10;"/>
|
|
|
|
<!-- ∞ transition pieces -->
|
|
<path d="M204.38,103.42c1.09,1.79,2.17,3.56,3.25,5.32,5.65-8.96,11.44-17.4,18.17-24.81l-2.64-17.07-16.89-2.56c-5.38,5.87-10.34,12.11-14.83,18.68,4.58,6.77,8.8,13.66,12.94,20.45m-30.92,18.5c-1.09-1.79-2.18-3.56-3.25-5.32-6.68,10.59-13.53,20.44-21.92,28.75-1.33,1.31-2.73,2.54-4.21,3.68l17.46,2.65,2.57,16.63c1.3-1.12,2.58-2.28,3.82-3.5,6.84-6.9,13.02-14.41,18.46-22.43-4.57-6.76-8.78-13.66-12.93-20.46" style="fill:#8d9ccf; stroke:#5a7a90; stroke-miterlimit:10;"/>
|
|
|
|
<!-- Central flow — animated infinity gradient -->
|
|
<path d="M171.57,64.29c11.77,12.66,20.64,27.17,29.24,41.26,9,14.74,17.5,28.67,28.74,39.8,1.33,1.31,2.73,2.54,4.21,3.68l-17.46,2.65-2.57,16.63c-1.3-1.12-2.58-2.27-3.82-3.5-13.63-13.5-23.41-29.52-32.87-45.02-7.97-13.05-15.55-25.46-24.99-35.86l2.64-17.07,16.89-2.56Z" style="stroke:#5a7a90; stroke-miterlimit:10;">
|
|
<animate attributeName="fill" values="#5e74b7;url(#infinityGradient);#00D4FF;url(#infinityGradient);#5e74b7" dur="3s" repeatCount="indefinite"/>
|
|
<animate attributeName="stroke-width" values="0.5;3;0.5" dur="3s" repeatCount="indefinite"/>
|
|
<animate attributeName="opacity" values="0.8;1;0.8" dur="3s" repeatCount="indefinite"/>
|
|
</path>
|
|
|
|
</g>
|
|
|
|
<!-- Hub labels (below infinity engine) -->
|
|
<text x="640" y="392" text-anchor="middle" fill="#c8d0dc" font-family="'DM Sans',sans-serif" font-weight="700" font-size="12" letter-spacing="1.2">NATS</text>
|
|
<text x="640" y="403" text-anchor="middle" fill="#8090a0" font-family="'IBM Plex Mono',monospace" font-size="8" letter-spacing="2">JETSTREAM</text>
|
|
<text x="640" y="414" text-anchor="middle" fill="#5a6278" font-family="'IBM Plex Mono',monospace" font-size="7">:4222</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════ -->
|
|
<!-- SATELLITE SERVICES -->
|
|
<!-- ═══════════════════════════════════════ -->
|
|
|
|
<!-- ─── ORCHESTRATOR (top, 0°) ─── -->
|
|
<g>
|
|
<rect x="505" y="95" width="270" height="110" rx="14" fill="none" stroke="#f59e0b" stroke-width="1.5" stroke-dasharray="8 4" class="solid-border"/>
|
|
<rect x="515" y="105" width="250" height="90" rx="10" fill="url(#orch-grad)" filter="url(#soft-shadow)"/>
|
|
<rect x="515" y="105" width="250" height="90" rx="10" fill="none" stroke="#3a2e1c" stroke-width="1"/>
|
|
<rect x="515" y="108" width="3" height="84" rx="1.5" fill="#f59e0b" opacity="0.5"/>
|
|
<circle cx="537" cy="127" r="8" fill="#2d3748" stroke="#f59e0b" stroke-width="1" opacity="0.8"/>
|
|
<text x="537" y="131" text-anchor="middle" fill="#f59e0b" font-size="9">▶</text>
|
|
<text x="553" y="130" fill="#d8ccc0" font-family="'DM Sans',sans-serif" font-weight="600" font-size="12" letter-spacing="0.5">Orchestrator</text>
|
|
<text x="740" y="130" text-anchor="end" fill="#f59e0b" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:9011</text>
|
|
<circle cx="752" cy="127" r="3.5" fill="#f59e0b" class="health"/>
|
|
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#6b6050">
|
|
<rect x="528" y="143" width="220" height="14" rx="4" fill="#1a150f" stroke="#3a2e1c" stroke-width="0.5"/>
|
|
<text x="638" y="153" text-anchor="middle" opacity="0.9">Task State Machine • Provider API • SSH</text>
|
|
<rect x="528" y="162" width="220" height="14" rx="4" fill="#1a150f" stroke="#3a2e1c" stroke-width="0.5"/>
|
|
<text x="638" y="172" text-anchor="middle" opacity="0.85">Webhooks • Rollback • Audit Collector</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- ─── CONTROL CENTER (72°, upper-right) ─── -->
|
|
<g>
|
|
<rect x="750" y="200" width="250" height="110" rx="10" fill="url(#ctrl-grad)" filter="url(#soft-shadow)"/>
|
|
<rect x="750" y="200" width="250" height="110" rx="10" fill="none" stroke="#2e2848" stroke-width="1"/>
|
|
<rect x="996" y="203" width="3" height="104" rx="1.5" fill="#818cf8" opacity="0.5"/>
|
|
<circle cx="772" cy="222" r="8" fill="#2d3748" stroke="#818cf8" stroke-width="1" opacity="0.8"/>
|
|
<text x="772" y="226" text-anchor="middle" fill="#818cf8" font-size="9">◯</text>
|
|
<text x="788" y="225" fill="#c0c0d8" font-family="'DM Sans',sans-serif" font-weight="600" font-size="12" letter-spacing="0.5">Control Center</text>
|
|
<text x="980" y="225" text-anchor="end" fill="#818cf8" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:9012</text>
|
|
<circle cx="992" cy="222" r="3.5" fill="#818cf8" class="health health-d1"/>
|
|
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#5a5878">
|
|
<rect x="763" y="238" width="220" height="14" rx="4" fill="#110f1e" stroke="#2e2848" stroke-width="0.5"/>
|
|
<text x="873" y="248" text-anchor="middle" opacity="0.9">Cedar Policies • JWT • Sessions</text>
|
|
<rect x="763" y="257" width="220" height="14" rx="4" fill="#110f1e" stroke="#2e2848" stroke-width="0.5"/>
|
|
<text x="873" y="267" text-anchor="middle" opacity="0.85">WebSocket • RBAC • Solo: auto-session</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- ─── AI/MCP (144°, lower-right) ─── -->
|
|
<g>
|
|
<rect x="725" y="410" width="250" height="110" rx="10" fill="url(#mcp-grad)" filter="url(#soft-shadow)"/>
|
|
<rect x="725" y="410" width="250" height="110" rx="10" fill="none" stroke="#1c3038" stroke-width="1"/>
|
|
<rect x="971" y="413" width="3" height="104" rx="1.5" fill="#22d3ee" opacity="0.5"/>
|
|
<circle cx="747" cy="432" r="8" fill="#2d3748" stroke="#22d3ee" stroke-width="1" opacity="0.8"/>
|
|
<text x="747" y="436" text-anchor="middle" fill="#22d3ee" font-size="9">🧠</text>
|
|
<text x="763" y="435" fill="#c0d8d8" font-family="'DM Sans',sans-serif" font-weight="600" font-size="11" letter-spacing="0.5">AI • MCP</text>
|
|
<text x="960" y="435" text-anchor="end" fill="#22d3ee" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:9082</text>
|
|
<circle cx="972" cy="432" r="3.5" fill="#22d3ee" class="health health-d2"/>
|
|
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#385a58">
|
|
<rect x="738" y="448" width="220" height="14" rx="4" fill="#0a1c1e" stroke="#1c3038" stroke-width="0.5"/>
|
|
<text x="848" y="458" text-anchor="middle" opacity="0.9">RAG Engine • MCP Server • Tools</text>
|
|
<rect x="738" y="467" width="220" height="14" rx="4" fill="#0a1c1e" stroke="#1c3038" stroke-width="0.5"/>
|
|
<text x="848" y="477" text-anchor="middle" opacity="0.85">Embeddings • Model Routing • KGraph</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- ─── EXTENSION REGISTRY (216°, lower-left) ─── -->
|
|
<g>
|
|
<rect x="305" y="410" width="250" height="110" rx="10" fill="url(#ext-grad)" filter="url(#soft-shadow)"/>
|
|
<rect x="305" y="410" width="250" height="110" rx="10" fill="none" stroke="#3a1c28" stroke-width="1"/>
|
|
<rect x="305" y="413" width="3" height="104" rx="1.5" fill="#ef4444" opacity="0.5"/>
|
|
<circle cx="327" cy="432" r="8" fill="#2d3748" stroke="#ef4444" stroke-width="1" opacity="0.8"/>
|
|
<text x="327" y="436" text-anchor="middle" fill="#ef4444" font-size="9">⚙</text>
|
|
<text x="343" y="435" fill="#d8c0c8" font-family="'DM Sans',sans-serif" font-weight="600" font-size="11" letter-spacing="0.5">Ext Registry</text>
|
|
<text x="530" y="435" text-anchor="end" fill="#ef4444" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:8084</text>
|
|
<circle cx="542" cy="432" r="3.5" fill="#ef4444" class="health health-d3"/>
|
|
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#5a3848">
|
|
<rect x="318" y="448" width="220" height="14" rx="4" fill="#1a0f14" stroke="#3a1c28" stroke-width="0.5"/>
|
|
<text x="428" y="458" text-anchor="middle" opacity="0.9">Gitea • Forgejo • OCI • LRU</text>
|
|
<rect x="318" y="467" width="220" height="14" rx="4" fill="#1a0f14" stroke="#3a1c28" stroke-width="0.5"/>
|
|
<text x="428" y="477" text-anchor="middle" opacity="0.85">Providers • Taskservs • vault:// creds</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- ─── VAULT SERVICE (288°, upper-left) ─── -->
|
|
<g>
|
|
<rect x="280" y="200" width="250" height="110" rx="10" fill="url(#vault-grad)" filter="url(#soft-shadow)"/>
|
|
<rect x="280" y="200" width="250" height="110" rx="10" fill="none" stroke="#3a1c30" stroke-width="1"/>
|
|
<rect x="280" y="203" width="3" height="104" rx="1.5" fill="#ec4899" opacity="0.5"/>
|
|
<circle cx="302" cy="222" r="8" fill="#2d3748" stroke="#ec4899" stroke-width="1" opacity="0.8"/>
|
|
<text x="302" y="226" text-anchor="middle" fill="#ec4899" font-size="9">🛡</text>
|
|
<text x="318" y="225" fill="#d8c0d0" font-family="'DM Sans',sans-serif" font-weight="600" font-size="12" letter-spacing="0.5">Vault Service</text>
|
|
<text x="510" y="225" text-anchor="end" fill="#ec4899" font-family="'IBM Plex Mono',monospace" font-size="8" opacity="0.5">:9094</text>
|
|
<circle cx="522" cy="222" r="3.5" fill="#ec4899" class="health health-d4"/>
|
|
<g font-family="'IBM Plex Mono',monospace" font-size="8" fill="#5a3850">
|
|
<rect x="293" y="238" width="220" height="14" rx="4" fill="#1a0f1e" stroke="#3a1c30" stroke-width="0.5"/>
|
|
<text x="403" y="248" text-anchor="middle" opacity="0.9">Lease Lifecycle • Key Management</text>
|
|
<rect x="293" y="257" width="220" height="14" rx="4" fill="#1a0f1e" stroke="#3a1c30" stroke-width="0.5"/>
|
|
<text x="403" y="267" text-anchor="middle" opacity="0.85">SOPS • Age • Secrets never in NATS</text>
|
|
</g>
|
|
</g>
|
|
|
|
|
|
<!-- ═══ HTTPS CREDENTIAL BEAM ═══ -->
|
|
<line x1="480" y1="250" x2="560" y2="160" stroke="#fbbf24" stroke-width="2" class="https-beam" filter="url(#glow-gold)"/>
|
|
<line x1="480" y1="250" x2="560" y2="160" stroke="#fbbf24" stroke-width="1" stroke-dasharray="4 3" class="https-beam" opacity="0.4"/>
|
|
<text x="495" y="200" fill="#fbbf24" font-family="'IBM Plex Mono',monospace" font-size="7" font-weight="700" class="https-label" transform="rotate(-65,495,200)">HTTPS</text>
|
|
|
|
|
|
<!-- ═══ ORBITAL PARTICLES ═══ -->
|
|
|
|
<circle r="3.5" fill="#f59e0b" opacity="0" filter="url(#glow-orange)">
|
|
<animateMotion dur="8s" begin="0s" repeatCount="indefinite">
|
|
<mpath href="#orbit-cw"/>
|
|
</animateMotion>
|
|
<animate attributeName="opacity" values="0;0.9;0.9;0" keyTimes="0;0.05;0.92;1" dur="8s" repeatCount="indefinite"/>
|
|
</circle>
|
|
|
|
<circle r="2.5" fill="#ec4899" opacity="0" filter="url(#glow-pink)">
|
|
<animateMotion dur="10s" begin="2s" repeatCount="indefinite">
|
|
<mpath href="#orbit-cw"/>
|
|
</animateMotion>
|
|
<animate attributeName="opacity" values="0;0.8;0.8;0" keyTimes="0;0.05;0.92;1" dur="10s" begin="2s" repeatCount="indefinite"/>
|
|
</circle>
|
|
|
|
<circle r="3" fill="#4a9eff" opacity="0" filter="url(#glow-blue)">
|
|
<animateMotion dur="7s" begin="1s" repeatCount="indefinite">
|
|
<mpath href="#orbit-ccw"/>
|
|
</animateMotion>
|
|
<animate attributeName="opacity" values="0;0.85;0.85;0" keyTimes="0;0.05;0.92;1" dur="7s" begin="1s" repeatCount="indefinite"/>
|
|
</circle>
|
|
|
|
<circle r="2.5" fill="#818cf8" opacity="0" filter="url(#glow-purple)">
|
|
<animateMotion dur="9s" begin="4s" repeatCount="indefinite">
|
|
<mpath href="#orbit-cw"/>
|
|
</animateMotion>
|
|
<animate attributeName="opacity" values="0;0.7;0.7;0" keyTimes="0;0.05;0.92;1" dur="9s" begin="4s" repeatCount="indefinite"/>
|
|
</circle>
|
|
|
|
<circle r="3" fill="#22d3ee" opacity="0" filter="url(#glow-cyan)">
|
|
<animateMotion dur="11s" begin="3s" repeatCount="indefinite">
|
|
<mpath href="#orbit-ccw"/>
|
|
</animateMotion>
|
|
<animate attributeName="opacity" values="0;0.75;0.75;0" keyTimes="0;0.05;0.92;1" dur="11s" begin="3s" repeatCount="indefinite"/>
|
|
</circle>
|
|
|
|
<circle r="2" fill="#ef4444" opacity="0" filter="url(#glow-orange)">
|
|
<animateMotion dur="12s" begin="5s" repeatCount="indefinite">
|
|
<mpath href="#orbit-cw"/>
|
|
</animateMotion>
|
|
<animate attributeName="opacity" values="0;0.7;0.7;0" keyTimes="0;0.05;0.92;1" dur="12s" begin="5s" repeatCount="indefinite"/>
|
|
</circle>
|
|
|
|
|
|
<!-- ═══ CREDENTIAL FLOW ═══ -->
|
|
|
|
<circle r="4" fill="#f59e0b" opacity="0" filter="url(#glow-gold)">
|
|
<animateMotion dur="2.5s" begin="0s" repeatCount="indefinite">
|
|
<mpath href="#path-orch-vault"/>
|
|
</animateMotion>
|
|
<animate attributeName="opacity" values="0;0.95;0.95;0" keyTimes="0;0.1;0.8;1" dur="2.5s" repeatCount="indefinite"/>
|
|
</circle>
|
|
|
|
<circle r="3.5" fill="#ec4899" opacity="0" filter="url(#glow-pink)">
|
|
<animateMotion dur="2.5s" begin="4s" repeatCount="indefinite">
|
|
<mpath href="#path-vault-orch"/>
|
|
</animateMotion>
|
|
<animate attributeName="opacity" values="0;0.9;0.9;0" keyTimes="0;0.1;0.8;1" dur="2.5s" begin="4s" repeatCount="indefinite"/>
|
|
</circle>
|
|
|
|
<circle r="3" fill="#4a9eff" opacity="0" filter="url(#glow-blue)">
|
|
<animateMotion dur="1.2s" begin="0s" repeatCount="indefinite">
|
|
<mpath href="#path-cli-orch"/>
|
|
</animateMotion>
|
|
<animate attributeName="opacity" values="0;0.85;0.85;0" keyTimes="0;0.15;0.7;1" dur="1.2s" repeatCount="indefinite"/>
|
|
</circle>
|
|
|
|
|
|
<!-- ═══ CONNECTIONS TO SURREALDB ═══ -->
|
|
<g opacity="0.3">
|
|
<line x1="640" y1="455" x2="640" y2="520" stroke="#a78bfa" stroke-width="1" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
|
|
<line x1="520" y1="430" x2="380" y2="520" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
|
|
<line x1="760" y1="430" x2="900" y2="520" stroke="#a78bfa" stroke-width="0.8" stroke-dasharray="4 3" class="db-flow" marker-end="url(#arr-silver)"/>
|
|
</g>
|
|
|
|
|
|
<!-- ═══ SURREALDB ═══ -->
|
|
|
|
<g>
|
|
<rect x="120" y="522" width="1040" height="50" rx="8" fill="url(#surreal-grad)" filter="url(#soft-shadow)"/>
|
|
<rect x="120" y="522" width="1040" height="50" rx="8" fill="none" stroke="#2e2450" stroke-width="1"/>
|
|
<rect x="120" y="568" width="1040" height="4" rx="2" fill="#a78bfa" opacity="0.2"/>
|
|
|
|
<text x="640" y="537" text-anchor="middle" fill="#c4b5e0" font-family="'DM Sans',sans-serif" font-weight="700" font-size="11" letter-spacing="1">SURREALDB PERSISTENCE</text>
|
|
<text x="1120" y="537" text-anchor="end" fill="#a78bfa" font-family="'IBM Plex Mono',monospace" font-size="7" opacity="0.4">Solo: RocksDB • Multi: WebSocket</text>
|
|
|
|
<g font-family="'IBM Plex Mono',monospace" font-size="7">
|
|
<rect x="148" y="545" width="130" height="16" rx="3" fill="#110e1c" stroke="#2e2450" stroke-width="0.5"/>
|
|
<text x="213" y="556" text-anchor="middle" fill="#a78bfa" opacity="0.8">orchestrator</text>
|
|
|
|
<rect x="290" y="545" width="110" height="16" rx="3" fill="#110e1c" stroke="#2e2450" stroke-width="0.5"/>
|
|
<text x="345" y="556" text-anchor="middle" fill="#a78bfa" opacity="0.8">vault</text>
|
|
|
|
<rect x="412" y="545" width="140" height="16" rx="3" fill="#110e1c" stroke="#2e2450" stroke-width="0.5"/>
|
|
<text x="482" y="556" text-anchor="middle" fill="#a78bfa" opacity="0.8">control_center</text>
|
|
|
|
<rect x="564" y="545" width="90" height="16" rx="3" fill="#110e1c" stroke="#2e2450" stroke-width="0.5"/>
|
|
<text x="609" y="556" text-anchor="middle" fill="#a78bfa" opacity="0.8">audit</text>
|
|
|
|
<rect x="666" y="545" width="130" height="16" rx="3" fill="#110e1c" stroke="#2e2450" stroke-width="0.5"/>
|
|
<text x="731" y="556" text-anchor="middle" fill="#a78bfa" opacity="0.8">workspace</text>
|
|
|
|
<rect x="808" y="545" width="100" height="16" rx="3" fill="none" stroke="#2e2450" stroke-width="0.4"/>
|
|
<text x="858" y="556" text-anchor="middle" fill="#5a4878" opacity="0.6">Nickel config</text>
|
|
</g>
|
|
</g>
|
|
|
|
|
|
<!-- ═══ SOLID ENFORCEMENT ═══ -->
|
|
|
|
<g transform="translate(120, 585)">
|
|
<text x="0" y="0" fill="#3a3e48" font-family="'IBM Plex Mono',monospace" font-weight="600" font-size="8" letter-spacing="1.5">SOLID ENFORCEMENT LAYERS</text>
|
|
<g font-family="'IBM Plex Mono',monospace" font-size="7">
|
|
<rect x="0" y="8" width="80" height="12" rx="3" fill="#f59e0b" opacity="0.06" stroke="#f59e0b" stroke-width="0.4" stroke-opacity="0.2"/>
|
|
<text x="40" y="17" text-anchor="middle" fill="#f59e0b" opacity="0.6">Compile-time</text>
|
|
<rect x="88" y="8" width="68" height="12" rx="3" fill="#818cf8" opacity="0.06" stroke="#818cf8" stroke-width="0.4" stroke-opacity="0.2"/>
|
|
<text x="122" y="17" text-anchor="middle" fill="#818cf8" opacity="0.6">Dev-time</text>
|
|
<rect x="164" y="8" width="74" height="12" rx="3" fill="#ec4899" opacity="0.06" stroke="#ec4899" stroke-width="0.4" stroke-opacity="0.2"/>
|
|
<text x="201" y="17" text-anchor="middle" fill="#ec4899" opacity="0.6">Pre-commit</text>
|
|
<rect x="246" y="8" width="50" height="12" rx="3" fill="#ef4444" opacity="0.06" stroke="#ef4444" stroke-width="0.4" stroke-opacity="0.2"/>
|
|
<text x="271" y="17" text-anchor="middle" fill="#ef4444" opacity="0.6">CI/CD</text>
|
|
<rect x="304" y="8" width="60" height="12" rx="3" fill="#22d3ee" opacity="0.06" stroke="#22d3ee" stroke-width="0.4" stroke-opacity="0.2"/>
|
|
<text x="334" y="17" text-anchor="middle" fill="#22d3ee" opacity="0.6">Runtime</text>
|
|
<rect x="372" y="8" width="50" height="12" rx="3" fill="#94a3b8" opacity="0.06" stroke="#94a3b8" stroke-width="0.4" stroke-opacity="0.2"/>
|
|
<text x="397" y="17" text-anchor="middle" fill="#94a3b8" opacity="0.6">Audit</text>
|
|
</g>
|
|
<g font-family="'IBM Plex Mono',monospace" font-size="7" fill="#3a3e48" opacity="0.5">
|
|
<text x="480" y="12">Provider APIs: Orchestrator only | SSH: Orchestrator + Machines</text>
|
|
<text x="480" y="24">Auth: Control Center only | Secrets: Vault Service API only</text>
|
|
</g>
|
|
</g>
|
|
|
|
|
|
<!-- ═══ LEGEND ═══ -->
|
|
|
|
<g transform="translate(120, 625)" font-family="'IBM Plex Mono',monospace" font-size="8">
|
|
<text x="0" y="0" fill="#3a3e48" font-weight="600" font-size="8" letter-spacing="1.5">SERVICES</text>
|
|
<circle cx="7" cy="12" r="3" fill="#f59e0b"/><text x="15" y="16" fill="#6b6050">Orchestrator</text>
|
|
<circle cx="7" cy="24" r="3" fill="#818cf8"/><text x="15" y="28" fill="#5a5878">Control Center</text>
|
|
<circle cx="7" cy="36" r="3" fill="#ec4899"/><text x="15" y="40" fill="#5a3850">Vault Service</text>
|
|
<circle cx="7" cy="48" r="3" fill="#ef4444"/><text x="15" y="52" fill="#5a3848">Catalog Registry</text>
|
|
<circle cx="7" cy="60" r="3" fill="#22d3ee"/><text x="15" y="64" fill="#385a58">AI • MCP</text>
|
|
|
|
<text x="340" y="0" fill="#3a3e48" font-weight="600" font-size="8" letter-spacing="1.5">INFRASTRUCTURE</text>
|
|
<circle cx="348" cy="12" r="5" fill="none" stroke="#94a3b8" stroke-width="1.2" stroke-dasharray="2 2"/>
|
|
<text x="360" y="16" fill="#5a6278">NATS Orbital Ring (:4222)</text>
|
|
<line x1="340" y1="24" x2="354" y2="24" stroke="#a78bfa" stroke-width="1.5"/>
|
|
<text x="360" y="28" fill="#5a4878">SurrealDB Persistence</text>
|
|
<line x1="340" y1="36" x2="354" y2="36" stroke="#fbbf24" stroke-width="1.5"/>
|
|
<text x="360" y="40" fill="#6b6050">HTTPS Credentials</text>
|
|
|
|
<text x="700" y="0" fill="#3a3e48" font-weight="600" font-size="8" letter-spacing="1.5">MODES</text>
|
|
<rect x="700" y="6" width="40" height="10" rx="2" fill="#34d399" opacity="0.1" stroke="#34d399" stroke-width="0.4"/>
|
|
<text x="720" y="14" text-anchor="middle" fill="#34d399" font-size="7" font-weight="600">SOLO</text>
|
|
<text x="750" y="14" fill="#4a7a5a" font-size="7">RocksDB + local NATS + auto-session</text>
|
|
<rect x="700" y="20" width="40" height="10" rx="2" fill="#818cf8" opacity="0.1" stroke="#818cf8" stroke-width="0.4"/>
|
|
<text x="720" y="28" text-anchor="middle" fill="#818cf8" font-size="7" font-weight="600">MULTI</text>
|
|
<text x="750" y="28" fill="#5a5878" font-size="7">WebSocket DB + NATS cluster + JWT+Cedar</text>
|
|
</g>
|
|
|
|
|
|
<!-- ═══ DEPLOYMENT ═══ -->
|
|
|
|
<g transform="translate(0, 750)" font-family="'IBM Plex Mono',monospace">
|
|
<rect x="160" y="0" width="120" height="30" rx="6" fill="#2a1515" stroke="#2a1010" stroke-width="0.8"/>
|
|
<circle cx="174" cy="11" r="3" fill="#ef4444"/><text x="182" y="14" fill="#d0a0a0" font-size="8" font-weight="500">Production</text>
|
|
<text x="174" y="26" fill="#5a3838" font-size="7" text-anchor="middle">Hetzner • AWS</text>
|
|
|
|
<rect x="300" y="0" width="120" height="30" rx="6" fill="#2a2010" stroke="#1a1810" stroke-width="0.8"/>
|
|
<circle cx="314" cy="11" r="3" fill="#f59e0b"/><text x="322" y="14" fill="#d0c0a0" font-size="8" font-weight="500">Staging</text>
|
|
<text x="314" y="26" fill="#5a5038" font-size="7" text-anchor="middle">K8s cluster</text>
|
|
|
|
<rect x="440" y="0" width="120" height="30" rx="6" fill="#1a2820" stroke="#0a1810" stroke-width="0.8"/>
|
|
<circle cx="454" cy="11" r="3" fill="#34d399"/><text x="462" y="14" fill="#a0d0b8" font-size="8" font-weight="500">Dev</text>
|
|
<text x="454" y="26" fill="#385a48" font-size="7" text-anchor="middle">Solo mode</text>
|
|
|
|
<rect x="580" y="0" width="120" height="30" rx="6" fill="#1a182a" stroke="#0a0a1a" stroke-width="0.8"/>
|
|
<circle cx="594" cy="11" r="3" fill="#818cf8"/><text x="602" y="14" fill="#b0b0d8" font-size="8" font-weight="500">Edge</text>
|
|
<text x="594" y="26" fill="#48486a" font-size="7" text-anchor="middle">On-prem • IoT</text>
|
|
|
|
<rect x="720" y="0" width="120" height="30" rx="6" fill="#1a2020" stroke="#0a1010" stroke-width="0.8"/>
|
|
<circle cx="734" cy="11" r="3" fill="#22d3ee"/><text x="742" y="14" fill="#a0c8c8" font-size="8" font-weight="500">Custom</text>
|
|
<text x="734" y="26" fill="#385858" font-size="7" text-anchor="middle">GitOps • Webhook</text>
|
|
</g>
|
|
|
|
<!-- ═══ VERSION ═══ -->
|
|
<text x="1180" y="880" text-anchor="end" fill="#5a6070" font-family="'IBM Plex Mono',monospace" font-size="9" letter-spacing="0.5">v5.0 • ∞ Engine Control Plane</text>
|
|
|
|
</svg>
|