Files
FamReynaBrain/projects/factory/kids-hermes-voice-system-design.svg
T
2026-09-14 22:38:47 -04:00

51 lines
7.9 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>