flowchart LR
classDef confirmed fill:#123d2d,stroke:#34d399,color:#e2e8f0,stroke-width:2px;
classDef inferred fill:#46351a,stroke:#fbbf24,color:#fef3c7,stroke-width:2px,stroke-dasharray: 6 4;
classDef unknown fill:#1e293b,stroke:#94a3b8,color:#e2e8f0,stroke-width:2px,stroke-dasharray: 2 4;
classDef blocked fill:#3f1d2b,stroke:#fb7185,color:#ffe4e6,stroke-width:2px;
subgraph Device[Candidate Tactility board]
PV[PipecatVoice external ELF
16 kHz PCM + protocol-v1]:::confirmed
RB[ReynaBot external ELF
separate legacy endpoint]:::inferred
CFG[Persisted config.json
may override PipecatVoice default]:::unknown
end
subgraph Mac[Mac mini — current voice hosts]
AD[LAN voice adapter
protocol-v1 WebSocket · port 8644]:::confirmed
HG[Default Hermes gateway
listening · port 8642]:::confirmed
PC[Pipecat SmallWebRTC bot
listening · port 7860]:::confirmed
TS[Pipecat turn/STT/TTS experiments
repo: pipecat-voice-gateway]:::inferred
end
subgraph Pi[AeroPi5 — Kids Hermes runtime]
KG[hermes-gateway-kids.service
kids profile · active]:::confirmed
KP[Voice route / listener / profile binding
not observed in discovery]:::unknown
end
PV -->|CONFIRMED: current source default
protocol-v1 WS| AD
CFG -.->|UNKNOWN: runtime override
must reconcile| PV
RB -.->|INFERRED: direct legacy WS
endpoint differs from PipecatVoice| HG
AD -.->|INFERRED: may call voice processing
contract not yet traced live| TS
TS -.->|INFERRED: Hermes API use in source| HG
PC -.->|NOT PRODUCT PATH: WebRTC route
external ELF is a documented NO-GO| PV
KG -.->|UNKNOWN: no confirmed voice transport
binding to current client/adapter| AD
KG -.->|UNKNOWN: policy/runtime relationship| HG
NOTE[Status key:
solid green = confirmed now
dashed amber = inferred from source/history
dotted gray = unknown; needs evidence
rose = blocked/no-go]:::unknown