On this page

Machine-readable inventory

Device signal and backend contract catalog

Every public probe and selectable top-level field, with exact TypeScript and JSON types, platform boundaries, sensitivity, permission behavior, defaults, and missing-data semantics.

How collection is organized

A probe is an independently executed group of related observations. Each probe can succeed, be skipped, time out, or return an error without invalidating the rest of the event.

Field availability depends on the platform, OS version, device hardware, host-app permissions, and collection configuration. Missing does not mean safe.

Backend event contract

Design the ingestion boundary around the stable event envelope and an open map of probe outcomes. Probe IDs and successful data fields are additive, so consumers should tolerate unknown keys while validating the fields they use.

type RawSignalEvent = {
  session_id: string;
  client_id?: string;
  event_type: "device_intel_collection";
  schema_version: number;
  collected_at: string; // ISO 8601
  probes: Record<string,
    | { status: "success"; data: Record<string, unknown> }
    | { status: "skipped"; reason: string }
    | { status: "timeout" }
    | { status: "error"; error: string }
  >;
};
Version the envelope

schema_version changes only when the event envelope changes. New probe IDs can appear without an envelope version bump.

Keep absence distinct

An omitted field, a skipped probe, a timeout, an error, and an observed false are different states.

Allow additive data

Persist the SDK version with your event and ignore unknown probe IDs or fields until your backend explicitly adopts them.

Validate successful data

Use the typed table and JSON Schema for scalar, array, and nested-object shapes. Keep unknown additive fields until your backend explicitly adopts them.

Remaining migration work: standalone lint and package-content gates next; transaction lifecycle, GL coexistence and physical-device QA remain release gates. Independent contract tooling, iOS/Web SDKs, Flutter/Capacitor bindings, registry releases and ecosystem documentation are still pending. See the migration checklist for completion gates and the unresolved legacy active Frida boundary.

The standalone Android SDK currently exposes device identity, locale, native runtime timing, native numeric vectors, audio output properties, application metadata, hardware, fonts, passive OS integrity, local network observations, telephony, cached location, media/Bluetooth/finite app audit, device security posture, point-in-time transaction context, and the GPU benchmark workload. Explicit transaction observation sessions are a separate API. A native Android example consumes these sixteen collection methods plus start/read/stop session controls without React Native and collects only after an explicit button press. GPU collection is rejected on the UI thread and must run on a host-owned worker; its 50 ms draw-loop target is a budget, not an end-to-end deadline, and caller timeouts do not cancel native driver work. An instrumented test suite asserts that GPU collection restores a caller's prior EGL binding, leaves none behind when there was none, and never terminates the process-shared display; it was executed on an Android emulator, which is not driver validation. Physical-device GL QA remains a release gate. Protected fields require permissions already granted to the host app; collection never requests permissions or a fresh location fix. JavaScript/native numeric comparisons remain in the React Native binding. Audio latency is estimated from output-buffer and sample-rate properties, not measured with playback or loopback. This is a partial SDK under development; no Maven artifact is published and existing probe defaults and permissions are unchanged.

Media collection preserves sensitive accessibility component names and finite package-list matches; empty results can reflect visibility limits or legacy read-failure fallbacks. Bluetooth reads bonded-device count only, with host-owned permissions and no discovery, device names or addresses. Device security posture reports hardware features and settings, not biometric enrollment or authentication, and does not start transaction observers. React Native transaction observation now detaches on host pause/destroy and reattaches on a later collection. Standalone hosts own explicit main-thread sessions. Historical events can span gaps; unavailable current capture coverage is omitted, and partial obscuration is omitted below Android 10. See the lifecycle migration notes; these changes are not yet published.

Passive integrity includes process-local Frida evidence, but no localhost TCP scan. The active Frida scan now belongs to a separate optional Android component whose contract permits loopback socket I/O only; its React Native default, fields and types are unchanged, and its Maven artifact is unpublished. Finite package observations depend on host package visibility: false can mean not visible, not necessarily absent. The standalone SDK adds no package queries.

Application metadata covers only the host application's own package and preserves signing and installer fields, including the installerPackage compatibility alias. Hardware includes the existing Android storage observations. Font collection is expensive and high entropy: invoke it explicitly in the standalone SDK for a documented purpose. These extractions preserve existing React Native probe defaults and collection behavior and add no permissions.

runtime_timing remains disabled by default. On Android, native clock sampling uses the standalone Android SDK core; JavaScript and JS-to-native duration measurements remain in the React Native binding. If no positive native intervals are observed, native resolution, median, p95, and median absolute deviation fields are omitted. A clock-read failure fails collection instead of producing zero-valued timing data. The standalone Android SDK is still in development and has no published Maven artifact.

Probe catalog

Search probe IDs, field names, purposes, permissions, and data categories. Filters can be combined with the search. High-sensitivity and expensive probes require additional purpose, retention, and calibration review.

