Identity
Device & Continuity

Device & Continuity

Hardware-level, cookieless device fingerprinting that recognises devices and actors across sessions, groups them into clusters, and fuses that with behavioral biometrics and browser-integrity checks. This is the always-on core of the risk snapshot: it needs no external feed or enrollment — the moment the SDK runs, these signals are live.

Device & continuity is an evidence provider. It tells you whether a device is known, stable and behaving like a human — it never blocks. You read the fields and decide.

How it works

The SDK observes the session

The headless browser SDK collects device attributes, network hints and interaction telemetry — no cookie, no visible UI. It fingerprints the hardware/browser and streams behavioral events.

The device is fingerprinted and matched

Backend builds a stable fingerprint and matches it against prior sessions for your merchant — producing knownDevice, stableDevice and the same-device/browser/actor probabilities.

Sessions are clustered

Related devices/actors are grouped into a cluster (matchedClusterId), exposing multi-account operation from one physical device — device farms — with a clusterStabilityScore and clusterRiskScore.

Continuity and behavior are scored

Continuity is graded against history; behavioral biometrics (typing cadence, pointer dynamics, interaction entropy) separate human from scripted; browser-integrity checks flag tampering.

Request

Analyse a session from your backend with your secret key, or drive it from the browser SDK. The device and continuity fields come back in the snapshot either way.

<script src="https://cdn.lunixi.com/lunixi-identity.min.js"></script>
<script>
  // Merchant backend/BFF signs the init; the secret never enters the browser.
  const client = await Lunixi.identity.init({
    sessionBootstrapUrl: '/lunixi/identity/bootstrap',
    subjectId: 'cus_8f2a9c',
    productContext: 'checkout',
  });
 
  const snapshot = await client.analyze();
  // snapshot.knownDevice, snapshot.stableDevice,
  // snapshot.sameActorProbability, snapshot.matchedClusterId ...
</script>

Stream interaction events with POST /api/v1/identity/live-sessions/events/batch (or client.trackBatch(events)) to enrich the behavioral signal over the life of the session before you take a snapshot.

Snapshot

The device and continuity portion of the snapshot:

{
  "knownDevice": true,
  "stableDevice": true,
  "sameDeviceProbability": 0.97,
  "sameBrowserProbability": 0.88,
  "sameActorProbability": 0.74,
  "matchedClusterId": "clu_3b1d",
  "clusterStabilityScore": 0.62,
  "clusterRiskScore": 66,
  "continuityDriftReasons": ["timezone_shift"],
  "similarityScore": 0.38,
  "stabilityScore": 0.55,
 
  "tamperClassification": "tampered",
  "tamperConfidence": 0.81
}

Signals

FieldWhat it tells you
knownDeviceThe device has been seen before for this merchant
stableDeviceThe fingerprint is stable across recent sessions
sameDeviceProbabilityLikelihood this is the same physical device as prior sessions
sameBrowserProbabilityLikelihood this is the same browser instance
sameActorProbabilityLikelihood the same person is behind this and prior sessions
matchedClusterIdThe device cluster this session matched into (device-farm detection)
clusterStabilityScoreHow stable that cluster has been over time
clusterRiskScoreAggregate risk of the matched cluster
continuityDriftReasonsWhy continuity confidence dropped (e.g. new hardware attributes)
continuityEvidenceEvidence records behind the continuity match
similarityScoreHow closely the session matches known good history for the subject
stabilityScoreHow stable the device/identity signal is across sessions
tamperClassificationBrowser-integrity/tamper verdict (e.g. clean, tampered)
tamperConfidenceConfidence in the tamper verdict

Behavioral biometrics — typing cadence, pointer dynamics and interaction entropy — are folded into the same-actor probability and the finding surface (human vs scripted), rather than surfaced as standalone score fields. Browser integrity covers UA/header mismatch, impossible feature combinations, CDP/devtools residue and canvas/WebGL spoofing, and drives tamperClassification.

Notes

⚠️

Continuity is history-relative. A device seen for the first time — new hardware, or a customer new to your merchant — returns knownDevice: false, low sameDeviceProbability/sameActorProbability, and no cluster match. This is not a red flag by itself; confidence grows over time as the device is seen again. Treat a low continuity score on a first sighting as unknown, not bad.

  • These signals are default-on: they require no external feed, no seed and no enrollment. They are live the moment the SDK runs.
  • The device fingerprint is not a cookie and cannot be cleared by the user; it is stable across browser sessions on the same hardware.
  • Behavioral telemetry improves with volume — stream events over the session (trackBatch) before taking the final snapshot.

Next steps