License Management
This page describes how to manage your QUBO++ license using the qbpp-license command-line utility. The license system is shared between QUBO++ (C++) and PyQBPP (Python).
License Types
QUBO++ offers several license types with different variable count limits and validity periods.
| License Type | Key Required | Validity | CPU Variables | GPU Variables |
|---|---|---|---|---|
| Anonymous Trial | No | 7 days | 1,000 | 1,000 |
| Registered Trial | Yes | 30 days | 10,000 | 10,000 |
| Standard | Yes | Agreement term | 2,147,483,647 | 1,000 |
| Professional | Yes | Agreement term | 2,147,483,647 | 2,147,483,647 |
| Fallback | N/A | Always | 100 | 100 |
- Anonymous Trial: No registration required. Automatically activated on first use.
- Registered Trial: Requires a free license key for evaluation purposes. Apply here.
- Standard License: For production use. Supports large-scale CPU optimization.
- Professional License: For production use with GPU acceleration (ABS3 Solver, Exhaustive Solver).
- Fallback Mode: When no valid license is found or the license has expired, QUBO++ runs with a 100-variable limit.
Setting and Activating the License Key
If you have a license key, set it using one of the following methods.
Method 1: Activate with qbpp-license (recommended)
Run the following command once per machine:
qbpp-license -k XXXXXX-XXXXXX-XXXXXX-XXXXXX -a
The license key is encrypted and cached locally. After activation, no environment variable or -k option is needed for subsequent runs — QUBO++ programs automatically use the cached key.
To re-activate or change the key, simply run the command again with a new key.
Method 2: Environment Variable
Set the QBPP_LICENSE_KEY environment variable. This is useful for Docker/CI environments where the local cache is not persistent.
export QBPP_LICENSE_KEY=XXXXXX-XXXXXX-XXXXXX-XXXXXX
Priority
When multiple methods are used, the following priority applies:
-kargument orqbpp::license_key()in code (highest)QBPP_LICENSE_KEYenvironment variable- Cached key (lowest)
Note: For Anonymous Trial, no license key is needed. Simply run
qbpp-license -awithout setting a key.
Checking License Status
To display the current license status without making any changes:
qbpp-license
This shows the license type, expiry date, variable limits, and activation usage. The command contacts the license server to refresh the status.
Deactivating a License
To move a license to another machine, first deactivate it on the current machine:
qbpp-license -d
- Each license key has a limited number of allowed activations.
- Deactivation frees up one activation slot.
- Anonymous Trial licenses cannot be deactivated.
- There is a 24-hour cooldown between consecutive deactivations to prevent abuse.
Command Reference
Usage: qbpp-license [options]
Options:
-h, --help Show help message and exit
-k, --key KEY Specify a license key
-a, --activate Activate the license on this machine
-d, --deactivate Deactivate the license on this machine
-t, --time-out SEC Set the server communication timeout (default: 20 seconds)
Examples
| Command | Description |
|---|---|
qbpp-license | Display current license status |
qbpp-license -a | Activate (Anonymous Trial if no key is set) |
qbpp-license -k KEY -a | Activate with a specific key |
qbpp-license -d | Deactivate the license on this machine |
qbpp-license -t 60 | Check status with a 60-second timeout |
qbpp-license -k KEY -t 60 -a | Activate with a key and extended timeout |
How License Verification Works
qbpp-licensecommand: Always contacts the license server to get the latest status. This may take a few seconds depending on network conditions.- QUBO++ programs: Verify the license using the local cache and do not block on server communication. The server is contacted only when the cache needs to be refreshed (e.g., after a long period without synchronization).
- License key storage: When a license is activated, the key is encrypted and cached locally. This allows subsequent runs without setting the key again.
Network and Timeout
If your network is slow or behind a firewall/proxy, the default 20-second timeout may not be enough.
To increase the timeout:
qbpp-license -t 60 -a
If the server is unreachable, QUBO++ falls back to the cached license status. If no cache exists, QUBO++ runs in Fallback Mode (100-variable limit).
Programs work but with limited variables
- QUBO++ may be running in Fallback Mode. Check the license status:
$ qbpp-license - Ensure the license key is set correctly via
qbpp-license -k KEY -aorQBPP_LICENSE_KEY. - Re-activate if necessary:
qbpp-license -a
“Deactivation cooldown”
- There is a 24-hour waiting period between consecutive deactivations.
- Wait and try again after the cooldown period has elapsed.
Floating Licenses
Floating licenses allow shared access across multiple machines within an organization. Instead of being permanently locked to a machine, a floating license uses a lease-based mechanism.
- When a QUBO++ program starts, it acquires a lease from the license server.
- The lease is automatically renewed while the program is running.
- When the program exits, the lease is released, making the slot available for other machines.
- If the program crashes or the network is lost, the lease expires automatically after a timeout period.
Usage is the same as node-locked licenses:
qbpp-license -k F-XXXXXX-XXXXXX-XXXXXX-XXXXXX -a
The floating license key is also cached locally, so subsequent runs do not require setting the key again.