Showing all 19 probes and 322 fields.

On narrow screens, each probe is shown as a readable card. Open its field list to see types and copy JSON paths.

Probe and purposeAvailabilityData classificationPermission behavior and notesPossible success data
device_identityDevice identity

Describe the claimed device and operating-system build for consistency checks.

Android + iOSdefault on
high sensitivitydeviceoperating_system

No permission required

13 typed top-level fields
manufacturerstring
probes.device_identity.data.manufacturer
modelstring
probes.device_identity.data.model
brandstring
probes.device_identity.data.brand
systemNamestring
probes.device_identity.data.systemName
systemVersionstring
probes.device_identity.data.systemVersion
isTabletboolean
probes.device_identity.data.isTablet
osBuildstring
probes.device_identity.data.osBuild
kernelVersionstring
probes.device_identity.data.kernelVersion
kernelOsReleasestring
probes.device_identity.data.kernelOsRelease
kernelOsTypestring
probes.device_identity.data.kernelOsType
androidBuildAndroidBuildInfo
probes.device_identity.data.androidBuild
isIosAppOnMacboolean
probes.device_identity.data.isIosAppOnMac
isMacCatalystAppboolean
probes.device_identity.data.isMacCatalystApp
hardwareHardware

Collect coarse hardware, display, memory, battery, and device-class observations.

Android + iOSdefault on
high sensitivityhardwaredisplaybatterystoragenfc_state

No permission required

Detailed battery/power and NFC state are Android-only. Storage and uptime are Android-only because the corresponding iOS APIs require additional declarations.

35 typed top-level fields
screenWidthPxnumber
probes.hardware.data.screenWidthPx
screenHeightPxnumber
probes.hardware.data.screenHeightPx
screenDensitynumber
probes.hardware.data.screenDensity
screenDpinumber
probes.hardware.data.screenDpi
screenPhysicalWidthPxnumber
probes.hardware.data.screenPhysicalWidthPx
screenPhysicalHeightPxnumber
probes.hardware.data.screenPhysicalHeightPx
screenPhysicalDensitynumber
probes.hardware.data.screenPhysicalDensity
screenBrightnessnumber
probes.hardware.data.screenBrightness
screenOrientationstring
probes.hardware.data.screenOrientation
processorCountnumber
probes.hardware.data.processorCount
cpuArchitecturestring
probes.hardware.data.cpuArchitecture
cpuMaxFrequencyMhznumber
probes.hardware.data.cpuMaxFrequencyMhz
totalMemoryBytesnumber
probes.hardware.data.totalMemoryBytes
freeMemoryBytesnumber
probes.hardware.data.freeMemoryBytes
isLowMemoryboolean
probes.hardware.data.isLowMemory
processResidentMemoryBytesnumber
probes.hardware.data.processResidentMemoryBytes
isLowRamDeviceboolean
probes.hardware.data.isLowRamDevice
runtimeMaxMemoryBytesnumber
probes.hardware.data.runtimeMaxMemoryBytes
lowPowerModeEnabledboolean
probes.hardware.data.lowPowerModeEnabled
batteryLevelnumber
probes.hardware.data.batteryLevel
batteryStatestring
probes.hardware.data.batteryState
batteryTemperatureCnumber
probes.hardware.data.batteryTemperatureC
batteryHealthstring
probes.hardware.data.batteryHealth
batteryVoltageMvnumber
probes.hardware.data.batteryVoltageMv
batteryTechnologystring
probes.hardware.data.batteryTechnology
batteryPresentboolean
probes.hardware.data.batteryPresent
batteryLowboolean
probes.hardware.data.batteryLow
powerSourcestring
probes.hardware.data.powerSource
batteryCycleCountnumber
probes.hardware.data.batteryCycleCount
chargeTimeRemainingMsnumber
probes.hardware.data.chargeTimeRemainingMs
nfcAvailableboolean
probes.hardware.data.nfcAvailable
nfcEnabledboolean
probes.hardware.data.nfcEnabled
storageTotalBytesnumber
probes.hardware.data.storageTotalBytes
storageFreeBytesnumber
probes.hardware.data.storageFreeBytes
uptimeMsnumber
probes.hardware.data.uptimeMs
fontsInstalled fonts

Produce a platform-local digest of installed font names for consistency analysis.

Android + iOSdefault on
high sensitivityinstalled_fonts

No permission required

Digests are comparable only within the same platform and are not persistent device identifiers.

1 typed top-level fields
fontsDigeststring
probes.fonts.data.fontsDigest
os_integrityOS integrity

Expose root, jailbreak, emulator, debugger, hook, and boot-integrity observations.

Android + iOSdefault on
high sensitivitydevice_integrityruntime_security

No permission required

