A floating license limits how many copies of your software run at the same time, rather than how many are installed. If a team buys five seats, any employee can use the software, but only five can run it concurrently — when one closes, a seat frees up for the next. This is ideal for tools shared across a team, lab, or CI fleet, and it usually earns more revenue than per-install pricing.
How concurrent licensing works
A floating license has three moving parts:
- Lease — when the app starts, it checks out a seat. If all seats are taken, it is refused.
- Heartbeat — while running, the app periodically renews its seat so a crashed client does not hold a seat forever.
- Release — on exit, the app returns the seat to the pool.
The server tracks active seats per key and enforces the maximum. That is the whole model.
Adding floating licenses in Python
The SDK wraps lease, heartbeat, and release in a context manager, so you focus on your app:
from pylicensify import LicenseClient, SeatUnavailable
client = LicenseClient(public_key="YOUR_PUBLIC_KEY")
try:
with client.session("PY-XXXXXXXXXXXXXXXX") as sess:
print("Seat acquired:", sess.seats) # {'used': 1, 'max': 5}
run_app() # released automatically on exit
except SeatUnavailable:
print("All seats are in use. Try again shortly.")
The heartbeat runs in the background while the block is active, and the seat is released automatically when the block exits — even if your program crashes, the seat expires after the heartbeat window.
Floating vs. per-device licensing
Per-device (HWID) licensing caps how many machines a key installs on. Floating licensing caps how many run at once. Choose per-device when each user has their own dedicated install; choose floating when a pool of users shares a smaller number of concurrent seats. Many products offer both.
Frequently asked questions
What happens if the app crashes without releasing a seat?
The seat is not held forever. Because each session must heartbeat to stay alive, a crashed client stops renewing and its seat expires automatically, returning to the pool.
Can I change the number of seats later?
Yes. Update the concurrent-session limit on the key and it takes effect immediately — no client change needed.
Does a floating license need my own server?
No. The lease, heartbeat, and release endpoints are hosted for you on the global edge. Your app just calls them.
Want to sell seats to teams? Start free and see the floating license docs.