***

title: Plugins
slug: /reference/typescript/agents/livewire/plugins
description: No-op plugin stubs and inference classes for LiveKit API compatibility.
max-toc-depth: 3
---------------------

For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

[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.
</Note>

## **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.
</Note>

<ParamField path="model" type="string" required={true} toc={true}>
  Model identifier. Accepted for API compatibility.
</ParamField>

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 });
```

<ParamField path="model" type="string" required={true} toc={true}>
  Model identifier. A provider prefix (e.g., `"openai/"`) is stripped automatically
  by the session when building the underlying SignalWire agent.
</ParamField>

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.
</Note>

<ParamField path="model" type="string" required={true} toc={true}>
  Model identifier. Accepted for API compatibility.
</ParamField>

Accepts an optional second argument for additional options. All are ignored.