Returns explainable raw evidence. Weak Android build markers and device-farm markers are reported but do not set isEmulator without a stronger emulator observation.

67 typed top-level fields
isEmulatorboolean
probes.os_integrity.data.isEmulator
isDebuggerAttachedboolean
probes.os_integrity.data.isDebuggerAttached
isDebuggerWaitingboolean
probes.os_integrity.data.isDebuggerWaiting
developerModeEnabledboolean
probes.os_integrity.data.developerModeEnabled
usbDebuggingEnabledboolean
probes.os_integrity.data.usbDebuggingEnabled
suBinaryFoundboolean
probes.os_integrity.data.suBinaryFound
suOnPathboolean
probes.os_integrity.data.suOnPath
rootManagementAppFoundboolean
probes.os_integrity.data.rootManagementAppFound
dangerousAppFoundboolean
probes.os_integrity.data.dangerousAppFound
rootCloakingAppFoundboolean
probes.os_integrity.data.rootCloakingAppFound
suspiciousFilePathsFoundboolean
probes.os_integrity.data.suspiciousFilePathsFound
suspiciousFilePathsstring[]
probes.os_integrity.data.suspiciousFilePaths
writableSystemPathFoundboolean
probes.os_integrity.data.writableSystemPathFound
dangerousPropsPresentboolean
probes.os_integrity.data.dangerousPropsPresent
dangerousSystemPropertiesstring[]
probes.os_integrity.data.dangerousSystemProperties
canOpenJailbreakSchemeboolean
probes.os_integrity.data.canOpenJailbreakScheme
symbolicLinksSuspiciousboolean
probes.os_integrity.data.symbolicLinksSuspicious
injectedLibrariesFoundboolean
probes.os_integrity.data.injectedLibrariesFound
injectedLibraryNamesstring[]
probes.os_integrity.data.injectedLibraryNames
loadedHookClassNamesstring[]
probes.os_integrity.data.loadedHookClassNames
hookStackFrameFoundboolean
probes.os_integrity.data.hookStackFrameFound
hookStackFramesstring[]
probes.os_integrity.data.hookStackFrames
hookFrameworkFoundboolean
probes.os_integrity.data.hookFrameworkFound
magiskMountsFoundboolean
probes.os_integrity.data.magiskMountsFound
magiskAbstractSocketFoundboolean
probes.os_integrity.data.magiskAbstractSocketFound
magicMountModulesFoundboolean
probes.os_integrity.data.magicMountModulesFound
fridaThreadNamesFoundstring[]
probes.os_integrity.data.fridaThreadNamesFound
fridaInjectorPipeFoundboolean
probes.os_integrity.data.fridaInjectorPipeFound
fridaListenerPortFoundboolean
probes.os_integrity.data.fridaListenerPortFound
verifiedBootStatestring
probes.os_integrity.data.verifiedBootState
bootloaderLockedboolean
probes.os_integrity.data.bootloaderLocked
selinuxEnforcingboolean
probes.os_integrity.data.selinuxEnforcing
ldPreloadSetboolean
probes.os_integrity.data.ldPreloadSet
ldPreloadValuestring
probes.os_integrity.data.ldPreloadValue
hiddenApiPolicystring
probes.os_integrity.data.hiddenApiPolicy
emulatorFingerprintMatchboolean
probes.os_integrity.data.emulatorFingerprintMatch
emulatorFilesFoundboolean
probes.os_integrity.data.emulatorFilesFound
emulatorBuildMarkersstring[]
probes.os_integrity.data.emulatorBuildMarkers
emulatorFilePathsstring[]
probes.os_integrity.data.emulatorFilePaths
emulatorSystemPropertyMarkersstring[]
probes.os_integrity.data.emulatorSystemPropertyMarkers
emulatorCpuMarkersstring[]
probes.os_integrity.data.emulatorCpuMarkers
emulatorVendorMarkersstring[]
probes.os_integrity.data.emulatorVendorMarkers
deviceFarmMarkersstring[]
probes.os_integrity.data.deviceFarmMarkers
emulatorChecksPerformedstring[]
probes.os_integrity.data.emulatorChecksPerformed
sensorCountnumber
probes.os_integrity.data.sensorCount
hasAccelerometerboolean
probes.os_integrity.data.hasAccelerometer
hasGyroscopeboolean
probes.os_integrity.data.hasGyroscope
hasMagnetometerboolean
probes.os_integrity.data.hasMagnetometer
hasProximitySensorboolean
probes.os_integrity.data.hasProximitySensor
isRunningInUserTestHarnessboolean
probes.os_integrity.data.isRunningInUserTestHarness
simulatorEnvironmentPresentboolean
probes.os_integrity.data.simulatorEnvironmentPresent
abistring
probes.os_integrity.data.abi
dyldImageCountnumber
probes.os_integrity.data.dyldImageCount
parentPidUnexpectedboolean
probes.os_integrity.data.parentPidUnexpected
jailbreakBypassDetectedboolean
probes.os_integrity.data.jailbreakBypassDetected
mainExecutableEncryptedboolean
probes.os_integrity.data.mainExecutableEncrypted
openReverseEngineeringPortsnumber[]
probes.os_integrity.data.openReverseEngineeringPorts
tracerPidnumber
probes.os_integrity.data.tracerPid
tracedByOtherProcessboolean
probes.os_integrity.data.tracedByOtherProcess
testKeysBuildboolean
probes.os_integrity.data.testKeysBuild
suspiciousMountsFoundboolean
probes.os_integrity.data.suspiciousMountsFound
zygiskIndicatorsFoundboolean
probes.os_integrity.data.zygiskIndicatorsFound
suspiciousExecutableMappingsFoundboolean
probes.os_integrity.data.suspiciousExecutableMappingsFound
suspiciousEnvironmentVariablesFoundboolean
probes.os_integrity.data.suspiciousEnvironmentVariablesFound
suspiciousEnvironmentVariableNamesstring[]
probes.os_integrity.data.suspiciousEnvironmentVariableNames
suspiciousPathCountnumber
probes.os_integrity.data.suspiciousPathCount
injectedLibraryCountnumber
probes.os_integrity.data.injectedLibraryCount
os_integrity_frida_scanFrida port scan

