Skip to main content
Catalyst instruments the ElevenLabs Agents SDK in TypeScript and Python. Initialize tracing before starting a conversation so the SDK conversation lifecycle and client-tool callbacks are patched before the session begins. Use this guide for applications that use @elevenlabs/client or the Python elevenlabs.conversational_ai.conversation APIs.

What Is Captured

  • One AGENT span named ElevenLabs Conversation for each conversation session
  • User and agent transcript messages as OpenInference message attributes
  • ElevenLabs metadata such as agent ID, conversation ID, user ID, auth mode, and text-only mode
  • TOOL child spans for registered client tools, including tool name, arguments, result, and errors
  • Error status and exception details when session startup, tool execution, or shutdown fails

Install

TypeScript Conversation Session

Pass the ElevenLabs SDK namespace into setup() before calling Conversation.startSession().
TypeScript
For private agents, use the same tracing setup and pass the signedUrl or conversationToken options that your ElevenLabs app already uses. Catalyst keeps the same outer ElevenLabs Conversation span shape.

Python Conversation Session

Call setup() before constructing and starting the Conversation. This patches the installed ElevenLabs SDK and records the session lifecycle automatically.
Python
audio_interface=None keeps the example text-only. For voice conversations, use your normal ElevenLabs audio interface; the instrumentation records the same conversation span and transcript callbacks.

Stable Agent Identity

Verify In Catalyst

Filter traces by service.name=voice-support. A successful session should show an ElevenLabs Conversation AGENT span with nested TOOL spans when your agent calls lookupAppointment. When you add the wrapper above, the trace also has an outer AGENT span with your stable agent.id. For short-lived scripts, always call tracing.shutdown() before process exit so batched spans are flushed to Catalyst.