Skip to content

Floating Controller

Getting Started#

JEB Pro Floating licenses provide more flexibility than individual JEB Pro licenses, and can be distributed to many users within an organization. A floating build licensed for N seats will allow any N clients to connect to it concurrently. When a client leaves, its seat is vacated, allowing another JEB client to start.

JEB Clients regularly probe the Controller to determine whether or not they are allowed to run. The check is based on the number of seats available in your licensed build: for example, a floating license for 5 seats allows 5 different users to run JEB concurrently.

In order to start the Controller, use the --controller flag along with the -c flag. Example, on Windows:

$ jeb_wincon.bat -c --controller

Additional Controller-specific command-line flags (--interface, --port, --protocol) are detailed below.

After starting the Controller, follow the prompt: You will be asked to input your password, accept the license agreement, and generate a license key.

License key

A single license key should be generated, for the controller only. Floating clients to not need license keys.

Sample log output:

C:\jeb>jeb_wincon.bat -c --controller
JEB decryption password: ***************
Write "yes" to agree, then press enter: yes
Hello Nicolas Falliere. Set up your JEB controller by generating a license key. This one-time operation will only take a few seconds.
Please visit, and use the following "license data" blob to generate a key
License data: .............................................
Input your license key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Mode: Controller for floating clients
Note: X client(s) may simultaneously connect to this controller instance
Listening on

If you need to customize the Controller's address or protocol, you may now stop it with the Ctrl+C keyboard command.

Controller Settings#

After the first step is completed successfully, executing the controller should display something like the following:

C:\jeb>jeb_wincon.bat -c --controller
Mode: Controller for floating clients
Note: X client(s) may simultaneously connect to this controller instance
Listening on

As can be seen, by default, the controller is listening on port 23477 on all interfaces, and uses the HTTP protocol. This can be changed by editing the configuration file bin/jeb-client.cfg and adding entries:

  • .ControllerInterface = ... (default: 23477)
  • .ControllerPort = ... (default: all interfaces)
  • .ControllerProtocol = ... (default: 0 (HTTP))

Protocols currently supported are HTTP (0, the default) and HTTPS (1).


  • Example: the Controller listens on all interfaces, port 30000, default protocol (HTTP):
.ControllerPort = 30000
  • Example: the Controller listens on all interfaces, default port (23477), uses HTTPS (protocol 1):
.ControllerProtocol = 1
  • Example: the Controller listens exclusively on localhost, port 30000, uses the default protocol HTTP:
.ControllerInterface = localhost
.ControllerPort = 35000
  • Example: the Controller listens on all interfaces, port 35000, explicitly uses HTTP (protocol 0):
.ControllerPort = 35000
.ControllerProtocol = 0
  • Example: the Controller listens on, port 8443, and uses HTTPS instead of HTTP:
.ControllerInterface =
.ControllerPort = 8443
.ControllerProtocol = 1

Client Settings#

Start your desktop client using one of the standard start-up scripts. For example, on a Windows machine:

$ jeb_wincon.bat

Your JEB client settings should mirror your Controller settings: specify the controller hostname/interface, port, and protocol, in your client's jeb-client.cfg.

The first time you start your JEB UI client, a dialog box will request you to specify your Controller's location. You will also have the opportunity to configure your proxy settings, if you are using one.

You may also configure your client's settings by directly editing jeb-client.cfg.


  • Example: the Controller to connect to is at, default port (23477), default protocol (HTTP):
.ControllerInterface =
  • Example: the Controller to connect to is at, port 30000, protocol HTTP (explicitly specified):
.ControllerInterface =
.ControllerPort = 35000
.ControllerProtocol = 0
  • Example: the Controller to connect to is at, port 8443, protocol HTTPS:
.ControllerInterface =
.ControllerPort = 8443
.ControllerProtocol = 1

Intranet Portal#

Your controller portal can be reached by visiting the web page: ControllerProtocol://ControllerInterface:ControllerPort, e.g. or It displays information about the controller capacity and currently connected clients.

Note that if the selected protocol is https, the browser may notify you that the certificate used is insecure. You may disregard this warning, the certificate is self-signed.

Technical Notes#

  • JEB Clients as well as JEB Controller are the same binary file: there is no separate package for the Controller.
  • The --controller flag and other floating-specific flags are only available for Floating builds.
  • The Controller should be started before Clients.
  • Clients regularly 'ping' the Controller. Therefore, the Controller should always be reachable by running instances of JEB client. To minimize potential problems due to network latency, it is recommended to run JEB and the Controller within the same local network (if possible).
  • By default, the Controller listens on all interfaces, on port 23477, and uses the HTTP protocol for communication with its clients. This can be changed by setting the .ControllerInterface, .ControllerPort, .ControllerProtocol values in your configuration file.
  • By default, the Controller and clients use HTTP for communication. In order to use HTTPS, make sure to set the .ControllerProtocol value in your configuration file to 1. (HTTPS is only available for JEB 3.0.6 and above.)
  • JEB client instance and the Controller may be run in different environments (e.g., a Controller on Linux, Clients on Windows or macOS, etc.)
  • The controller property .ControllerMessage is used to provide messages, visible by clients on the Controller portal.
  • Controller settings can be provided by command-line flags --interface=, --port=, --protocol=. They take precedence over the settings in jeb-client.cfg. Examples:
    • Start a controller on Linux, port 36000, listen on interfaces specified in the configuration file (or all if none are specified): -c --controller --port=36000
    • Start a Windows client: -c --controller --interface= --port=36000

Updating the Controller#

There is no auto-update feature in the controller. The update procedure is:

  • Check your registered email address for a JEB update email ("JEB xxx is available...")
  • Download the software archive
  • Copy the archive to the root of your JEB folder and rename the file to
  • Create a text file named update.pwd
  • Store the email-provided password inside this file
  • Start your controller as normal (e.g., ... -c --controller); the update will be installed automatically