Floating licenses
Floating licensing (Enterprise tier and up) replaces the organization key file with a pool of concurrent automation sessions served by vericue-license-server - a small standalone daemon you run on your own network. Nothing leaves your LAN: the license server is self-hosted and works entirely offline, like all veriCue licensing.
How it works
┌─────────────────┐ checkout / heartbeat ┌──────────────────────┐
│ App under test │ ─────────────────────▶ │ vericue-license-server │
│ (libvericue- │ ◀───────────────────── │ (your LAN, port 7777)│
│ server) │ lease granted │ license.json (N sessions)│
└─────────────────┘ └──────────────────────┘- The license server loads your RSA-signed key file (which carries the licensed session count) and listens on TCP. Each granted lease is one active session from that pool.
- Each application under test checks out a lease at startup and renews it with a heartbeat every 60 seconds.
- A lease that misses heartbeats for 180 seconds is reclaimed server-side - crashed apps free their session automatically.
- On a clean shutdown the app checks in the lease immediately.
If the license server becomes unreachable, the app keeps its lease through a 5-minute grace period, retrying the connection every 10 seconds. Only after the grace period expires does the automation interface stop.
Running the server
vericue-license-server --license /etc/acme/vericue-floating.json --port 7777| Flag | Meaning |
|---|---|
--license <path> | RSA-signed key file (required in server mode) |
--port <n> | TCP lease port (default: 7777) |
--http-port <n> | Optional HTTP admin API + dashboard |
--http-token <token> | Bearer token protecting the HTTP admin API (recommended) |
--status | Query a running server and exit (with --host, default 127.0.0.1) |
Run it under systemd or your service manager of choice; it is a single binary with no database - leases live in memory.
Application side
Instead of a key file, point the embedded server at the license server:
vericue::VeriCueServer server(&window);
server.setLicenseServer("licenses.acme.lan", 7777);
server.start(4242);Admin API & dashboard
With --http-port set, the server also exposes:
| Endpoint | Purpose |
|---|---|
/ or /admin | Auto-refreshing web dashboard with per-lease revoke buttons |
GET /api/status | Session totals (used / licensed), license info |
GET /api/sessions | Active sessions, i.e. current leases (client id, hostname, expiry). /api/seats still works as a deprecated alias and will be removed in a future release |
POST /api/revoke/<lease_id> | Force-release a lease |
Protect the admin port
/api/revoke releases active sessions, so anyone who can reach the HTTP port can disrupt licensing. Always pass --http-token; every request must then send Authorization: Bearer <token>. The server logs a loud warning when it starts without one. Keep both ports LAN-only - the lease protocol is plain TCP, so firewall it to trusted subnets and never expose it to the internet.
curl -H "Authorization: Bearer $TOKEN" http://licenses.acme.lan:8080/api/sessionsMonitoring
Check session usage from a shell:
vericue-license-server --status --host licenses.acme.lan --port 7777or scrape GET /api/status from your monitoring system.
Lease lifecycle reference
| Parameter | Value |
|---|---|
| Heartbeat interval (client) | 60 s |
| Lease timeout (server) | 180 s without a heartbeat |
| Grace period on server outage (client) | 5 min |
| Reconnect attempts during outage | every 10 s |
Troubleshooting
lease denied- all licensed sessions are in use. Check/api/sessionsfor stale clients, or revoke a lease from the dashboard.- App loses automation after ~5 min - the license server is unreachable and the grace period ran out. The app under test keeps running; only the veriCue interface stops. Restore connectivity and restart the app under test to re-checkout.
- Server refuses to start - the key file failed signature verification, or the port is taken. Both are logged on stderr.

