A standard AuthForge license is bound to a fixed number of HWIDs (1-16, configurable per key viaDocumentation Index
Fetch the complete documentation index at: https://docs.authforge.cc/llms.txt
Use this file to discover all available pages before exploring further.
maxHwidSlots). Once those slots fill up, new devices are rejected with hwid_mismatch. That’s the right default for paid software.
For the rest of the time - internal tools, beta cohorts, freeware that just wants license-gated features, demo and sandbox keys - you want the opposite: one shared key, any device, any time, no limits. AuthForge supports this as a per-license toggle called unlimited seats.
What it is
When a license is marked as unlimited-seat:- The server accepts any HWID that authenticates against this key.
- The first activator does not get exclusive ownership. There is no “binding” to undo or reset.
- The
hwid_mismatcherror is structurally impossible for this license. maxHwidSlotsis still stored on the license but is ignored at validation time. (You can flip the toggle off later to re-enforce the cap.)
When to use it
Reasonable fits:- Internal tools. A single shared key for the whole team, no HWID juggling when laptops get reimaged.
- Beta programs. You want the testers to be the same set of people you control via key issuance, not via per-device caps.
- Freeware with license-gated extras. The license is a feature flag, not a payment receipt - capping per device adds friction without revenue protection.
- Demo or sandbox keys. You’re publishing the credentials in docs or a README. Any cap you set will be hit by the first user.
When not to use it
- Per-seat pricing. If your business model bills per device, finite
maxHwidSlotsis the seat enforcement. Unlimited would silently waive it. - Anti-piracy hardening. Unlimited-seat licenses can be shared like a Netflix password. If pirates getting the key matters more to you than legitimate user friction, keep seats finite.
- Trial keys with multi-device limits. If you want each trial confined to one machine, leave seats finite (probably
maxHwidSlots: 1).
You still get device analytics
Even though no HWIDs are bound to the license, every activation is logged. The auth log recordsappId, licenseKey, hwid, ip, result, and timestamp - exactly as for seat-enforced licenses. You can:
- Look at the license’s Activity panel in the dashboard for distinct devices over time.
- Query the same data via the
GET /v1/licenses/:licenseKey/logsdeveloper-API endpoint. - Subscribe to
license.validatedwebhooks if you need a real-time stream.
It’s a per-license setting, not a per-app setting
Unlimited seats is a flag on the license row, not on the application. One application can have:- 100 paid customer licenses with
maxHwidSlots: 1, - 5 employee licenses with
maxHwidSlots: 3, - 1 unlimited-seat key for your public sandbox / docs,
appId, all using the same SDK build.
How to set it
Dashboard
When generating licenses, toggle Unlimited seats (shared key) in the create form. The “Max devices per key” input is greyed out while the toggle is on (the value is still stored, so flipping the toggle off restores the previous cap).Developer API
PassunlimitedHwidSlots: true in the POST /v1/licenses body:
unlimitedHwidSlots: true; SDKs that don’t know about the field simply ignore it, so old SDK versions keep working.
Related
- Hardware locking (HWID) - the default, finite-seat behaviour.
- Try it without signing up - the public sandbox is itself an unlimited-seat license, so you can hit
/auth/validatefrom any device with the same key. - Licenses API reference - full request/response schema for the create endpoint.