Sessions & Activations
Monitor how licenses are used in production. Activations are durable device records; Sessions are live SDK connections with heartbeats. Both appear for onlinePerpetual and Node-Locked licenses.
Activations
Permanent device ↔ license link (first validate/activate).
Sessions
Temporary connection while the app runs (heartbeat).
Node-locked
Typically 1 activation; binding on Device tab.
Lifecycle
Validation / activation
First successful online validation creates an activation row: hardware fingerprint, device name, IP, user. Node-locked also updates binding status (auto-bind or pending approval).
Session connect
After validation, the SDK calls POST /api/Sessions/connect. A session row appears under license details → Active Sessions and the global Sessions page.
Heartbeat
Periodic heartbeats update Last heartbeat. If heartbeats stop (crash, network loss), the session goes offline after timeout. Use Live refresh on the sessions table.
Disconnect / cleanup
App exit sends disconnect. Operators can force-disconnect from session actions. Cleanup on global Sessions removes stale rows.
Where to view data
| View | Scope | Best for |
|---|---|---|
| License → Activations tab | One license | Devices using this key |
| License → Active Sessions tab | One license | Who is running the app right now |
| License → Device Binding tab | Node-locked only | Hardware bind, approve/reject, history |
| Sidebar → Activations | All licenses | Cross-product support search |
| Sidebar → Sessions | All licenses | Live fleet monitoring |
Activation fields (license tab & global list)
| Field | Description |
|---|---|
| Device | Computer name (e.g. DESKTOP-…) and hardware fingerprint hash |
| User / System user | Account name reported by the SDK at activation |
| IP address | Public IP when the device activated |
| Activated | Timestamp of first successful bind for this device |
| Status | Active — may validate; Blocked — denied on next check; inactive — deactivated |
Session fields (license tab & global list)
| Field | Description |
|---|---|
| User | Session user + app version (e.g. v1.0.0.0) |
| Device | Hostname and OS version string |
| License name | Link to license details (global Sessions only) |
| IP address | Masked client IP |
| Connected | When session started (relative + duration) |
| Heartbeat | Last SDK ping — proves app is still open |
Perpetual vs node-locked behavior
| Perpetual (online) | Node-locked (online) | |
|---|---|---|
| Activations list | Many devices possible (n / ∞) | Usually one (1 / 1) |
| Sessions | One or more while apps run | Typically one session on bound device |
| Device Binding tab | Not shown | Hardware ID, approve/reject, history |
| Revoke device | Block activation → next validate fails | Same + hardware remains bound until unbind |
Block an activation or disconnect a session from the dashboard. The SDK receives the denial on the next validation, heartbeat, or status check. Perpetual online licenses can revoke one laptop without affecting others; node-locked affects the single bound device only.
