> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # Plugins > No-op plugin stubs and inference classes for LiveKit API compatibility. [agentsession]: /docs/server-sdks/reference/typescript/agents/livewire/agent-session LiveWire provides stub classes under the `plugins` and `inference` namespaces that mirror popular livekit-agents plugin constructors so that existing code compiles unchanged. On SignalWire, the platform handles all STT, TTS, LLM, and VAD infrastructure automatically. These classes are no-ops that log an informational message once on first instantiation. > **Note** > > You do not need to install Deepgram, Cartesia, ElevenLabs, Silero, or any other > provider SDK. SignalWire manages the entire AI pipeline in its control plane. > These stubs exist solely so that imports and constructor calls from existing > livekit-agents code do not raise errors. ## **STT Plugins** ### plugins.DeepgramSTT Stub for the LiveKit Deepgram STT plugin. ```typescript {3} import { plugins } from '@signalwire/sdk/livewire'; const stt = new plugins.DeepgramSTT({ model: 'nova-2' }); // No-op: SignalWire handles speech recognition automatically ``` Accepts arbitrary constructor arguments for API compatibility. All are ignored. --- ## **LLM Plugins** ### plugins.OpenAILLM Stub for the LiveKit OpenAI LLM plugin. The constructor accepts arbitrary options for API compatibility. ```typescript {3} import { plugins } from '@signalwire/sdk/livewire'; const llm = new plugins.OpenAILLM({ model: 'gpt-4o' }); ``` All constructor arguments are accepted for API compatibility. To set the LLM model on the SignalWire agent, pass the model string to the [`AgentSession`][agentsession] constructor's `llm` option instead. --- ## **TTS Plugins** ### plugins.CartesiaTTS Stub for the LiveKit Cartesia TTS plugin. ```typescript {3} import { plugins } from '@signalwire/sdk/livewire'; const tts = new plugins.CartesiaTTS({ voice: 'some-voice-id' }); // No-op: SignalWire handles text-to-speech automatically ``` Accepts arbitrary constructor arguments for API compatibility. All are ignored. --- ### plugins.ElevenLabsTTS Stub for the LiveKit ElevenLabs TTS plugin. ```typescript {3} import { plugins } from '@signalwire/sdk/livewire'; const tts = new plugins.ElevenLabsTTS({ voiceId: 'some-voice-id' }); // No-op: SignalWire handles text-to-speech automatically ``` Accepts arbitrary constructor arguments for API compatibility. All are ignored. --- ## **VAD Plugins** ### plugins.SileroVAD Stub for the LiveKit Silero VAD plugin. ```typescript {3} import { plugins } from '@signalwire/sdk/livewire'; const vad = plugins.SileroVAD.load(); // No-op: SignalWire handles voice activity detection automatically ``` #### load ```typescript {1} static load(): SileroVAD ``` Static factory method that mirrors `SileroVAD.load()` from the LiveKit SDK. Returns a new `SileroVAD` instance. Logs an informational no-op message on first call. --- ## **Inference Stubs** The `inference` namespace mirrors the `livekit.agents.inference` module. These classes are available as named exports from the `inference` namespace. ```typescript {3-5} import { inference } from '@signalwire/sdk/livewire'; const stt = new inference.STT('deepgram/nova-2'); const llm = new inference.LLM('gpt-4o'); const tts = new inference.TTS('cartesia/sonic'); ``` ### inference.STT Stub for `livekit.agents.inference.STT`. ```typescript {3} import { inference } from '@signalwire/sdk/livewire'; const stt = new inference.STT('deepgram/nova-2'); ``` > **Note** > > No-op. SignalWire's control plane handles speech recognition automatically. **`model`** `string` — required Model identifier. Accepted for API compatibility. --- Accepts an optional second argument for additional options. All are ignored. --- ### inference.LLM Stub for `livekit.agents.inference.LLM`. This class is a no-op — the constructor accepts but does not store its arguments. To set the LLM model on the SignalWire agent, pass a **plain string** (e.g., `'gpt-4o'`) to `AgentSession({ llm })` instead of an `inference.LLM` instance. ```typescript {3} import { inference, AgentSession } from '@signalwire/sdk/livewire'; const llm = new inference.LLM('gpt-4o'); const session = new AgentSession({ llm }); ``` **`model`** `string` — required Model identifier. A provider prefix (e.g., `"openai/"`) is stripped automatically by the session when building the underlying SignalWire agent. --- Accepts an optional second argument for additional options. All are ignored. --- ### inference.TTS Stub for `livekit.agents.inference.TTS`. ```typescript {3} import { inference } from '@signalwire/sdk/livewire'; const tts = new inference.TTS('cartesia/sonic'); ``` > **Note** > > No-op. SignalWire's control plane handles text-to-speech automatically. **`model`** `string` — required Model identifier. Accepted for API compatibility. --- Accepts an optional second argument for additional options. All are ignored. > No-op plugin stubs and inference classes for LiveKit API compatibility.