Check the local Frida server default port as an active instrumentation signal.

Androiddefault on
moderate sensitivityruntime_security

Needs INTERNET already declared by the host application; an app without it cannot open a socket at all, including to loopback

The only active probe: it connects to 127.0.0.1 and is collected by the optional Android active-probes component, never by the no-network core. Verified on a device: without host-declared INTERNET both flags read false even while a listener is up, which is indistinguishable from nothing listening. A REJECT-like reply is protocol evidence, not service identity.

4 typed top-level fields
scanPerformedboolean
probes.os_integrity_frida_scan.data.scanPerformed
defaultPortOpenboolean
probes.os_integrity_frida_scan.data.defaultPortOpen
scannedPortnumber
probes.os_integrity_frida_scan.data.scannedPort
fridaHandshakeRejectboolean
probes.os_integrity_frida_scan.data.fridaHandshakeReject
os_integrity_fork_testiOS fork jailbreak test

Test whether the iOS process can fork outside the normal application sandbox.

iOSdefault off
high sensitivitydevice_integrity

No permission required

Disabled until stability is validated on a representative physical-device lab.

2 typed top-level fields
testPerformedboolean
probes.os_integrity_fork_test.data.testPerformed
forkSucceededboolean
probes.os_integrity_fork_test.data.forkSucceeded
networkNetwork context

Describe connectivity, VPN, proxy, interfaces, local addresses, and traffic counters.

Android + iOSdefault on
high sensitivitynetworklocal_ip_address

Uses ACCESS_NETWORK_STATE only when already declared by the host application

Active-link details require host-declared ACCESS_NETWORK_STATE. Missing permission/read failures are omitted; no DNS lookup or network request is performed. SSID and BSSID are normally absent.

24 typed top-level fields
isConnectedboolean
probes.network.data.isConnected
connectionTypestring
probes.network.data.connectionType
isMeteredboolean
probes.network.data.isMetered
isVpnActiveboolean
probes.network.data.isVpnActive
isProxyConfiguredboolean
probes.network.data.isProxyConfigured
proxyHoststring
probes.network.data.proxyHost
proxyPortnumber
probes.network.data.proxyPort
wifiSsidstring
probes.network.data.wifiSsid
wifiBssidstring
probes.network.data.wifiBssid
interfaceNamesstring[]
probes.network.data.interfaceNames
localIpAddressesstring[]
probes.network.data.localIpAddresses
linkDownstreamKbpsnumber
probes.network.data.linkDownstreamKbps
linkUpstreamKbpsnumber
probes.network.data.linkUpstreamKbps
networkTransportTypesstring[]
probes.network.data.networkTransportTypes
dnsServerAddressesstring[]
probes.network.data.dnsServerAddresses
isPrivateDnsActiveboolean
probes.network.data.isPrivateDnsActive
privateDnsServerNamestring
probes.network.data.privateDnsServerName
activeNetworkMtunumber
probes.network.data.activeNetworkMtu
isInternetValidatedboolean
probes.network.data.isInternetValidated
hasCaptivePortalboolean
probes.network.data.hasCaptivePortal
mobileRxBytesnumber
probes.network.data.mobileRxBytes
mobileTxBytesnumber
probes.network.data.mobileTxBytes
wifiRxBytesnumber
probes.network.data.wifiRxBytes
wifiTxBytesnumber
probes.network.data.wifiTxBytes
telephonyTelephony context

