Requires the websocket extra:
uv add "pipecat-ai[websocket]"WebSocketProxyClient
Forwards bus messages to a remote agent over WebSocket. Connects to a WebSocket URL and forwards messages between a local agent and a remote agent. The proxy does not take abus in its constructor. It receives the shared bus when registered with the runner via add_workers().
Configuration
str
required
Unique name for this agent.
str
required
The WebSocket URL to connect to.
str
required
Name of the agent on the remote server. Only messages targeted at this agent
are forwarded.
str
required
Name of the local agent that should receive responses. Only inbound messages
targeted at this agent are accepted.
tuple[type[BusMessage], ...]
default:"()"
Additional message types to forward from the local agent (e.g.
(BusFrameMessage,) for frame routing). These are forwarded based on source
agent name only, regardless of target.dict[str, str] | None
default:"None"
Optional HTTP headers sent with the WebSocket handshake (e.g. for
authentication).
MessageSerializer | None
default:"None"
Serializer for bus messages. Defaults to
JSONMessageSerializer.bool
default:"False"
Whether the agent starts active. Defaults to
False because on_activated
opens the WebSocket connection, which is usually a deliberate action triggered
by an upstream event (e.g. the local client connecting). Pass True to
connect as soon as the agent starts.Event Handlers
WebSocketProxyServer
Receives bus messages from a remote client over WebSocket. Accepts a FastAPI/Starlette WebSocket connection and forwards messages between the remote client and a local agent. Like the client, the server does not take abus in its constructor; it receives the shared bus when registered with the runner via add_workers().
Configuration
str
required
Unique name for this agent.
WebSocket
required
An accepted FastAPI/Starlette WebSocket connection.
str
required
Name of the local agent to route messages to/from. Only messages from this
agent are forwarded to the client.
str
required
Name of the agent on the remote client. Only outbound messages targeted at
this agent are sent. Only inbound messages targeted at the local agent are
accepted.
tuple[type[BusMessage], ...]
default:"()"
Additional message types to forward from the local agent (e.g.
(BusFrameMessage,) for frame routing). These are forwarded based on source
agent name only, regardless of target.MessageSerializer | None
default:"None"
Serializer for bus messages. Defaults to
JSONMessageSerializer.