mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
- MESH_CLUSTER.md: full documentation for autonomous AI mesh network - LAZY_TOOLS.md: lazy tool loading for smaller LLMs - mesh-architecture.svg: colorful network topology diagram - task-routing.svg: scoring algorithm visualization - pq-handshake.svg: ML-KEM-768 key exchange sequence diagram - HTML docs with dark theme styling - Renamed ironclaw references to optimclaw in .env.example and README Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
113 lines
6.2 KiB
XML
113 lines
6.2 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 600" font-family="Inter, system-ui, sans-serif">
|
|
<defs>
|
|
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" style="stop-color:#1a1a2e"/>
|
|
<stop offset="100%" style="stop-color:#16213e"/>
|
|
</linearGradient>
|
|
<linearGradient id="node-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" style="stop-color:#0f3460"/>
|
|
<stop offset="100%" style="stop-color:#1a1a2e"/>
|
|
</linearGradient>
|
|
<filter id="glow">
|
|
<feGaussianBlur stdDeviation="3" result="blur"/>
|
|
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
</filter>
|
|
<filter id="shadow">
|
|
<feDropShadow dx="2" dy="2" stdDeviation="4" flood-color="#000" flood-opacity="0.3"/>
|
|
</filter>
|
|
</defs>
|
|
|
|
<!-- Background -->
|
|
<rect width="900" height="600" fill="url(#bg)" rx="12"/>
|
|
|
|
<!-- Title -->
|
|
<text x="450" y="45" text-anchor="middle" fill="#e94560" font-size="24" font-weight="700" letter-spacing="1">OptimClaw Mesh Network</text>
|
|
<text x="450" y="68" text-anchor="middle" fill="#8899aa" font-size="12">Autonomous Peer-to-Peer AI Agent Cluster with Post-Quantum Encryption</text>
|
|
|
|
<!-- Connection lines (behind nodes) -->
|
|
<g stroke="#e94560" stroke-opacity="0.3" stroke-width="2" stroke-dasharray="6,4">
|
|
<!-- A-B --> <line x1="180" y1="200" x2="450" y2="160"/>
|
|
<!-- B-C --> <line x1="550" y1="160" x2="720" y2="200"/>
|
|
<!-- A-E --> <line x1="180" y1="280" x2="350" y2="380"/>
|
|
<!-- B-E --> <line x1="450" y1="240" x2="420" y2="380"/>
|
|
<!-- C-E --> <line x1="720" y1="280" x2="500" y2="380"/>
|
|
<!-- C-D --> <line x1="790" y1="280" x2="790" y2="380"/>
|
|
<!-- B-D --> <line x1="550" y1="240" x2="750" y2="380"/>
|
|
</g>
|
|
|
|
<!-- Encrypted channel indicators -->
|
|
<g fill="#00d4aa" font-size="9" font-weight="600">
|
|
<text x="310" y="175" text-anchor="middle" transform="rotate(-10,310,175)">ML-KEM-768</text>
|
|
<text x="640" y="175" text-anchor="middle" transform="rotate(10,640,175)">AES-256-GCM</text>
|
|
<text x="260" y="340" text-anchor="middle" transform="rotate(25,260,340)">PQ Encrypted</text>
|
|
<text x="650" y="340" text-anchor="middle" transform="rotate(25,650,340)">PQ Encrypted</text>
|
|
</g>
|
|
|
|
<!-- Node A: Laptop -->
|
|
<g filter="url(#shadow)">
|
|
<rect x="100" y="170" width="160" height="120" rx="10" fill="url(#node-grad)" stroke="#e94560" stroke-width="2"/>
|
|
<circle cx="130" cy="195" r="8" fill="#00d4aa"/>
|
|
<text x="145" y="200" fill="#fff" font-size="14" font-weight="600">Node A</text>
|
|
<text x="120" y="220" fill="#8899aa" font-size="11">Laptop | 6GB VRAM</text>
|
|
<text x="120" y="238" fill="#fab283" font-size="10">RTX 3060 Mobile</text>
|
|
<text x="120" y="255" fill="#5c9cf5" font-size="10">qwen2.5-coder:7b</text>
|
|
<text x="120" y="275" fill="#7fd88f" font-size="10">Load: 35% | 12 tools</text>
|
|
</g>
|
|
|
|
<!-- Node B: Server -->
|
|
<g filter="url(#shadow)">
|
|
<rect x="370" y="130" width="160" height="120" rx="10" fill="url(#node-grad)" stroke="#fab283" stroke-width="2"/>
|
|
<circle cx="400" cy="155" r="8" fill="#00d4aa"/>
|
|
<text x="415" y="160" fill="#fff" font-size="14" font-weight="600">Node B</text>
|
|
<text x="390" y="180" fill="#8899aa" font-size="11">Server | 24GB VRAM</text>
|
|
<text x="390" y="198" fill="#fab283" font-size="10">RTX 4090</text>
|
|
<text x="390" y="215" fill="#5c9cf5" font-size="10">qwen3-coder:30b</text>
|
|
<text x="390" y="235" fill="#7fd88f" font-size="10">Load: 10% | 30 tools</text>
|
|
</g>
|
|
|
|
<!-- Node C: Cloud -->
|
|
<g filter="url(#shadow)">
|
|
<rect x="640" y="170" width="160" height="120" rx="10" fill="url(#node-grad)" stroke="#5c9cf5" stroke-width="2"/>
|
|
<circle cx="670" cy="195" r="8" fill="#00d4aa"/>
|
|
<text x="685" y="200" fill="#fff" font-size="14" font-weight="600">Node C</text>
|
|
<text x="660" y="220" fill="#8899aa" font-size="11">Cloud | 80GB VRAM</text>
|
|
<text x="660" y="238" fill="#fab283" font-size="10">A100</text>
|
|
<text x="660" y="255" fill="#5c9cf5" font-size="10">llama3.1:70b</text>
|
|
<text x="660" y="275" fill="#7fd88f" font-size="10">Load: 5% | 30 tools</text>
|
|
</g>
|
|
|
|
<!-- Node D: Remote -->
|
|
<g filter="url(#shadow)">
|
|
<rect x="700" y="350" width="160" height="120" rx="10" fill="url(#node-grad)" stroke="#9d7cd8" stroke-width="2"/>
|
|
<circle cx="730" cy="375" r="8" fill="#f5a742"/>
|
|
<text x="745" y="380" fill="#fff" font-size="14" font-weight="600">Node D</text>
|
|
<text x="720" y="400" fill="#8899aa" font-size="11">Remote | 48GB VRAM</text>
|
|
<text x="720" y="418" fill="#fab283" font-size="10">2x RTX 3090</text>
|
|
<text x="720" y="435" fill="#5c9cf5" font-size="10">deepseek-coder:33b</text>
|
|
<text x="720" y="455" fill="#f5a742" font-size="10">Load: 72% | 30 tools</text>
|
|
</g>
|
|
|
|
<!-- Node E: Edge -->
|
|
<g filter="url(#shadow)">
|
|
<rect x="310" y="350" width="160" height="120" rx="10" fill="url(#node-grad)" stroke="#7fd88f" stroke-width="2"/>
|
|
<circle cx="340" cy="375" r="8" fill="#00d4aa"/>
|
|
<text x="355" y="380" fill="#fff" font-size="14" font-weight="600">Node E</text>
|
|
<text x="330" y="400" fill="#8899aa" font-size="11">Edge | 8GB VRAM</text>
|
|
<text x="330" y="418" fill="#fab283" font-size="10">RTX 4060</text>
|
|
<text x="330" y="435" fill="#5c9cf5" font-size="10">qwen3:8b</text>
|
|
<text x="330" y="455" fill="#7fd88f" font-size="10">Load: 20% | 12 tools</text>
|
|
</g>
|
|
|
|
<!-- Legend -->
|
|
<g transform="translate(50,510)">
|
|
<rect width="800" height="70" rx="8" fill="#0f3460" fill-opacity="0.5" stroke="#333" stroke-width="1"/>
|
|
<text x="20" y="22" fill="#fff" font-size="12" font-weight="600">Protocol Stack</text>
|
|
<g transform="translate(20,35)">
|
|
<rect width="12" height="12" rx="2" fill="#e94560"/><text x="18" y="11" fill="#ccc" font-size="10">UDP Beacon Discovery (port 9900)</text>
|
|
<rect x="200" width="12" height="12" rx="2" fill="#00d4aa"/><text x="218" y="11" fill="#ccc" font-size="10">ML-KEM-768 Key Exchange</text>
|
|
<rect x="400" width="12" height="12" rx="2" fill="#fab283"/><text x="418" y="11" fill="#ccc" font-size="10">AES-256-GCM Encrypted WebSocket</text>
|
|
<rect x="630" width="12" height="12" rx="2" fill="#5c9cf5"/><text x="648" y="11" fill="#ccc" font-size="10">SWIM Gossip Protocol</text>
|
|
</g>
|
|
</g>
|
|
</svg>
|