Skip to content

LOP Studio Connector

v0.1.0New

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.

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.

  • 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

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.

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.

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.

Server Address (Serveraddress) op('lop_studio_connector').par.Serveraddress Str
Default:
"" (Empty String)
Project Name (Projectname) op('lop_studio_connector').par.Projectname Str
Default:
"" (Empty String)
Auto Connect (Autoconnect) op('lop_studio_connector').par.Autoconnect Toggle
Default:
False
Connection Status (Connectionstatus) op('lop_studio_connector').par.Connectionstatus Str
Default:
"" (Empty String)
Client ID (Clientid) op('lop_studio_connector').par.Clientid Str
Default:
"" (Empty String)
Tasks Monitored (Tasksmonitored) op('lop_studio_connector').par.Tasksmonitored Int
Default:
0
Range:
0 to 1
Slider Range:
0 to 1
Send Current Tasks (Sendtasks) op('lop_studio_connector').par.Sendtasks Pulse
Default:
False
Send Process Runners (Sendprocessrunners) op('lop_studio_connector').par.Sendprocessrunners Pulse
Default:
False
Send AgentSessions (Sendagents) op('lop_studio_connector').par.Sendagents Pulse

Send chat_agents list over WebSocket (uses agent_sessionLOP tag)

Default:
False
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