[Epic] Establish an experimental voice gateway for NemoClaw agents
- Dominant language
- TypeScript
- Stars
- 22.5k
- Forks
- 3.1k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 715
Description
## Outcome
NemoClaw establishes an experimental voice gateway that connects authenticated voice sessions to one server-configured OpenClaw agent.
The gateway replaces VoiceClaw's direct access to the OpenClaw agent gateway. It does not replace the VoiceClaw voice runtime.
NemoClaw owns session admission, agent binding, delegated access, lifecycle policy, cleanup, compatibility declarations, and validation evidence. Voice runtimes retain their native clients, media paths, speech services, and interaction protocols.
The common NemoClaw boundary is a committed user turn, a streaming agent response, and explicit completion, agent-response cancellation, and failure outcomes. Runtime-specific protocols terminate in their integration layers. NemoClaw does not require every runtime to implement one public voice protocol.
This epic uses two runtime targets:
1. **Initial target: VoiceClaw.** Its existing runtime supplies the client and media path.
2. **Deferred second target: ElevenLabs Speech Engine.** Its provider-managed voice loop uses the ElevenLabs-native client and server integration path.
> **VoiceClaw protocol note:** VoiceClaw's client and runtime path uses RTVI over WebRTC. NemoClaw does not implement RTVI. NemoClaw tests the pinned VoiceClaw profile as a composed E2E path. Protocol implementation requirements remain in VoiceClaw.
The first milestone implements only the VoiceClaw path. A later milestone will test ElevenLabs Speech Engine against the same compatibility, security, lifecycle, and E2E requirements. Passing those requirements with both profiles will demonstrate that the gateway can integrate two different voice runtimes.
Opening this epic does not establish product support. Maintainers must accept the ownership, lifecycle, compatibility, security, and validation expectations before NemoClaw publishes a support claim.
## Context
Issue #7781 and PR #7787 define a narrow authenticated signaling proxy for one fixed loopback voice runtime. That work is useful for the VoiceClaw integration, but it does not define the complete NemoClaw voice capability.
The current VoiceClaw proof of concept owns both the voice runtime and its direct OpenClaw integration. For each media connection, VoiceClaw creates an agent session, uses a deployment-wide operator credential, submits agent turns, interprets native agent events, and suppresses stale output after interruption.
Some VoiceClaw integration code runs inside the NemoClaw sandbox. Its runtime location does not make its contracts or lifecycle NemoClaw-owned.
Without a NemoClaw-owned boundary, each voice runtime must independently decide how to authenticate users, select agents, hold credentials, bind sessions, invoke agents, handle cancellation, and report failures. Those decisions affect the NemoClaw trust boundary even when another component handles the audio path.
This epic defines that broader boundary. Capability-specific implementation and acceptance criteria belong in linked subissues.
## Migration boundary
This epic separates three classes of work:
- **Remains in VoiceClaw** means VoiceClaw continues to implement and control that runtime behavior.
- **Moves into the NemoClaw voice gateway** means the proof of concept already implements the behavior, but the gateway becomes authoritative for its contract and policy.
- **Net-new gateway work** means the proof of concept has no authoritative implementation of the required behavior.
| Classification | Responsibilities |
|---|---|
| Remains in VoiceClaw | Native client connectivity; WebRTC and RTVI termination; real-time media; voice activity detection; speech recognition and synthesis; fast acknowledgement; speech-floor arbitration; immediate playback interruption; VoiceClaw-specific response parsing and UI event mapping. |
| Moves from VoiceClaw into the NemoClaw voice gateway | Authentication to the OpenClaw agent gateway; OpenClaw agent-session creation and association with the VoiceClaw runtime session; agent-turn submission; OpenClaw request and event correlation; response ordering and stale-response suppression; current terminal-state detection; cleanup of the direct agent-gateway connection; top-level lifecycle authority for a NemoClaw-managed local VoiceClaw runtime. |
| Net-new in the NemoClaw voice gateway | Per-session authentication and authorization; trusted runtime profile and agent selection; the canonical user, voice-session, runtime-conversation, and agent-session binding; session-scoped delegated access; stable turn and response identities; distinct completed, failed, cancelled, and expired outcomes; authoritative semantics for response supersession, agent-generation cancellation, and durable-work cancellation; explicit expiry and disconnect policy; content-free correlated lifecycle diagnostics; compatibility declarations and support evidence; the lifecycle contract, profile metadata, and enforcement mechanisms for NemoClaw-managed local runtime components. |
The exact migration seam in VoiceClaw is its current direct OpenClaw integration. The VoiceClaw integration layer will exchange committed turns and correlated responses with the NemoClaw voice gateway instead of holding a broad agent-gateway credential and invoking OpenClaw directly.
### Current VoiceClaw proof-of-concept journey
```mermaid
sequenceDiagram
participant U as User application
participant V as VoiceClaw runtime
participant O as OpenClaw agent gateway
participant A as Agent
U->>V: Connect with WebRTC and RTVI
V->>V: Create a random runtime session
V->>O: Authenticate with a shared operator credential
V->>O: Create an agent session
U->>V: Send audio
V->>V: Run voice activity detection and speech recognition
V->>V: Produce a fast acknowledgement
V->>O: Submit an agent turn
O->>A: Invoke the agent
A-->>O: Return native agent events
O-->>V: Stream native agent events
V-->>U: Return synthesized audio and UI events
U->>V: Barge in or stop
V->>V: Stop playback and suppress stale output
Note over V,O: Agent work can continue until a terminal state
U->>V: Disconnect
V->>O: Close the gateway connection
Note over V,O: The POC has no authoritative session expiry or cleanup binding
```
### Target VoiceClaw journey through the NemoClaw voice gateway
```mermaid
sequenceDiagram
participant U as User application
participant G as NemoClaw voice gateway
participant V as VoiceClaw runtime
participant O as OpenClaw agent gateway
U->>G: Request a voice session
G->>G: Authorize the user and select the profile and agent
G-->>U: Return the voice-session ID and a short-lived grant
U->>V: Connect with WebRTC and RTVI using the grant
V->>G: Bind the runtime conversation to the voice session
G->>O: Create or bind the agent session
O-->>G: Report the agent session is available
G-->>V: Report the runtime binding and expiry
Note over U,V: Audio and RTVI remain between the client and VoiceClaw
U->>V: Send audio
V->>V: Run voice activity detection and speech recognition
V->>V: Produce an optional fast acknowledgement
V->>G: Submit the committed text turn with a stable turn ID
G->>O: Invoke the bound agent turn
O-->>G: Stream native agent events
G-->>V: Stream correlated response text and a terminal outcome
V-->>U: Return synthesized audio and UI events
U->>V: Barge in or stop
V->>V: Stop playback immediately
V->>G: Cancel or supersede the response
G->>O: Apply the accepted cancellation policy
G-->>V: Report the cancellation outcome
U->>V: Disconnect
V->>G: Report runtime detachment
G->>G: Expire delegated access and apply cleanup policy
```
The operation names in this journey are logical responsibilities, not a proposed public voice protocol. The accepted design decision must select the concrete NemoClaw and OpenClaw interfaces.
VoiceClaw continues to stop playback immediately. Its existing stale-output suppression moves behind the gateway as compatibility behavior. The gateway adds authoritative semantics that distinguish playback stop, response supersession, agent-generation cancellation, and durable-work cancellation.
The VoiceClaw-to-gateway exchange contains:
- runtime attachment and lifecycle status;
- committed user text with voice-session and turn identities;
- correlated streaming response text and terminal outcomes;
- agent-response cancellation or supersession; and
- runtime detachment.
The exchange does not contain:
- RTP or encoded audio;
- RTVI messages;
- interim speech-recognition results;
- voice activity frames;
- synthesized audio;
- VoiceClaw speech-floor state; or
- VoiceClaw-specific UI envelopes.
## Why ElevenLabs Speech Engine is the second target
ElevenLabs Speech Engine represents a different runtime architecture. ElevenLabs owns the client voice loop, speech recognition, synthesis, turn-taking, interruption, and playback. Speech Engine delivers transcribed user input and conversation context to a customer-hosted text-generation service, then consumes streaming response text.
This path does not need VoiceClaw or its client and media protocols. A future NemoClaw integration can extract each committed user turn and map the Speech Engine session to the same agent-session behavior used by the VoiceClaw path.
Speech Engine is the preferred ElevenLabs target because OpenClaw remains the agent runtime, while NemoClaw owns session admission and the agent-session boundary. Using ElevenLabs-hosted agent orchestration would test a different product boundary.
The ElevenLabs implementation is not part of the first milestone. Its later compatibility and E2E test evidence will determine whether the NemoClaw boundary is runtime-neutral rather than VoiceClaw-specific.
## Runtime targets
| Stage | Runtime | Native interaction model | Purpose |
|---|---|---|---|
| Initial | VoiceClaw | VoiceClaw client and voice loop | Establish the authenticated gateway and agent-session boundary. |
| Deferred | ElevenLabs Speech Engine | Provider-managed voice loop that exchanges transcribed input, conversation context, and streaming response text with NemoClaw | Test the same compatibility contract through a different runtime architecture. |
## NemoClaw ownership
NemoClaw owns:
- authentication and authorization for each voice session;
- selection of the runtime profile and agent from trusted configuration;
- binding among the user, voice session, runtime conversation, and agent session;
- credential custody and agent access that applies least privilege;
- the runtime-neutral agent-turn boundary over an OpenClaw interface selected by an accepted design decision;
- the accepted mapping from each runtime's native events into that boundary, even when a managed component implements it;
- ordering, agent-response cancellation, expiry, failure, and cleanup behavior;
- status and correlated lifecycle diagnostics that omit credentials and conversational content;
- lifecycle authority for NemoClaw-managed local runtime components;
- hosted-runtime credential, policy, and compatibility requirements; and
- the tests and evidence required for each compatibility and support decision.
NemoClaw owns the mapping contract, but a runtime integration layer may implement it. The voice runtime continues to terminate its native protocols.
The voice runtime owns:
- client connectivity and real-time media;
- WebRTC or another runtime-native transport;
- speech recognition and synthesis;
- voice activity and turn detection;
- interruption detection and playback; and
- termination of its native client and media protocols.
An external application owns its UI, prompts, tools, data, answer content, and evidence presentation.
The configured agent must not need to understand audio formats, media transports, speech-provider behavior, or runtime-native protocols. NemoClaw must use an agent interface selected by an accepted design decision rather than create a second agent protocol for voice.
## Constraints and non-goals
- No replacement audio or media protocol.
- No universal client or runtime voice protocol in NemoClaw core.
- No speech recognition, synthesis, turn detection, playback, or media transcoding in NemoClaw core.
- No application-specific voice UI, prompts, tools, data, or answer schemas in NemoClaw.
- No arbitrary client-selected runtime, agent, or forwarding destination.
- No ElevenLabs implementation or support claim in the first milestone.
- The initial milestone does not persist conversational content.
- No speculative runtime marketplace or integration-layer framework.
- No runtime becomes a supported surface before it passes the support requirements from an accepted design decision.
## Epic completion
- [ ] Maintainers accept the product scope and the ownership, lifecycle, security, compatibility, and support boundaries.
- [ ] NemoClaw exposes one runtime-neutral agent-session boundary that does not include runtime-native media, client protocols, or provider-specific speech behavior.
- [ ] The VoiceClaw integration uses the NemoClaw voice gateway instead of a broad agent-gateway credential and direct OpenClaw session management.
- [ ] The gateway supplies the net-new admission, trusted selection, binding, identity, expiry, cleanup, and diagnostic behavior defined in this epic.
- [ ] One pinned VoiceClaw runtime profile passes the authentication, lifecycle, compatibility, security, cleanup, and composed E2E test requirements from an accepted design decision.
- [ ] A later ElevenLabs Speech Engine integration passes the same compatibility, security, lifecycle, and E2E test requirements through its provider-native interface.
- [ ] Both runtime profiles pass the same agent-session compatibility contract through different runtime-native interfaces.
- [ ] NemoClaw publishes support claims only for exact runtime profiles that pass the support requirements from an accepted design decision.
The first milestone ends after the VoiceClaw integration. The cross-runtime objective remains incomplete until the deferred ElevenLabs integration passes the shared compatibility and E2E test requirements.
## Category
Feature
## Checklist
- [x] I searched open and closed issues and found no duplicate of this broader capability.
- [x] I described the problem and desired behavior.
## Superseded work
This epic supersedes #5998 and #6387 as the active NemoClaw voice-integration direction. It also supersedes #7781 and PR #7787 as the implementation starting point. Security controls from the narrow signaling-proxy experiment may be reused in runtime-specific adapters, but its signaling routes and deployment-token model are not the NemoClaw voice-gateway contract.
Issues #6201 and #6207 are not dependencies of this epic. Independently useful OpenClaw or OpenShell requirements should remain tracked in their owning projects. Gateway-specific compatibility, lifecycle, and validation requirements belong in linked subissues under this epic.
## Initial VoiceClaw profile
The initial VoiceClaw target pins Nemotron Speech for ASR and TTS. Completion requires one end-to-end voice turn through the pinned VoiceClaw and Nemotron Speech profile, with the configuration, authentication, lifecycle, security, cleanup, and validation evidence required by this epic.
The ElevenLabs Speech Engine target remains deferred and does not gate completion of the initial VoiceClaw target.
Contributor guide
Assessment
This issue has not been assessed yet.