Collect opportunistic carrier, SIM, roaming, and network-country observations.

Android + iOSdefault on
high sensitivitycarriersimcountry

Uses READ_PHONE_STATE only when already granted to the host application for SIM count

No phone-state permission is requested. IMEI is intentionally unavailable to normal applications.

14 typed top-level fields
phoneTypestring
probes.telephony.data.phoneType
networkOperatorNamestring
probes.telephony.data.networkOperatorName
simOperatorNamestring
probes.telephony.data.simOperatorName
networkCountryIsostring
probes.telephony.data.networkCountryIso
simCountryIsostring
probes.telephony.data.simCountryIso
simStatestring
probes.telephony.data.simState
simCountnumber
probes.telephony.data.simCount
hasIccCardboolean
probes.telephony.data.hasIccCard
isNetworkRoamingboolean
probes.telephony.data.isNetworkRoaming
dataStatestring
probes.telephony.data.dataState
carrierMobileCountryCodestring
probes.telephony.data.carrierMobileCountryCode
carrierMobileNetworkCodestring
probes.telephony.data.carrierMobileNetworkCode
carrierAllowsVoipboolean
probes.telephony.data.carrierAllowsVoip
imeistring
probes.telephony.data.imei
localeLocale

Describe locale, timezone, formatting, and keyboard-language consistency.

Android + iOSdefault on
moderate sensitivitylocaletimezonekeyboard_language

No permission required

13 typed top-level fields
languagestring
probes.locale.data.language
languagesstring[]
probes.locale.data.languages
countrystring
probes.locale.data.country
timezoneIdstring
probes.locale.data.timezoneId
timezoneOffsetMinutesnumber
probes.locale.data.timezoneOffsetMinutes
uses24HourClockboolean
probes.locale.data.uses24HourClock
currencyCodestring
probes.locale.data.currencyCode
calendarstring
probes.locale.data.calendar
decimalSeparatorstring
probes.locale.data.decimalSeparator
groupingSeparatorstring
probes.locale.data.groupingSeparator
measurementSystemstring
probes.locale.data.measurementSystem
firstDayOfWeeknumber
probes.locale.data.firstDayOfWeek
keyboardLanguagesstring[]
probes.locale.data.keyboardLanguages
geolocationGeolocation context

Read permission state and an already-available last-known location without prompting.

Android + iOSdefault on
high sensitivityprecise_locationlocation_permission

Uses only location permission already granted to the host application

The SDK never requests location permission or starts an active location update. mockLocationAppsFound is reserved but not populated because broad package enumeration is prohibited.

14 typed top-level fields
authorizationStatusstring
probes.geolocation.data.authorizationStatus
hasCoarsePermissionboolean
probes.geolocation.data.hasCoarsePermission
latitudenumber
probes.geolocation.data.latitude
longitudenumber
probes.geolocation.data.longitude
accuracyMetersnumber
probes.geolocation.data.accuracyMeters
altitudeMetersnumber
probes.geolocation.data.altitudeMeters
locationServicesEnabledboolean
probes.geolocation.data.locationServicesEnabled
isFromMockProviderboolean
probes.geolocation.data.isFromMockProvider
mockLocationAppsFoundboolean
probes.geolocation.data.mockLocationAppsFound
isSimulatedBySoftwareboolean
probes.geolocation.data.isSimulatedBySoftware
isProducedByAccessoryboolean
probes.geolocation.data.isProducedByAccessory
providerstring
probes.geolocation.data.provider
locationAgeMsnumber
probes.geolocation.data.locationAgeMs
gnssSupportedboolean
probes.geolocation.data.gnssSupported
media_bluetooth_appsMedia, Bluetooth, accessibility, and known apps

Expose media-route, paired-device count, accessibility, and finite known-app observations.

Android + iOSdefault on
high sensitivitymedia_routebluetoothaccessibilityinstalled_apps

Uses BLUETOOTH_CONNECT only when already granted to the host application

App visibility is limited to an audited finite list; QUERY_ALL_PACKAGES is not requested. iOS mirroring uses UIScreen.mirroredScreen rather than external-screen presence.

