KeenTools License Server Manual

Version 1.5.4

KeenTools License Server in action

The executables for Mac, Windows and Linux and FAQs can be found at the license server page of our site.

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 three commands: info, install (with aliases i and if) and run.

The first one you use to get information (Hardware ID, etc). The second one is used when you need to install licenses. The third one is used when you want to actually start the serving process.

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.

The default path for storing licenses is the current directory of the terminal session followed with /licenses/. You can change it passing -l or -location parameter followed with the desired path string, for example:

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

the longer variant:

./KeenToolsLicenseServer install --location /media/licenses/keentools/

the same in Windows:

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

You can install (i.e. activate) a license using license server and its install command or using the manual activation page at our site. Obviously, the first way requires Internet connection (, port 443) for the license server.

There are three ways you can install licenses using License Server: passing license IDs as arguments after install command, specifying a file with license IDs separated with spaces or new lines, and entering license IDs in an interactive mode (the old way that was the only option before version 1.4.6).

So, installing a license with License Server and license IDs as arguments would look like this:

./KeenToolsLicenseServer install license-id-1 license-id-2 …

or if we want to specify the licenses folder, it may look like this:

./KeenToolsLicenseServer install -l /path/to/licenses/ license-id-1 license-id-2 …

or you can use the shorthand i:

./KeenToolsLicenseServer i license-id-1 …

Note that in some terminals you’d need to place license IDs inside quotes.

If you have a file with a number of license IDs in it, you can specify a path to it using -f (--file) flag, so the command would look like this:

./KeenToolsLicenseServer install --file ./license-ids.txt

If we use a shorthand and a short flag, it’d look like this:

./KeenToolsLicenseServer i -f ./license-ids.txt

Also we can use a specialised if shorthand:

./KeenToolsLicenseServer if ./license-ids.txt

Finally, we can use old interactive mode, it’s activated if you don’t pass any licenses or -f flag to install command:

./KeenToolsLicenseServer install

or a short variant with a custom path:

./KeenToolsLicenseServer i -l /path/to/licenses

Once you launch it in the interactive mode, you can past license IDs one by one or separated by new lines and press Enter after it, they’ll be installed one by one.

When Internet connection is not available, you can install licenses using manual semi-offline mode.

First you need to launch license server with the info command to get 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 (that one you point to with the--location parameter).

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

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 run -p 9999


./KeenToolsLicenseServe run --port 9999

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 run -a 8888


./KeenToolsLicenseServer run --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.

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 our plugins are loaded they check KEENTOOLS_LICENSE_SERVER variable, and if it contains a string with a host address and/or a port number they try to connect using it and get a license. Here are some examples of what this variable could contain: localhost (the default port will be used),, server.local:4242,

Instead of wasting time with built-in Windows tools for creating services, we highly recommend you to use the ‘Non-Sucking Service Manager’. It’s free and easy to use. You can get it here:

-h, --help: print usage
-l, --location: license files directory, default is <current_directory>/licenses
-f, --file: file with license IDs or activated license
-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 KeenTools License Server
Follow us: FaceBook, Twitter, Instagram, YouTube

Smart tools for VFX and 3D artists