Get a License#

A license is required to use and run POLARIS. Licenses are managed by the Vehicle and Mobility Systems Department. You can initiate a license request directly using the below buttons.

Government

Use this if you work for a federal or state government agency.

https://license-request-vms.taps.anl.gov/government/polaris?release=latest&package=Default

License Files#

Once the license application is finalized, you will receive an email from the licensing team with the license file needed to run POLARIS. Typically, we prefer to distribute node-locked licenses, which tie the license to a single machine. These are the simplest licenses for the end user, as the POLARIS executable will simply ask for the location of the license file on the first launch.

However, in situations where this style of license is not sufficient, we can also provide a floating license, which will allow the user to run on multiple machines at the cost of a bit more setup and maintenance. This requires the end-user to set up a local license server to communicate with our own license server. When POLARIS is run, the executable will check out a license from your local server, and check the license back in when POLARIS closes. Below are detailed instructions for setting up a license server; if a floating license is requested, you will be sent another copy of these instructions along with the required files for setup.

Floating License Server Details#

Floating licenses for POLARIS require a license server to be run by the user. When a POLARIS instance on the network is started, it will check for its own individual license file, which will point to your license server and request to check out a license. This allows your users to see and control who is running POLARIS.

The recommended way to set up the floating license server is using the provided Apptainer container (.sif file), which bundles all required FlexNet binaries, web interface, and dependencies into a single portable file. The container uses the host machine’s network interface directly, so license files generated for the host will validate correctly inside the container.

If Apptainer is not an option, reach out to the POLARIS team directly for help.

Download license_server.sif here

Further documentation and more detailed instructions here

In order to run the server, you will need to keep three ports open on the server machine:

  • Web interface — port 8090 by default. Used for the lmadmin admin panel; only needs to be accessible to administrators.

  • Server Port — used to serve licenses to client machines. The port is specified in the SERVER line of your server.lic file. This port must be reachable by all client machines.

  • Vendor Daemon Port — used for communication between lmadmin and the AUTONOMI vendor daemon. This is randomly assigned by default; contact Dynasty when requesting your license file if you need a fixed port.

The Server Port must be open on both the server and all client machines, and authorized in any network-level firewalls between them.

Open the required ports in your firewall:

# firewalld (RHEL / Rocky / AlmaLinux)
sudo firewall-cmd --permanent --add-port=<ServerPort>/tcp
sudo firewall-cmd --permanent --add-port=8090/tcp
sudo firewall-cmd --reload

# ufw (Ubuntu / Debian)
sudo ufw allow <ServerPort>/tcp
sudo ufw allow 8090/tcp

Setting Up the License Server with Apptainer#

The container is designed to be as self-contained as possible — all configuration, web interface files, and binaries are bundled inside the .sif. The only file you need to provide at runtime is your server.lic license file.

Step 1: Get Your Host ID and Hostname#

The license file must be tied to the specific machine that will run the server. Use the container’s built-in lmutil to retrieve the required identifiers:

apptainer run license_server.sif hostid
apptainer run license_server.sif hostname

This will print the MAC-based FlexNet host ID and the hostname of your machine. Send both values to Dynasty to generate your server license file.

Warning

Make sure the hostname resolves to an actual network name and not something generic like localhost.localdomain. Dynasty may need the correct hostname to generate a valid license file.

Step 2: Request Your License File#

Send Dynasty the host ID and hostname from Step 1. They will generate and send you a server.lic file. Place this file somewhere accessible on your server machine, for example ~/flexera/server.lic.

Your server.lic will look something like this:

SERVER your-hostname <hostid> <ServerPort>
VENDOR AUTONOMI
USE_SERVER

Note the <ServerPort> value on the SERVER line — you will need this when configuring clients.

Step 3: Configure the Server#

Before starting the server for the first time, run the one-time import to register your license file and vendor daemon. The configuration is stored inside the container’s internal conf directory and persists across restarts:

apptainer exec \
    --bind ~/flexera/server.lic:/mnt/license/server.lic \
    license_server.sif \
    lmadmin -configDir /opt/flexera/conf \
            -import /mnt/license/server.lic \
            -force

