KeenTools License Server Manual

Version 1.4.1

KeenTools License Server in action

The executables for Mac, Windows and Linux can be downloaded from Please, don’t forget to check for updates and download new versions from time to time.

The KeenTools License Server is a command line program, so you need some basic knowledge how to work with command line interfaces. It’s not that difficult though, so don’t be scared.

In the most basic scenario you open terminal in the directory where the License Server executable is placed and use two commands:

./KeenToolsLicenseServer run


./KeenToolsLicenseServer install

The first one you use to start the server and sometimes to get information (Hardware ID, etc). The second one is used when you need to install licenses.

One important thing to remember is that installed licenses are being loaded during startup, so after installing new licenses you need to restart the server to make licenses available for users.

What also important to know is that the License Server will not create the directory where it’s going to store the licenses and read them from, so make sure the directory exists before trying to install a license. The default path is the current directory of the terminal session followed with /licenses/. You can change it passing -l or--location parameters followed witg the desired path string, for example:

./KeenToolsLicenseServer run -l /home/user/licenses/

The longer variant:

./KeenToolsLicenseServer install --location /mnt/secure/keentools/

The same in Windows:

.\KeenToolsLicenseServer install --location C:\licenses\keentools\

Installing Licenses

There are two ways of installing licenses. Using install command and using manual “offline” activation (which still happens online, just indirectly).

The first way can be used when the machine with the License Server is connected to the Internet, or can at least reach Launch the server executable with the install command and the desired licenses folder path, then insert your license codes one by one (pressing enter after each license key) or separated by spaces. You will see a status message for every license you’ve entered. The more advanced way of installing multiple licenses is using the possibilities stdin and command line pipes give us: you can pass all your license codes separated by spaces or new lines right to the input of the launched License Server executable. Below is a couple of examples:

echo 'license1 license2 ...' | ./KeenToolsLicenseServer install
cat licenses.txt | ./KeenToolsLicenseServer install

The second way is useful when the Internet connection is inaccessible from the machine where the License Server is running. First you need to launch license server with the run command to see the Hardware ID. Copy it somewhere and then come to the offline license activation page at KeenTools site from the machine where you can access Internet: On this page enter the Hardware ID and license codes you want to activate into the corresponding fields to get the activated license files. Transfer the activated license files to the machine where the license server is going to work and place them in the licenses directory — the one you’ve pointed to with the --location parameter, or the default one.

If you need to remove an old license just remove the file in the licenses folder and restart the License Server.

Network Settings

By default the License Server is using port 7096. Make sure there are no firewalls restricting connection to the License Server from users’ computers.

You can customize the port using -p or --port parameters:

./KeenToolsLicenseServer -p 9999


./KeenToolsLicenseServer --port 9999

Status Page & API

When the License Server is launched it starts a web-server with a simple status page that can be accessed on port 8080 using any modern browser (http://localhost:8080/status or The status information can also be found in JSON format on the same port if you send a JSON-type request using curl for example. You can change the status server port with parameters -a and --api-port followed with the port number, for example:

./KeenToolsLicenseServer -a 8888


./KeenToolsLicenseServer --api-port 8888

This is how getting JSON status might look:

curl -H 'Accept: application/json' ''

You’ll get something like this as a result:

"licenseId": "4736-****-****-****-****-****-****-850B",
"plugin": "GeoTracker",
"expirationTimestamp": "1569436295",
"expirationTime": "2019-Sep-25 18:31:35 UTC",
"file": "4736-****-****-****-****-****-****-850B"
"licenseLocks": [],
"invalidatedLicenses": []


By default the License Server writes all its output to the log file placed right near the executable file. You can specify where to write logs with --log-file parameter followed with a path. You can also disable logging to a file if you pass the --disable-file-logging parameter.

User Settings

When you work with floating licenses, you need to setup plugins accordingly. On the License tab of a node, in the Floating section specify the host name (or IP address) and the port (default is 7096), then press “Connect” button. If there are no network issues and there is a license available on the server, you’ll see an appropriate message, otherwise you’ll see the error message with hints on what could go wrong.

There’s another more advanced way of setting up user’s nodes — using environment variables. When the plugins are loaded they check KEENTOOLS_LICENSE_SERVER variable, and if it contains a string with a host address and a port number, the plugin will try to connect using it to get a license. Here are some examples of what this variable could contain: localhost (the default port will be used),, server.local:4242,

Options Reference

-h, --help: print usage
-l, --location: license files directory, default is %current_dir%/licenses/
-p, --port: server port number, default is 7096
-a, --api-port: API server port number, default is 8080
--log-file: log file path
--disable-file-logging: disable writing logs to file


Download License Server here:
Follow us: FaceBook, Twitter, Instagram, YouTube