15 typed top-level fields
audioOutputRoutestring
probes.media_bluetooth_apps.data.audioOutputRoute
isMusicActiveboolean
probes.media_bluetooth_apps.data.isMusicActive
isOtherAudioPlayingboolean
probes.media_bluetooth_apps.data.isOtherAudioPlaying
isScreenCapturedboolean
probes.media_bluetooth_apps.data.isScreenCaptured
isScreenMirroredboolean
probes.media_bluetooth_apps.data.isScreenMirrored
connectedScreenCountnumber
probes.media_bluetooth_apps.data.connectedScreenCount
mirroredScreenCountnumber
probes.media_bluetooth_apps.data.mirroredScreenCount
displayCountnumber
probes.media_bluetooth_apps.data.displayCount
presentationDisplayCountnumber
probes.media_bluetooth_apps.data.presentationDisplayCount
bluetoothBondedDeviceCountnumber
probes.media_bluetooth_apps.data.bluetoothBondedDeviceCount
installedFlaggedAppsstring[]
probes.media_bluetooth_apps.data.installedFlaggedApps
openableFlaggedSchemesstring[]
probes.media_bluetooth_apps.data.openableFlaggedSchemes
enabledAccessibilityServicesstring[]
probes.media_bluetooth_apps.data.enabledAccessibilityServices
accessibilityRunningboolean
probes.media_bluetooth_apps.data.accessibilityRunning
accessibilityFeaturesstring[]
probes.media_bluetooth_apps.data.accessibilityFeatures
gpu_benchmarkGPU benchmark

Collect GPU identity and bounded workload timing for device-class consistency analysis.

Android + iOSdefault off
high sensitivitygpuperformance

No permission required

Disabled by default because it is high entropy and requires device-lab calibration. Standalone Android requires a worker thread. The 50 ms Android draw-loop target is not an end-to-end deadline; driver work can overrun and caller timeouts do not cancel it. EGL restoration and cleanup are best-effort.

15 typed top-level fields
benchmarkPerformedboolean
probes.gpu_benchmark.data.benchmarkPerformed
skippedReasonstring
probes.gpu_benchmark.data.skippedReason
rendererNamestring
probes.gpu_benchmark.data.rendererName
vendorNamestring
probes.gpu_benchmark.data.vendorName
apiVersionstring
probes.gpu_benchmark.data.apiVersion
shadingLanguageVersionstring
probes.gpu_benchmark.data.shadingLanguageVersion
maxTextureSizenumber
probes.gpu_benchmark.data.maxTextureSize
drawCallsCompletednumber
probes.gpu_benchmark.data.drawCallsCompleted
durationMsnumber
probes.gpu_benchmark.data.durationMs
gpuTimeMsnumber
probes.gpu_benchmark.data.gpuTimeMs
operationTimeP50Msnumber
probes.gpu_benchmark.data.operationTimeP50Ms
operationTimeP95Msnumber
probes.gpu_benchmark.data.operationTimeP95Ms
operationTimeMadMsnumber
probes.gpu_benchmark.data.operationTimeMadMs
operationTimeCoefficientOfVariationnumber
probes.gpu_benchmark.data.operationTimeCoefficientOfVariation
warmupSlopenumber
probes.gpu_benchmark.data.warmupSlope
audio_latencyAudio latency

Collect coarse audio pipeline properties for device-class consistency analysis.

Android + iOSdefault off
high sensitivityaudio_hardwareperformance

No permission required

Disabled by default pending representative device-lab calibration.

6 typed top-level fields
measuredboolean
probes.audio_latency.data.measured
outputLatencyMsnumber
probes.audio_latency.data.outputLatencyMs
inputLatencyMsnumber
probes.audio_latency.data.inputLatencyMs
ioBufferDurationMsnumber
probes.audio_latency.data.ioBufferDurationMs
framesPerBuffernumber
probes.audio_latency.data.framesPerBuffer
nativeSampleRatenumber
probes.audio_latency.data.nativeSampleRate
applicationHost application

Describe the host app, install source, granted permissions, and package delivery shape.

Android + iOSdefault on
moderate sensitivityapplicationinstall_provenancepermissions

No permission required

Android install-source values describe the host package only and remain untrusted installer-supplied observations. getTaskAllowEntitlement is reserved but not populated because the public iPhoneOS headers do not expose a supported entitlement lookup API.

