You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
P0: OpenShell needs a governed realtime media path for audio streams.
OpenShell 0.0.72 can relay WebSocket binary bytes, but only the WebSocket upgrade and text messages have policy semantics today. WebRTC/TURN-style media is also outside the current TCP CONNECT proxy model.
VoiceClaw needs realtime audio without turning the sandbox boundary into an opaque raw socket escape. Media must remain deny-by-default, auditable, rate-limited, and bound to declared destinations and sessions.
NVIDIA speech integrations such as Parakeet ASR, Magpie TTS, and PersonaPlex once its serving wrapper is confirmed.
Operators and security teams who need media egress governed by OpenShell policy instead of hidden behind host bridges.
Concrete protocol evidence
Parakeet is served through NVIDIA ASR NIM / Riva Speech Recognition:
HTTP REST for offline transcription.
gRPC over HTTP/2 for RivaSpeechRecognition/Recognize and bidirectional StreamingRecognize.
Realtime WebSocket for /v1/realtime?intent=transcription, using JSON events with base64 audio.
Magpie is served through NVIDIA TTS NIM / Riva Speech Synthesis:
HTTP REST for /v1/audio/synthesize and /v1/audio/synthesize_online.
gRPC over HTTP/2 for RivaSpeechSynthesis/Synthesize and server-streaming SynthesizeOnline.
Realtime WebSocket for /v1/realtime?intent=synthesize, using JSON events.
PersonaPlex is publicly described as a full-duplex speech-to-speech model/checkpoint, not a documented Speech NIM API surface:
Treat its network protocol as unconfirmed until the serving wrapper is known.
If wrapped as Riva/NIM, expect gRPC or realtime WebSocket.
If exposed directly for browser voice, expect WebSocket or WebRTC.
Proposed Design
Add a governed media protocol surface to OpenShell.
This could be a new protocol: media, or staged support through:
WEBSOCKET_BINARY for realtime audio over WebSocket.
Realtime WebSocket JSON media policy.
protocol: grpc for streaming gRPC.
Optional TURN/WebRTC support later, only when there is a concrete sandbox use case.
The media policy should include:
transport allowlist
codec allowlist
destination and session binding
direction controls
max frame/message size
bitrate limits
session duration limits
concurrency limits
OCSF media session logging
Alternatives Considered
Keep using raw L4 passthrough. This moves bytes, but it cannot express media policy, session caps, gRPC method policy, or useful audit semantics.
Keep VoiceClaw audio on the host forever. This avoids sandbox risk but forces every voice/media integration to rebuild a host-side shadow plane.
Add raw UDP/RTP/WebRTC first. The current VoiceClaw POC does not require that inside the sandbox. Start with WebSocket binary and gRPC streaming, then add TURN/WebRTC only with a concrete requirement.
Agent Investigation
Reviewed NemoClaw #6207, which frames this as the P0 OpenShell ask: governed realtime media without raw socket escape.
Inspected local ../openclaw Voice Call code. Carrier and provider paths use WebSocket media streams; some providers use JSON events with base64 audio and some use binary audio frames.
Checked OpenShell docs/code. protocol: websocket governs upgrade and client text frames; binary WebSocket frames are relayed but not policy-governed. protocol: grpc is not currently listed as an L7 protocol.
Checked NVIDIA Speech NIM docs for Parakeet and Magpie protocols.
Problem Statement
Related: NVIDIA/NemoClaw#6207.
VoiceClaw referencces
P0: OpenShell needs a governed realtime media path for audio streams.
OpenShell 0.0.72 can relay WebSocket binary bytes, but only the WebSocket upgrade and text messages have policy semantics today. WebRTC/TURN-style media is also outside the current TCP CONNECT proxy model.
VoiceClaw needs realtime audio without turning the sandbox boundary into an opaque raw socket escape. Media must remain deny-by-default, auditable, rate-limited, and bound to declared destinations and sessions.
Who will use this
voice-calland Talk sessions.Concrete protocol evidence
RivaSpeechRecognition/Recognizeand bidirectionalStreamingRecognize./v1/realtime?intent=transcription, using JSON events with base64 audio./v1/audio/synthesizeand/v1/audio/synthesize_online.RivaSpeechSynthesis/Synthesizeand server-streamingSynthesizeOnline./v1/realtime?intent=synthesize, using JSON events.Proposed Design
Add a governed media protocol surface to OpenShell.
This could be a new
protocol: media, or staged support through:WEBSOCKET_BINARYfor realtime audio over WebSocket.protocol: grpcfor streaming gRPC.The media policy should include:
Alternatives Considered
Agent Investigation
../openclawVoice Call code. Carrier and provider paths use WebSocket media streams; some providers use JSON events with base64 audio and some use binary audio frames.protocol: websocketgoverns upgrade and client text frames; binary WebSocket frames are relayed but not policy-governed.protocol: grpcis not currently listed as an L7 protocol.Sources:
Acceptance Criteria
Non-Goals
Checklist