-
Notifications
You must be signed in to change notification settings - Fork 609
feat: Add bring-your-own ElevenLabs voice agent support #258
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- Create apiVoice.ts client to fetch conversation tokens from server - Update RealtimeVoiceSession.tsx and .web.tsx to use conversationToken instead of hardcoded agentId for self-hosted deployments - Enables users to configure their own ElevenLabs agent 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add settings fields for elevenLabsUseCustomAgent, elevenLabsAgentId, elevenLabsApiKey - Create UI with toggle to enable custom agent and input fields for credentials - Update apiVoice.ts to pass custom credentials to server when enabled - Add translations for all supported languages (en, es, pl, ru, zh-Hans, ca, pt) - Update settings tests with new fields 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add Find Agent and Create/Update Agent buttons to voice settings - Add show/hide toggle for API key field - Add Save Credentials button - Add ElevenLabs agent management API functions (findHappyAgent, createOrUpdateHappyAgent) - System prompt is now embedded in code as single source of truth - Add translations for all new UI elements 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add help link that opens ElevenLabs API keys page - Update description to include required permissions: - "ElevenLabs Agents" (Write) for agent management - "Text to Speech" (Access) for TTS - Add getApiKey translation to all language files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Logs are now enabled when PUBLIC_EXPO_DANGEROUSLY_LOG_TO_SERVER_FOR_AI_AUTO_DEBUGGING is set. All voice session callbacks now log with [Voice] prefix. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Allows muting the microphone during voice sessions without ending the session. When muted, audio is not sent to the LLM but the session stays active. Note: Mute functionality only works on web (native SDK limitation). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
|
(Update: ran some limited PR tests via the happy-devbox repo that simulates a monorepo linking the commits in these PRs together.) E2E Tests This PR includes working E2E tests using Playwright:
CI validation runs ./scripts/validate.sh which includes:
Green CI Run: https://github.com/rrnewton/happy-devbox/actions/runs/19894554194/job/57021496616 |
|
can maintainers please merge this? |
Summary
Adds support for users to configure their own ElevenLabs API key and voice agent instead of using the default Happy voice agent. This enables self-hosted deployments and users who want to customize their voice
assistant experience.
Changes
apiVoice.tsmodule for fetching voice tokens with custom credentials and direct ElevenLabs API callsEXPO_PUBLIC_DEBUG_VOICEenv varHow it works
Testing
Manual Test plan