Client Interfaces

PyRogue client interfaces expose a running Root to external tools for automation, monitoring, and operations.

Most deployments use ZmqServer as the server-side transport. The server is added to the Root and clients connect over TCP.

Connection Model

  1. Start the server side from your Root (typically ZmqServer)

  2. Connect one or more clients (simple script client, virtual mirrored client, CLI tools, or GUI)

  3. Perform read/write/command operations against the same tree model

Why This Matters

This model allows one running tree to serve multiple concurrent workflows:

  • Operations GUIs

  • Display GUIs

  • Automation scripts

  • Jupyter notebooks

  • Command-line tools

Choosing An Interface

Use Simple Client Interface when you want lightweight string-path access with minimal client dependencies.

Use Virtual Client Interface when you want a mirrored tree object model with richer metadata and listener behavior.

Use Using the Command Line Client for shell-driven checks, quick reads/writes, and PyDM launch workflows.

Use Python ZMQServer when implementing or configuring the server side in your Root.

Operational Notes

  • Treat remote command paths as part of your public control surface.

  • Keep Variable naming stable to reduce client-side breakage.

  • Document expected polling/update cadence for remote consumers.

  • Prefer 127.0.0.1 for local-only deployments and explicit non-loopback binds for remote access.

API Reference

Minimal Setup Pattern

import pyrogue as pr
import pyrogue.interfaces

class MyRoot(pr.Root):
    def __init__(self, **kwargs):
        super().__init__(name='MyRoot', **kwargs)

        self.zmqServer = pyrogue.interfaces.ZmqServer(
            root=self,
            addr='127.0.0.1',
            port=0,
        )
        self.addInterface(self.zmqServer)