35 typed top-level fields
appVersionstring
probes.application.data.appVersion
appBuildstring
probes.application.data.appBuild
bundleIdstring
probes.application.data.bundleId
appNamestring
probes.application.data.appName
installerPackagestring
probes.application.data.installerPackage
installingPackageNamestring
probes.application.data.installingPackageName
initiatingPackageNamestring
probes.application.data.initiatingPackageName
initiatingPackageSigningCertificateSha256string[]
probes.application.data.initiatingPackageSigningCertificateSha256
installPackageSourcestring
probes.application.data.installPackageSource
updateOwnerPackageNamestring
probes.application.data.updateOwnerPackageName
isForegroundboolean
probes.application.data.isForeground
processUptimeMsnumber
probes.application.data.processUptimeMs
grantedPermissionsstring[]
probes.application.data.grantedPermissions
isSplitApksboolean
probes.application.data.isSplitApks
splitNamesstring[]
probes.application.data.splitNames
firstInstallTimeMsnumber
probes.application.data.firstInstallTimeMs
lastUpdateTimeMsnumber
probes.application.data.lastUpdateTimeMs
targetSdkVersionnumber
probes.application.data.targetSdkVersion
minSdkVersionnumber
probes.application.data.minSdkVersion
minimumOsVersionstring
probes.application.data.minimumOsVersion
isDebuggableboolean
probes.application.data.isDebuggable
isInstantAppboolean
probes.application.data.isInstantApp
signingCertificateSha256string[]
probes.application.data.signingCertificateSha256
signingCertificateHistorySha256string[]
probes.application.data.signingCertificateHistorySha256
hasMultipleSignersboolean
probes.application.data.hasMultipleSigners
receiptPresentboolean
probes.application.data.receiptPresent
receiptEnvironmentstring
probes.application.data.receiptEnvironment
bundleExecutablestring
probes.application.data.bundleExecutable
isAppExtensionboolean
probes.application.data.isAppExtension
isSimulatorBuildboolean
probes.application.data.isSimulatorBuild
isInstalledOnExternalStorageboolean
probes.application.data.isInstalledOnExternalStorage
isSystemAppboolean
probes.application.data.isSystemApp
isUpdatedSystemAppboolean
probes.application.data.isUpdatedSystemApp
embeddedProvisioningProfilePresentboolean
probes.application.data.embeddedProvisioningProfilePresent
getTaskAllowEntitlementboolean
probes.application.data.getTaskAllowEntitlement
device_security_postureDevice security posture

Expose coarse lock, biometric availability, trusted-time, provisioning, and security-update observations.

Android + iOSdefault on
moderate sensitivitydevice_securityauthentication_capabilityoperating_system

No permission required

Reports capability/state only and never displays an authentication prompt or reads biometric material. iOS Lockdown Mode is not collected: its only read path (NSUserDefaults) is an Apple Required-Reason API category and this module declares none.

13 typed top-level fields
hasSecureLockScreenboolean
probes.device_security_posture.data.hasSecureLockScreen
isDeviceLockedboolean
probes.device_security_posture.data.isDeviceLocked
isUserUnlockedboolean
probes.device_security_posture.data.isUserUnlocked
protectedDataAvailableboolean
probes.device_security_posture.data.protectedDataAvailable
biometryAvailableboolean
probes.device_security_posture.data.biometryAvailable
biometryTypestring
probes.device_security_posture.data.biometryType
fingerprintHardwarePresentboolean
probes.device_security_posture.data.fingerprintHardwarePresent
faceHardwarePresentboolean
probes.device_security_posture.data.faceHardwarePresent
strongBoxAvailableboolean
probes.device_security_posture.data.strongBoxAvailable
automaticTimeEnabledboolean
probes.device_security_posture.data.automaticTimeEnabled
automaticTimeZoneEnabledboolean
probes.device_security_posture.data.automaticTimeZoneEnabled
deviceProvisionedboolean
probes.device_security_posture.data.deviceProvisioned
securityPatchstring
probes.device_security_posture.data.securityPatch
transaction_safetyTransaction safety

Collect point-in-time remote-control, screen-capture, accessibility, lock, and call-state observations.

Android + iOSdefault off
high sensitivityruntime_securityaccessibilityinstalled_appsdevice_state

Android 14 screenshot observation requires host-declared DETECT_SCREEN_CAPTURE; Android 15 screen-recording visibility requires host-declared DETECT_SCREEN_RECORDING

Ships disabled until physical-device calibration. React Native Android UI observation starts lazily on collection, detaches on host pause/destroy and resumes only on a subsequent collection; historical evidence can span gaps. Standalone Android uses an explicit session. Partial obscuration is omitted below Android 10; unavailable capture coverage is omitted. The library declares neither capture permission and never prompts.

21 typed top-level fields
isDeviceLockedboolean
probes.transaction_safety.data.isDeviceLocked
isInteractiveboolean
probes.transaction_safety.data.isInteractive
isScreenCapturedboolean
probes.transaction_safety.data.isScreenCaptured
isScreenMirroredboolean
probes.transaction_safety.data.isScreenMirrored
isVisibleInScreenRecordingboolean
probes.transaction_safety.data.isVisibleInScreenRecording
screenshotObservationActiveboolean
probes.transaction_safety.data.screenshotObservationActive
screenshotDetectedSinceObservationStartboolean
probes.transaction_safety.data.screenshotDetectedSinceObservationStart
lastScreenshotDetectedElapsedMsnumber
probes.transaction_safety.data.lastScreenshotDetectedElapsedMs
transactionObservationStartedElapsedMsnumber
probes.transaction_safety.data.transactionObservationStartedElapsedMs
observedTouchCountnumber
probes.transaction_safety.data.observedTouchCount
obscuredTouchObservedboolean
probes.transaction_safety.data.obscuredTouchObserved
partiallyObscuredTouchObservedboolean
probes.transaction_safety.data.partiallyObscuredTouchObserved
lastObscuredTouchElapsedMsnumber
probes.transaction_safety.data.lastObscuredTouchElapsedMs
lastPartiallyObscuredTouchElapsedMsnumber
probes.transaction_safety.data.lastPartiallyObscuredTouchElapsedMs
accessibilityRunningboolean
probes.transaction_safety.data.accessibilityRunning
accessibilityFeatureCountnumber
probes.transaction_safety.data.accessibilityFeatureCount
enabledAccessibilityServiceCountnumber
probes.transaction_safety.data.enabledAccessibilityServiceCount
remoteAccessAppsFoundstring[]
probes.transaction_safety.data.remoteAccessAppsFound
remoteAccessAppCountnumber
probes.transaction_safety.data.remoteAccessAppCount
audioModestring
probes.transaction_safety.data.audioMode
isCallActiveboolean
probes.transaction_safety.data.isCallActive
runtimeReact Native runtime