You should see INFO_ADDED_VENDOR in the output, confirming the AUTONOMI vendor daemon has been registered.

Note

The -force flag allows the import to overwrite existing vendor daemon settings. This is safe to re-run if you receive an updated license file from Dynasty.

Step 4: Start the License Server#

Create a directory for persistent logs on the host, then launch the server as a background instance:

mkdir -p ~/flexera/logs

apptainer instance start \
    --bind ~/flexera/logs:/opt/flexera/logs \
    --bind ~/flexera/server.lic:/mnt/license/server.lic \
    license_server.sif lmadmin

Verify the server and vendor daemon are running:

apptainer run \
    --bind ~/flexera/server.lic:/mnt/license/server.lic \
    license_server.sif status

You should see output similar to:

License server status: <ServerPort>@your-hostname
    License file(s) on your-hostname: /mnt/license/server.lic:
your-hostname: license server UP (MASTER) v11.19.9
Vendor daemon status (on your-hostname):
  AUTONOMI: UP v11.19.6
Feature usage info:
Users of POLARIS:  (Total of 99 licenses issued;  Total of 0 licenses in use)

Step 5: Configure Clients#

There are two ways for client machines to point at your license server.

Option A — Direct environment variable (simplest, recommended for CI/CD):

Set LM_LICENSE_FILE to <ServerPort>@<hostname> directly — no license file needed on the client:

export LM_LICENSE_FILE=27001@your-server-hostname

Add this to ~/.bashrc or ~/.bash_profile to make it permanent.

Note

If DNS does not resolve the server hostname from client machines, use the IP address instead:

export LM_LICENSE_FILE=27001@192.168.1.100

Option B — Client license file:

Alternatively, provide users with a small text file containing:

SERVER <hostname> 0 <ServerPort>
USE_SERVER

Then point LM_LICENSE_FILE at it:

export LM_LICENSE_FILE=/home/user/licenses/polaris.lic

Web Interface#

The lmadmin web interface is available at http://<server-hostname>:8090 once the server is running. It provides a dashboard for monitoring active license checkouts, managing users, and configuring the vendor daemon. Default credentials are admin / admin — you will be prompted to change the password on first login.

Note

The web interface is for administration only and does not need to be accessible to end users. If port 8090 is not open, the license server will still serve licenses normally — only the admin panel will be unavailable.

Managing the Server#

Check license status:

apptainer run \
    --bind ~/flexera/server.lic:/mnt/license/server.lic \
    license_server.sif status

Stop the server:

apptainer instance stop lmadmin

Restart the server:

apptainer instance stop lmadmin

apptainer instance start \
    --bind ~/flexera/logs:/opt/flexera/logs \
    --bind ~/flexera/server.lic:/mnt/license/server.lic \
    license_server.sif lmadmin

View logs:

cat ~/flexera/logs/lmadmin.log
cat ~/flexera/logs/AUTONOMI.log

Run in the foreground (for debugging):

apptainer run \
    --bind ~/flexera/logs:/opt/flexera/logs \
    --bind ~/flexera/server.lic:/mnt/license/server.lic \
    license_server.sif server

Auto-Start on Boot#

To ensure the license server starts automatically on boot and restarts if it crashes, set it up as a systemd service. Create /etc/systemd/system/polaris-license-server.service:

[Unit]
Description=POLARIS FlexNet License Server
After=network.target

[Service]
Type=forking
User=<your-username>
ExecStart=/usr/bin/apptainer instance start \
    --bind /home/<your-username>/flexera/logs:/opt/flexera/logs \
    --bind /home/<your-username>/flexera/server.lic:/mnt/license/server.lic \
    /home/<your-username>/license_server.sif lmadmin
ExecStop=/usr/bin/apptainer instance stop lmadmin
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Then enable and start it:

sudo systemctl daemon-reload
sudo systemctl enable polaris-license-server
sudo systemctl start polaris-license-server
sudo systemctl status polaris-license-server