Hey Steve,
There are a couple ways you can this. Broadly, the solution is floating licenses. Because that's exactly how your users are using your app (on X machines at a time, one different machines depending on their contract / current job).
https://wyday.com/limelm/help/licensing-types/#floating
How you implement this is the trick. You have a few options ranging from inconvenient to super convenient:
1. The customer runs a TurboFloat Server instance on a piece of hardware they own either at their office or home.
2. The customer runs a TurboFloat Server instance on a simple small piece of hardware they carry around with them (like a raspberry pi). You could even pre-load raspberry pi with the TurboFloat Server instance.
3. The customer enters their product key into our LicenseChest product (coming soon) and spins up a TurboFloat Server instance running on our infrastructure. And if it's a license for a single "concurrent computer" (i.e. 1 activation) then those customers will be able to create hosted TFS instance for free.
It sounds like option 3 would be best for you and your customers. This is coming very soon.