Chapter 9 — Licensing¶
9.1 The seat model¶
Stolo is licensed per device as a seat. A seat is activated onto exactly one install at a time; moving to a new device means deactivating the old install (freeing the seat) and activating the new one.
There are no feature tiers — a licensed device has full functionality. A license has three states:
| State | Behavior |
|---|---|
| Not licensed | Only the activation screen is available; the mesh engine does not start. |
| Active | Full functionality. |
| Expired | See Expiry behavior. |
License tokens are cryptographically signed and verified offline on the device. Day-to-day operation requires no connection to any licensing service; the network is used only for activation, renewal, and deactivation.
9.2 Activating¶
The activation screen offers two paths:
Organization activation code¶
Enter the 16-character code issued by your organization (shown as XXXX-XXXX-XXXX-XXXX; the field auto-formats and tolerates common look-alike characters). Tap Activate.
Possible outcomes and their meaning:
| Message | Meaning / action |
|---|---|
| Payment processing… | The seat purchase is still settling; the app retries automatically for a short period. |
| This seat is active on another device. | Deactivate the seat on the other device first, then activate here. |
| This activation code has already been used. | Codes are single-use; request a new code from your org admin. |
| Subscription inactive / lapsed | The seat was revoked or the underlying subscription ended — renew via your org admin. |
| That code isn't valid. | Re-check the code. |
| No connection to the licensing server. | Activation (only) needs internet — check the network and retry. |
App Store subscription (iOS / macOS)¶
Subscribe purchases the monthly auto-renewing Stolo Seat subscription through Apple (price shown live from the App Store; renews until cancelled in your Apple account settings). Restore Purchases re-links an existing subscription — for example after reinstalling, or to finish activation if the network dropped mid-purchase. Ask to Buy purchases activate automatically once approved.
If a subscription seat is already bound to another device, activation reports seat occupied — deactivate it there first.
9.3 Checking license status and deactivating¶
Settings → Identity → License shows the current state — Active (with organization, channel, and expiry date), Expired, or Not licensed — and offers Deactivate this device.
Deactivating frees the seat for use elsewhere and removes the license from the device; you'll need an activation code (or subscription restore) to use Stolo on it again. Deactivating mid-session takes effect immediately: the app returns to the activation screen.
9.4 Expiry behavior¶
Expiry is deliberately gentle to avoid cutting off a device mid-operation:
- A running session never stops when its license expires. Stolo shows a non-blocking banner — "License expired — renew to keep access after restart" — and everything keeps working.
- Enforcement happens at the next launch: an expired install boots to the activation screen.
- Licenses renew automatically while the device has periodic internet access: the app refreshes its token in the background starting 7 days before expiry, and issued tokens include a 72-hour offline grace beyond the nominal period. A device that is offline for extended periods should be given occasional internet access (or a fresh activation) before its token lapses.
9.5 Notes for org administrators¶
- Seat moves are self-service on the device (Deactivate → activate elsewhere). If a device is lost, its seat can be revoked centrally, after which the install reports Subscription inactive on its next refresh and stops at the next launch.
- Activation requires internet once; a fielded device then runs offline within its renewal window. Plan renewal windows around deployment schedules.
- Licensing gates only the app launch — it does not alter mesh behavior, encryption, or data. An expired device's data remains intact on the device and is available again after re-activation.