Describe the JavaScript engine and active React Native architecture.

Android + iOSdefault on
low sensitivityruntimesoftware_version

No permission required

9 typed top-level fields
jsEnginestring
probes.runtime.data.jsEngine
hermesVersionstring
probes.runtime.data.hermesVersion
isHermesboolean
probes.runtime.data.isHermes
isFabricboolean
probes.runtime.data.isFabric
isTurboModuleboolean
probes.runtime.data.isTurboModule
isBridgelessboolean
probes.runtime.data.isBridgeless
isDebugBuildboolean
probes.runtime.data.isDebugBuild
reactNativeVersionstring
probes.runtime.data.reactNativeVersion
platformOsstring
probes.runtime.data.platformOs
runtime_timingRuntime timing profile

Measure bounded JS event-loop, native clock, and JS-to-native call timing distributions.

Android + iOSdefault off
high sensitivityruntimeperformance

No permission required

Disabled by default because timing is noisy, high entropy, and requires physical-device calibration. Android omits native distribution measurements when no positive clock intervals are available; clock-read failures fail collection.

14 typed top-level fields
jsClockSourcestring
probes.runtime_timing.data.jsClockSource
jsTimerSampleCountnumber
probes.runtime_timing.data.jsTimerSampleCount
jsTimerResolutionMsnumber
probes.runtime_timing.data.jsTimerResolutionMs
eventLoopSampleCountnumber
probes.runtime_timing.data.eventLoopSampleCount
eventLoopP50Msnumber
probes.runtime_timing.data.eventLoopP50Ms
eventLoopP95Msnumber
probes.runtime_timing.data.eventLoopP95Ms
eventLoopMadMsnumber
probes.runtime_timing.data.eventLoopMadMs
bridgeRoundTripMsnumber
probes.runtime_timing.data.bridgeRoundTripMs
nativeClockSourcestring
probes.runtime_timing.data.nativeClockSource
nativeSampleCountnumber
probes.runtime_timing.data.nativeSampleCount
nativeTimerResolutionNsnumber
probes.runtime_timing.data.nativeTimerResolutionNs
nativeIntervalMedianNsnumber
probes.runtime_timing.data.nativeIntervalMedianNs
nativeIntervalP95Nsnumber
probes.runtime_timing.data.nativeIntervalP95Ns
nativeIntervalMadNsnumber
probes.runtime_timing.data.nativeIntervalMadNs
numeric_consistencyNumeric runtime consistency

Compare deterministic integer and floating-point behavior across JavaScript and native runtimes.

Android + iOSdefault off
high sensitivityruntimeperformance

No permission required

Disabled by default; returns comparison aggregates rather than raw stable identifiers or a verdict.

7 typed top-level fields
integerVectorMatchesboolean
probes.numeric_consistency.data.integerVectorMatches
integerMismatchCountnumber
probes.numeric_consistency.data.integerMismatchCount
floatSampleCountnumber
probes.numeric_consistency.data.floatSampleCount
floatMismatchCountnumber
probes.numeric_consistency.data.floatMismatchCount
floatMaxAbsoluteDifferencenumber
probes.numeric_consistency.data.floatMaxAbsoluteDifference
signedZeroPreservedboolean
probes.numeric_consistency.data.signedZeroPreserved
subnormalPreservedboolean
probes.numeric_consistency.data.subnormalPreserved

Independent probe outcomes

OutcomeMeaningBackend treatment
successThe probe returned an observation payload.Validate schema and freshness before feature use.
skippedConfiguration, consent, platform, or capability excluded the probe.Keep separate from negative evidence.
timeoutThe configured deadline elapsed.Monitor collection health, do not convert to a safe value.
errorThe probe failed in isolation.Track error class and SDK version operationally.

Source of truth

The typed catalog in src/probeCatalog.ts is authoritative. It includes every selectable field, purpose, data category, platform, sensitivity level, permission note, and default state.

Open the full data dictionary on GitHub.