LOP Studio Connector
The LOP Studio Connector is a system-level component that establishes a WebSocket connection between your TouchDesigner project and the LOP Studio Dashboard. It streams AsyncIO task status, FlowController/ProcessRunner updates, and AgentSession chat messages to the external dashboard UI in real time.
This is not a placeable operator — it lives inside the LOPs system infrastructure and runs automatically when LOPs is loaded.
Overview
Section titled “Overview”The connector serves as a two-way bridge:
- TouchDesigner to Dashboard: Pushes task progress, process runner state, and chat events as they happen inside TD.
- Dashboard to TouchDesigner: Receives commands to cancel tasks, start/stop processes, advance flow steps, and send chat messages to AgentSession operators.
Connection is managed through a WebSocket DAT with automatic reconnection, heartbeat monitoring, and silent-disconnect detection.
Key Features
Section titled “Key Features”- Real-time AsyncIO task table monitoring with automatic push on change
- FlowController and ProcessRunner discovery via tag-based scanning, with remote start/stop/next-step control
- AgentSession chat bridge: open, send, abort, close, rename, and redo sessions from the dashboard
- Session transcript retrieval and session listing for connected AgentSessions
- Extensible action handler registry — other LOPs can register custom WebSocket message handlers without modifying the connector
- Connection health monitoring with 30-second heartbeats and 60-second timeout-based auto-reconnect
- Targeted message routing so multi-client dashboards receive only their own responses
How It Connects
Section titled “How It Connects”On initialization (or when ‘Auto Connect’ is enabled), the connector opens a WebSocket to the configured server address and sends a connect handshake containing the project name, TD version, and component path. Once the dashboard responds with a client ID, the connector begins streaming task and process runner data.
If the connection drops, auto-reconnect attempts resume after a short delay. A periodic heartbeat keeps the connection alive, and if no server response is received for 60 seconds the connector forces a clean reconnect.
Action Handler Registry
Section titled “Action Handler Registry”Other LOPs can extend the connector’s WebSocket capabilities without editing its code. Call register_action_handler with an action name and a callable that receives the payload dict. When the dashboard sends a message with that action, the registered handler processes it and optionally returns a response dict that gets routed back to the requesting client.
AgentSession Chat Bridge
Section titled “AgentSession Chat Bridge”The connector discovers AgentSession operators by the agent_sessionLOP tag and only routes commands to sessions that have their ‘Expose Chat’ parameter enabled. Supported commands from the dashboard include opening sessions, sending messages, aborting, closing, renaming, redoing messages, and retrieving full session transcripts. Chat events flowing from TD back to the dashboard are automatically targeted to the frontend client that initiated the conversation.
Parameters
Section titled “Parameters”Connection
Section titled “Connection”op('lop_studio_connector').par.Serveraddress Str - Default:
"" (Empty String)
op('lop_studio_connector').par.Projectname Str - Default:
"" (Empty String)
op('lop_studio_connector').par.Autoconnect Toggle - Default:
False
op('lop_studio_connector').par.Connectionstatus Str - Default:
"" (Empty String)
op('lop_studio_connector').par.Clientid Str - Default:
"" (Empty String)
op('lop_studio_connector').par.Tasksmonitored Int - Default:
0- Range:
- 0 to 1
- Slider Range:
- 0 to 1
op('lop_studio_connector').par.Sendtasks Pulse - Default:
False
op('lop_studio_connector').par.Sendprocessrunners Pulse - Default:
False
op('lop_studio_connector').par.Sendagents Pulse Send chat_agents list over WebSocket (uses agent_sessionLOP tag)
- Default:
False
Changelog
Section titled “Changelog”v0.1.02026-02-28
- Replace JWT HTTP auth flow with WebSocket nonce-based auth for TD web viewer - Remove GetTDEmbedToken and _get_current_jwt_token methods - Send auth nonce over existing WS connection instead of separate HTTP round-trips
- Update manifest.json with accurate description - Add proper README with features and developer notes
- Initial commit