51 lines
7.9 KiB
XML
51 lines
7.9 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" width="1500" height="1030" viewBox="0 0 1500 1030" role="img" aria-labelledby="title desc">
|
||
<title id="title">Kids Hermes Voice — verified system design</title>
|
||
<desc id="desc">System design overview of the candidate Tactility board, Mac mini voice adapter, Pipecat path, default Hermes gateway, and AeroPi5 kids runtime. Connections are marked confirmed, inferred, or unknown.</desc>
|
||
<defs>
|
||
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse"><path d="M40 0H0V40" fill="none" stroke="#1e293b" stroke-width="0.5"/></pattern>
|
||
<marker id="green" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto"><path d="M0,0 L0,6 L9,3 z" fill="#34d399"/></marker>
|
||
<marker id="amber" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto"><path d="M0,0 L0,6 L9,3 z" fill="#fbbf24"/></marker>
|
||
<marker id="gray" markerWidth="10" markerHeight="10" refX="8" refY="3" orient="auto"><path d="M0,0 L0,6 L9,3 z" fill="#94a3b8"/></marker>
|
||
<style>
|
||
.title{font:700 25px ui-monospace,SFMono-Regular,Menlo,monospace;fill:#f8fafc}.sub{font:13px ui-monospace,SFMono-Regular,Menlo,monospace;fill:#94a3b8}.group{font:700 14px ui-monospace,SFMono-Regular,Menlo,monospace;fill:#cbd5e1}.name{font:700 15px ui-monospace,SFMono-Regular,Menlo,monospace;fill:#f8fafc}.text{font:12px ui-monospace,SFMono-Regular,Menlo,monospace;fill:#cbd5e1}.small{font:11px ui-monospace,SFMono-Regular,Menlo,monospace;fill:#94a3b8}.label{font:11px ui-monospace,SFMono-Regular,Menlo,monospace;fill:#e2e8f0}.confirmed{fill:#123d2d;stroke:#34d399;stroke-width:2}.inferred{fill:#46351a;stroke:#fbbf24;stroke-width:2;stroke-dasharray:7 5}.unknown{fill:#1e293b;stroke:#94a3b8;stroke-width:2;stroke-dasharray:3 5}.nogood{fill:#3f1d2b;stroke:#fb7185;stroke-width:2}.boundary{fill:#0f172a;fill-opacity:.72;stroke:#475569;stroke-width:1.4;stroke-dasharray:8 5}.lineC{stroke:#34d399;stroke-width:3;fill:none;marker-end:url(#green)}.lineI{stroke:#fbbf24;stroke-width:2.5;fill:none;stroke-dasharray:8 5;marker-end:url(#amber)}.lineU{stroke:#94a3b8;stroke-width:2;fill:none;stroke-dasharray:3 6;marker-end:url(#gray)}
|
||
</style>
|
||
</defs>
|
||
<rect width="1500" height="1030" fill="#020617"/><rect width="1500" height="1030" fill="url(#grid)"/>
|
||
<text x="55" y="55" class="title">KIDS HERMES VOICE — SYSTEM DESIGN</text><text x="55" y="80" class="sub">Read-only baseline · connections show current evidence, not authorization to change or deploy</text>
|
||
|
||
<!-- boundaries -->
|
||
<rect x="50" y="125" width="360" height="650" rx="14" class="boundary"/><text x="75" y="155" class="group">CANDIDATE TACTILITY BOARD</text>
|
||
<rect x="520" y="125" width="535" height="650" rx="14" class="boundary"/><text x="545" y="155" class="group">MAC MINI — CURRENT VOICE HOSTS</text>
|
||
<rect x="1165" y="125" width="285" height="650" rx="14" class="boundary"/><text x="1190" y="155" class="group">AEROPI5 — KIDS RUNTIME</text>
|
||
|
||
<!-- flows behind boxes -->
|
||
<path d="M390 300 C450 300 465 300 540 300" class="lineC"/><text x="422" y="284" class="label">CONFIRMED · protocol-v1 WS</text>
|
||
<path d="M360 501 C452 501 466 501 540 475" class="lineI"/><text x="405" y="487" class="label">INFERRED · legacy direct WS</text>
|
||
<path d="M345 650 C430 650 440 650 540 650" class="lineU"/><text x="395" y="635" class="label">UNKNOWN · config override</text>
|
||
<path d="M750 365 C750 405 750 420 750 450" class="lineI"/><text x="765" y="412" class="label">INFERRED · processing link</text>
|
||
<path d="M850 510 C890 500 910 475 920 410" class="lineI"/><text x="870" y="455" class="label">INFERRED · Hermes API</text>
|
||
<path d="M730 690 C630 720 505 715 390 690" class="lineI"/><text x="510" y="742" class="label">NO-GO: SmallWebRTC in current external ELF</text>
|
||
<path d="M1165 330 C1100 330 1085 330 1035 330" class="lineU"/><text x="1060" y="314" class="label">UNKNOWN policy/transport binding</text>
|
||
<path d="M1165 570 C1100 570 1080 570 940 570" class="lineU"/><text x="1010" y="554" class="label">UNKNOWN</text>
|
||
|
||
<!-- device boxes -->
|
||
<rect x="75" y="230" width="315" height="130" rx="8" class="confirmed"/><text x="96" y="260" class="name">PipecatVoice app</text><text x="96" y="287" class="text">Tactility external ELF</text><text x="96" y="310" class="text">16 kHz PCM + protocol-v1 state machine</text><text x="96" y="337" class="small">Current source target: Mac mini voice adapter</text>
|
||
<rect x="75" y="430" width="285" height="125" rx="8" class="inferred"/><text x="96" y="460" class="name">ReynaBot app</text><text x="96" y="487" class="text">Separate legacy voice endpoint</text><text x="96" y="510" class="small">Endpoint differs from PipecatVoice</text><text x="96" y="532" class="small">Live use / target identity: unverified</text>
|
||
<rect x="75" y="610" width="270" height="100" rx="8" class="unknown"/><text x="96" y="640" class="name">Persisted config.json</text><text x="96" y="668" class="text">Can override non-secret endpoint</text><text x="96" y="692" class="small">Not yet read from candidate board</text>
|
||
|
||
<!-- mac boxes -->
|
||
<rect x="540" y="230" width="390" height="135" rx="8" class="confirmed"/><text x="565" y="260" class="name">LAN voice adapter</text><text x="565" y="288" class="text">protocol-v1 WebSocket · LAN-only bind</text><text x="565" y="312" class="text">Path: /api/esp32/voice/ws</text><text x="565" y="340" class="small">Confirmed listening; HTTP probe requested WS upgrade</text>
|
||
<rect x="540" y="450" width="390" height="110" rx="8" class="inferred"/><text x="565" y="480" class="name">Pipecat voice processing</text><text x="565" y="507" class="text">STT / turn service / TTS experiments</text><text x="565" y="535" class="small">Integration contract to adapter not live-traced</text>
|
||
<rect x="540" y="610" width="390" height="105" rx="8" class="confirmed"/><text x="565" y="640" class="name">Pipecat SmallWebRTC bot</text><text x="565" y="667" class="text">Service is listening</text><text x="565" y="692" class="small">Available path; not a supported current Tactility ELF route</text>
|
||
<rect x="940" y="385" width="92" height="110" rx="8" class="confirmed"/><text x="952" y="414" class="name">Default</text><text x="952" y="438" class="name">Hermes</text><text x="952" y="462" class="name">gateway</text><text x="952" y="483" class="small">listening</text>
|
||
|
||
<!-- pi box -->
|
||
<rect x="1190" y="230" width="230" height="140" rx="8" class="confirmed"/><text x="1210" y="260" class="name">Kids Hermes runtime</text><text x="1210" y="288" class="text">hermes-gateway-kids.service</text><text x="1210" y="313" class="text">active · kids profile</text><text x="1210" y="343" class="small">Policy/runtime owner</text>
|
||
<rect x="1190" y="510" width="230" height="120" rx="8" class="unknown"/><text x="1210" y="540" class="name">Voice-route binding</text><text x="1210" y="568" class="text">No current listener observed</text><text x="1210" y="594" class="small">Connection to adapter/client unknown</text>
|
||
|
||
<!-- legend and evidence -->
|
||
<rect x="50" y="815" width="1400" height="165" rx="12" fill="#0f172a" stroke="#334155" stroke-width="1.5"/>
|
||
<text x="75" y="846" class="group">EVIDENCE KEY</text><line x1="75" y1="872" x2="130" y2="872" class="lineC"/><text x="145" y="877" class="text">Confirmed now: process/listener, active service, or current source endpoint</text><line x1="610" y1="872" x2="665" y2="872" class="lineI"/><text x="680" y="877" class="text">Inferred: source/history exists; end-to-end linkage not proven</text><line x1="1110" y1="872" x2="1165" y2="872" class="lineU"/><text x="1180" y="877" class="text">Unknown: requires evidence</text>
|
||
<text x="75" y="915" class="text">Sources: current Tactility app source/README; Mac mini listener and process inspection; AeroPi5 systemd inspection; PipecatVoice postmortem; factory record.</text>
|
||
<text x="75" y="944" class="text">Current restore gate: reconcile the candidate board’s persisted PipecatVoice config against the confirmed Mac mini adapter endpoint. No source, service, or device changes were made.</text>
|
||
</svg> |