Licensing connected devices
A manufacturer shipping software on connected hardware — vehicles, machines, kiosks — that sells feature unlocks and usage plans per unit, and has to keep running when the unit drops off the network.
The setup: each device activates itself against its own entitlement, keyed to a hardware fingerprint (a VIN, a serial). No user logs in; the device is the licensee. Its license is a signed token it validates on-board, so it enforces plans and options with no live connection.
How the pieces map
Section titled “How the pieces map”| You need | You use |
|---|---|
| Per-unit plans (Essential → premium) | One plan set; each unit’s entitlement applies one, switched from the back office |
| Buyable software options (self-drive, heated seats, dashcam…) | Features snapshotted into the license — gated on-board, no per-use API call |
| A fleet under one license | Node-locked seats, one per fingerprint — a new serial consumes another seat |
| Metered usage (miles, hours, cycles) | A monitored asset with a monthly quota — the cheapest tier stops usage at the quota; paid tiers continue into overage |
| Prepaid overage / pay-per-use | A prepaid credit balance drawn down once usage passes the allowance, topped up on demand |
| Works off-network | An offline lease + locally-queued usage that reconciles on reconnect |
| Plan changes, renewal, churn | Entitlement operations + Entitlement.* webhooks |
Integration sketch
Section titled “Integration sketch”- The device embeds the .NET SDK (or calls REST) and activates with its hardware fingerprint as the node id — a stable identity, so a reboot reuses its seat instead of leaking a new one. Activation can be anonymous: the unit needs no user account.
- Feature checks are local: the license is a signed token the device validates on-board, so asking “is self-drive unlocked on this VIN?” costs nothing and works with no signal.
- Report usage as the device does its work
(
UsageReporter.ReportAssetUsageAsync("overdrive.selfdrive.miles", n)); the platform aggregates against the quota. On the entry tier it denies past the cap; on paid tiers it draws the prepaid balance and firesMeteredUsage.OverageStatusChangedat Warning and at the cap. - Off-network, the device keeps operating under its lease and queues usage locally; on reconnect the queue uploads and the server-side meter reconciles. The lease’s lifetime (plus a grace window) bounds how far it can run before it must check back in. See the offline activation guide.
- Back-office operations stay in the portal: sell an option → add a feature to the unit’s entitlement; change tier → apply a different plan; RMA → cancel, and the license stops validating at the next lease renewal.
Special cases are policies
Section titled “Special cases are policies”Enforcing a plan a device hasn’t phoned home to confirm, splitting metered usage that crosses the allowance boundary, settling overage after an offline stretch, “we promised fleet X a different tier” — in Oclavex these are policies on an entitlement, changed per unit without a firmware push.
See it live: the Overdrive demo is this use case — a connected car licensed per VIN, with buyable options, self-drive miles metered pay-per-mile or against a monthly allowance, and licensing that keeps working with no signal.
Start with the offline activation guide — the lease and the queue are what keep enforcement working while the device is off the network.