ElevenLabs Voice Setup

Kravos.ai uses ElevenLabs for live conversational voice. The sync flow exists so admins can manage voice behavior in Kravos.ai, then push the matching agent ...

ElevenLabs Voice Setup

Kravos.ai uses ElevenLabs for live conversational voice. The sync flow exists so admins can manage voice behavior in Kravos.ai, then push the matching agent and tools to ElevenLabs.

Required Server Configuration

SettingWhy it is needed
ELEVENLABS_API_KEYLets Kravos.ai list voices and LLMs, create or update agents and tools, fetch signed URLs, and fetch audio.
ELEVENLABS_WEBHOOK_SECRETVerifies incoming ElevenLabs webhook events before queuing transcript work.
PUBLIC_APP_URL or NEXTAUTH_URLBuilds public tool webhook URLs for retrieval, media search, and skill fetching.
worker + RedisProcesses webhook events and post-call fallback transcript jobs.

Public URL matters

ElevenLabs must be able to reach the URLs Kravos.ai sends during sync. In development, use a public tunnel URL. In production, use the real app URL.

Basic Setup Flow

  1. Open the agent's Voice settings or Voice Lab.
  2. Enable voice.
  3. Pick an ElevenLabs voice.
  4. Pick an ElevenLabs LLM, or leave it empty to use the ElevenLabs default.
  5. Set the voice agent name, language, and prompt.
  6. Save the local config.
  7. Select Sync to ElevenLabs.
  8. Run a short Voice Lab session and inspect the transcript and tool calls.

The voice picker calls ElevenLabs voice search through Kravos.ai. The LLM picker calls the ElevenLabs conversational LLM list and shows model capabilities such as context window, output limit, image support, document support, and parallel tool support when ElevenLabs returns that metadata.

What Sync Creates Or Updates

Sync creates or patches:

  • one ElevenLabs conversational agent
  • a retrieval tool that calls /api/retrieve
  • a media search tool that calls /api/media/search
  • a skill fetch tool only when the agent has active skills

After a successful sync, Kravos.ai stores the ElevenLabs agent ID, tool IDs, lastSyncedAt, and a sync fingerprint. The fingerprint covers the synced agent name, prompt, skill catalog section, voice, LLM, and tool endpoints.

Import From ElevenLabs

Use Import from ElevenLabs when the live ElevenLabs agent has changes you want to pull into Kravos.ai.

Import reads the remote agent and overwrites these local fields when the remote value exists:

  • agent name
  • system prompt
  • voice ID
  • LLM

Import clears lastSyncedAt and the sync fingerprint because the local config now matches remote fields but has not yet been pushed by Kravos.ai. Sync again if you want the local record to become the new tracked source.

Diff And Sync Status

Voice Lab can compare local config with the live ElevenLabs agent.

The diff checks:

  • agent name
  • effective system prompt
  • voice ID
  • LLM
  • which side appears newer by timestamp
  • whether local config drifted since the last sync fingerprint
  • whether retrieval, media, and skill tool webhook URLs match the expected app URL

Sync status is simpler. It checks whether the remote agent and required tools exist and whether their webhook URLs are wired correctly.

No rollback workflow yet

The current implementation supports compare, import, and sync. It does not store historical voice config versions or provide a one-click rollback. If you need rollback, copy the previous prompt, voice ID, and LLM before syncing.

Audit Behavior

Voice sync and import write audit log entries with the acting user and remote resource. Sync records the operation, tool IDs, and webhook endpoints. Import records the remote fields it pulled in. Tool API keys are not written to the audit payload.

Troubleshooting

ELEVENLABS_API_KEY is not configured

Set ELEVENLABS_API_KEY in the web app environment and restart the server.

Sync says the app URL is missing

Set PUBLIC_APP_URL for production or a tunnel URL for local testing. If PUBLIC_APP_URL is absent, Kravos.ai falls back to NEXTAUTH_URL where supported.

Diff shows tool URLs do not match

The ElevenLabs tool is still pointing at an older app URL. Confirm the current public URL, then run Sync to ElevenLabs again.

Remote is newer

Someone changed the ElevenLabs agent outside Kravos.ai. Use Import from ElevenLabs to pull those fields into Kravos.ai, or use Sync to ElevenLabs to overwrite the remote agent with local settings.

Voice answers without retrieved knowledge

Re-sync the agent and confirm the retrieval tool exists. The synced prompt instructs the voice agent to call search_knowledge_base before answering factual questions.

Voice

Understand how voice sessions map to conversations, transcripts, audio, and tools.

Skills

See how active skills add a private fetch tool during voice sync.

API Keys

Understand public API keys and the managed keys used by voice tooling.

Last updated: August 2026