The diagram below outlines the element in a Leapwork setup including relations between the elements.


Studio connects to the Controller using a TCP socket connection on port 9000 (configurable). Studio will always initiate the connection between Studio and the Controller, so TCP connections on the configured port should be allowed from Studio to the Controller.

In Studio, it is possible to configure which Controller to connect to, by specifying the name/IP address and port number for the Controller.


Note, that the Controller will not allow Studio to connect if a user account has not been created on it (see more in [Security]).

It is possible to configure connections to multiple Controllers in Studio, but it is only possible to be connected to one Controller at a time. It is possible for multiple Studios to connect to the same Controller for collaboration purposes.

As part of designing the automation flows it is possible to do a preview run of each flow in Studio. A preview run is like running the automation flow via an Agent, but an Agent is not actually used, even if the local machine has one installed. This means the automation flows can be designed in Studio without occupying automation resources on your environments and without using an Agent license.

All resources, automation flow configurations, images etc. are stored in an embedded database on the Controller. The embedded database is an SQLite database which is located in the Assets folder on the Controller machine (typically, 'c:\Program Files\LEAPWORK\Assets'). The location of the Asset folder is configurable in the controller.config file found in the Leapwork installation directory (Typically, 'c:\Program Files\LEAPWORK').

Read more about data backup of the database here: Backup and restore

On top of facilitating collaboration and storing resources, the Controller is also responsible for execution of automation flows on the Environments, or more specifically, the machines where the Agents are installed. The environments are defined in Leapwork and contain information about how the Controller connects to Agent service; usually the name/IP address and a port number. 


Find more information about how to set up environments here: Working with Leapwork - Environments

The Controller connects to an Agent using the information in the environment, using a closed remote-control protocol on port 6777 (configurable). It will always be the Controller that initiates the connection to the Agent, and the connection can be secured by a password. The password is specified when the Agent is installed and needs to match the password in the Environment. See more in the Security section here: Security.

When an automation flow is executed on an Agent, the Controller sends all necessary information to the Agent, which then executes the flow. The Agent will continuously send screenshots and results back to the Controller using the already open connection.

It is an option – not mandatory – to allow Studio to access an Agent while designing the automation flow. This can be very helpful especially for virtual desktop automation that is based on image and text recognition. To support this, Studio needs to be able to access the Agent the same way the Controller does.