Skip to content

OpenShell VoiceClaw support: validate sandbox contracts and track networking follow-ons #6207

Closed as not planned

Description

@jyaunches

Problem statement

Parent epic #5998 coordinates the no-fork VoiceClaw integration via existing messaging and provider contracts. Sibling issue #6201 tracks the OpenClaw plugin/runtime/provider boundary. This issue tracks only the OpenShell boundary: current-contract validation, confirmed defects, and longer-term sandbox networking capabilities.

The current VoiceClaw POC keeps raw audio on the host. The sandbox sends text/control traffic through an exact OpenShell policy to a host audio bridge; that bridge owns the binary WebSocket speech/persona connections. Therefore no new OpenShell feature blocks the VoiceClaw built-in messaging-channel MVP tracked in #6387 unless current-version validation finds a regression.

The older VoiceClaw platform brief also asked for binary media egress, webhook ingress, split-horizon egress, and injected-environment durability. Several premises in that brief predate current OpenShell behavior, so the first task is to distinguish an existing contract from a real upstream gap.

Requirements and likely OpenShell alignment

Requirement Likely OpenShell alignment Basis and proposed framing
Preserve exact sandbox-to-host HTTP access (host.openshell.internal, destination/port, binary, method/path, and credential controls) across restart, rebuild, re-onboard, and supported drivers Strong — existing contract; validation only OpenShell already keeps the agent behind the nested policy proxy while giving the Docker supervisor host networking and the stable host alias (OpenShell PR #1080). Private destinations can be admitted through narrow policy rather than a bypass (OpenShell PR #60). File a defect only if the current pinned version fails the contract.
Carry the POC's fixed-destination binary WSS audio streams Strong for the existing relay; weak evidence for a new primitive OpenShell merged post-upgrade WebSocket relay support (PR #718); a later minimal repro carried binary frames up to 256 KiB byte-for-byte and closed as non-actionable (issue #760). Current policy also documents that binary WebSocket frames are relayed but not rewritten. Test WSS through a bare/raw L4 endpoint first. Request a first-class WEBSOCKET_BINARY action or frame/rate limits only if raw relay is insufficient and the additional enforcement contract is concrete.
Add a destination-allowlisted UDP/RTP/WebRTC media lane with codec, bandwidth, and concurrency limits Uncertain / RFC-level; not a current POC requirement The POC does not put WebRTC, RTP, or UDP inside the sandbox. OpenShell's security model deliberately forces ordinary egress through its TCP CONNECT/policy path, and it has treated uncontrolled DNS/UDP as an exfiltration boundary (issue #1169). A generic socket escape is unlikely to align. Revisit only with a protocol-specific design that remains deny-by-default and proves why WSS cannot meet the use case.
Publish future Twilio/Vonage-style webhook endpoints with TLS, caller authorization/HMAC verification, rate/IP controls, and a sandbox-scoped target Strong architectural alignment; partial implementation already exists OpenShell has merged persisted, gateway-owned sandbox service exposure with HTTP/WebSocket routing (PR #1101), and the canonical ingress roadmap explicitly favors gateway authorization plus a supervisor relay to a declared sandbox target (issue #994). Extend that model instead of proposing raw inbound sockets. Keep OpenShell provider-neutral; provider-specific HMAC semantics may belong in the plugin/host integration unless a generic gateway verifier is agreed. This is future carrier work, not an MVP blocker.
Make allowlisted upstream egress work on split-horizon/corporate DNS or an enterprise forward proxy Medium-high for a policy-preserving upstream connector; reproduce the exact path first OpenShell has already triaged supervisor support for corporate HTTP_PROXY/HTTPS_PROXY as a valid enterprise gap requiring a security spike (issue #1792). Docker supervisors use host networking (PR #1080), and private answers have a constrained policy path (PR #60), so VoiceClaw's older failure may already be driver/version-specific. Ask for resolver/upstream-dial composition that preserves NO_PROXY, destination, DNS/SSRF, binary, L7, credential, and CONNECT-chain controls—not a bypass around the OpenShell proxy.
Provide a declarative, policy-bound supervisor proxy to a host-local service as a fallback Medium; there is an almost exact open proposal but no maintainer commitment OpenShell issue #1633 proposes generalizing the inference.local shape so a declared endpoint reuses the existing CONNECT listener and reaches supervisor-side loopback with normal L7 policy. That is safer and more portable than VoiceClaw's 0.0.0.0:11435 Sonar proxy. Avoid a second listener: OpenShell closed that shape once its concrete downstream need disappeared (PR #1501). Prefer fixing native upstream routing; use #1633 only when a real host-local broker remains necessary.
Reapply the complete OpenShell-injected proxy/TLS environment to every OpenShell-owned agent launch, exec, and connect child Strong; likely already aligned, so reproduce ownership before filing OpenShell has repeatedly accepted small additive trust-store fixes, including GIT_SSL_CAINFO (PR #918) and DENO_CERT (PR #1441). Current source derives NODE_EXTRA_CA_CERTS, DENO_CERT, SSL_CERT_FILE, REQUESTS_CA_BUNDLE, CURL_CA_BUNDLE, and GIT_SSL_CAINFO from one helper for restricted children. Validate Node, curl, Python, and git after an OpenClaw gateway respawn and a fresh openshell sandbox connect. If OpenClaw or an SDK replaces its inherited environment, OpenShell is likely to redirect the fix downstream, as it did for MCP grandchildren (issue #886).

What OpenShell activity suggests

  • Maintainers accept integration capabilities when they are generic, tied to a concrete consumer, policy-gated, fail-closed, documented, and covered end to end. Private-IP policy (PR #60), messaging credential rewrite (PR #1286), and gateway-owned service exposure (PR #1101) follow that pattern.
  • They avoid expanding the trusted/listening surface without a durable need. PR #1501 was closed after its downstream blocker disappeared, specifically to avoid an additional listener.
  • They expect a minimal, account-independent reproduction before treating behavior as an OpenShell defect. Issue #760 was closed after its binary echo test proved the relay correct; conversely, focused failing tests are acted on quickly (for example issue #1878 and PR #1880).
  • They prefer generic hooks over integration-specific semantics. The current extensibility roadmap keeps common protocol enforcement in core and routes custom payload validation toward proxy middleware or gateway interceptors.
  • Upstream feature proposals need a design rather than a request to "please build this," agent diagnostic evidence, tests/docs, DCO sign-off, and—for a first external PR—the project's vouch workflow (CONTRIBUTING.md).

Validation sequence

  1. Prove the existing sandbox-to-host REST contract to the VoiceClaw audio bridge after rebuild/re-onboard on each supported driver.
  2. Put a TLS/WSS wrapper on the fixed host speech endpoints and run a binary frame integrity/latency smoke test through OpenShell's existing raw L4 policy path.
  3. Reproduce split-horizon egress directly through OpenShell and compare it with a host-origin request; record the driver, resolved address, policy decision, and upstream dial result.
  4. Probe Node, curl, Python, and git TLS trust before and after gateway respawn and from a new openshell sandbox connect session.
  5. Exercise current openshell service expose behavior with a synthetic signed webhook and record which layer owns TLS termination, caller authentication/HMAC validation, routing, and sandbox policy.

Only confirmed gaps should become separate OpenShell issues. Each upstream issue should have one primitive, a current-version minimal repro, explicit security invariants, and an end-to-end test plan. Ingress follow-up should join the design in OpenShell #994 rather than duplicate it.

Ownership corrections

Acceptance criteria

  • The five current-version validation probes above have reproducible evidence against the NemoClaw-pinned OpenShell release.
  • Existing OpenShell capabilities are recorded as validation contracts rather than filed as duplicate feature requests.
  • Every surviving OpenShell defect has a focused upstream issue or linked fix with a minimal repro and security-preserving acceptance test.
  • Any new binary-media proposal states exactly which protocol and enforcement are missing and why the existing WSS/raw-L4 path is insufficient.
  • Any webhook work extends OpenShell [MacOS] Invalid model Id was ignored and returned successful response #994's gateway-owned service model and separates generic routing/auth controls from provider/plugin-specific behavior.
  • The VoiceClaw built-in messaging-channel MVP tracked in NemoClaw VoiceClaw: onboard OpenClaw voice calling with NVIDIA speech #6387 remains unblocked by optional media/ingress platform work.

Not in this issue

Activity

  1. added
    area: networkingDNS, proxy, TLS, ports, host aliases, or connectivity
    area: sandboxOpenShell sandbox lifecycle, runtime, config, or recovery
    needs: designRequires product or architecture direction
    on Jul 2, 2026
  2. sandl99 commented on Jul 7, 2026

    @sandl99
    Collaborator

    OpenShell VoiceClaw requirements refresh

    Validated against the pinned OpenShell source of truth: v0.0.72 / 8cb16de9eae4c44d7d31e1493747d8c10abb5963.

    The current VoiceClaw POC can keep using the host-side workaround: raw audio stays host-local behind the audio-bridge, and the sandbox sends only text/control REST to host.openshell.internal:7880. The OpenShell requirements below are for the north-star VoiceClaw platform path and for keeping the current workaround stable while that path matures.

    Boundary

    Layer Owns
    OpenShell Sandbox runtime, policies, L7 proxy, service routing, ingress/egress membrane, media/network governance, TLS/proxy env injection
    OpenClaw Agent harness, official voice-call plugin, telephony provider semantics, webhook event parsing, provider contracts
    NemoClaw Reference blueprint wiring OpenShell and OpenClaw together, managed install/persistence path
    VoiceClaw Product voice workflow, Talker, host audio-bridge, NVA/Pipecat services, persona simulation, browser/TURN/UI

    Requirements

    Priority Title Description Reason Why Suggested OpenShell Implementation
    P0 Governed realtime media membrane Add an OpenShell-governed media path for realtime audio streams. OpenShell 0.0.72 can relay WebSocket binary bytes, but only WebSocket upgrade/text messages have policy semantics. WebRTC/TURN-style media is not covered by the 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/sessions. Add protocol: media, or stage support through WEBSOCKET_BINARY, gRPC streaming, and optionally TURN/WebRTC. Include codec/transport allowlist, bitrate/session/concurrency caps, max frame size, direction controls, and OCSF session logging.
    P0 Provider-authenticated call ingress Add public ingress endpoints for call-provider callbacks. Existing service routing exposes sandbox loopback services, but remote callers need normal gateway auth. Twilio/Plivo/Telnyx-style providers need public callback ingress with provider verification, not user auth. Real telephony providers must be able to call back into VoiceClaw safely. OpenClaw can own provider event semantics, but OpenShell should provide the public ingress membrane when the callback crosses the sandbox boundary. Add gateway-managed ingress endpoints with method/path policy, provider verifier, HMAC/signature secret refs, replay window, rate/body limits, and sandbox/plugin target relay. Build on existing service routing where possible.
    P1 Declarative host-local speech service egress Add a first-class contract for host-local speech/persona services. Simple local services can likely use host.openshell.internal plus policy today, but VoiceClaw needs a cleaner contract for Parakeet, Magpie, and PersonaPlex-style local services. The current workaround relies on explicit host/port policy and host service conventions. A named service contract would be easier to audit, persist, test, and make portable across drivers. Add host_services or equivalent: named service, host/port/protocol, optional host-DNS/connect mode, TLS trust, credential handling, allowed binaries, and audit metadata.
    P1 VoiceClaw regression coverage Add tests/scenarios covering the OpenShell behavior VoiceClaw depends on. The old env-loss concern is fixed in 0.0.72, but VoiceClaw depends on this behavior staying stable. VoiceClaw should not regress on sandbox networking, host service access, or injected proxy/TLS behavior as OpenShell evolves. Add tests/scenarios for TLS/proxy env propagation, host-gateway speech service reachability, service routing WebSocket behavior, and media-policy denial behavior once implemented.

    Current workaround versus north-star

    VoiceClaw Need Current Workaround OpenShell North-Star
    Host-local speech services host.openshell.internal:<port> plus narrow REST policy Declarative host_services contract
    Call/provider callbacks Not required by current persona POC Provider-authenticated public ingress
    Realtime audio/media Raw audio stays host-local behind audio-bridge Governed media membrane
    Binary WebSocket audio Avoided by current POC Policy-aware WEBSOCKET_BINARY or protocol: media
    TLS/proxy env behavior Already present in 0.0.72 Regression coverage

    Notes from source validation

    • OpenShell 0.0.72 already supports REST/WebSocket policy, host.openshell.internal, service routing, WebSocket binary relay, and proxy/TLS env injection.
    • WebSocket binary frames are relayed raw; they are not policy-inspected or rewritten like text frames.
    • Service routing can expose sandbox HTTP/WebSocket loopback services, but the service API does not include provider verifier/HMAC/replay fields.
    • The network/proto surface is TCP/CONNECT-oriented; I did not find a UDP/RTP/WebRTC/TURN policy surface in the pinned source.

    Not in this issue

  3. jyaunches commented on Aug 5, 2026

    @jyaunches
    ContributorAuthor

    Closing this VoiceClaw-specific OpenShell validation umbrella because #8275 replaces the former host-bridge and voice-call dependency graph. Existing linked OpenShell issues and confirmed generic defects remain independent and are not closed by this action. Gateway-specific networking, lifecycle, and composed-profile validation should be captured in focused subissues under #8275, while any surviving OpenShell defect should remain in the owning OpenShell project with its minimal reproduction and security invariants.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area: networkingDNS, proxy, TLS, ports, host aliases, or connectivityarea: sandboxOpenShell sandbox lifecycle, runtime, config, or recoveryneeds: designRequires product or architecture directionvoiceclaw

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions