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.
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 }
>;
};schema_version changes only when the event envelope changes. New probe IDs can appear without an envelope version bump.
An omitted field, a skipped probe, a timeout, an error, and an observed false are different states.
Persist the SDK version with your event and ignore unknown probe IDs or fields until your backend explicitly adopts them.
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 purpose | Availability | Data classification | Permission behavior and notes | Possible success data |
|---|---|---|---|---|
device_identityDevice identityDescribe the claimed device and operating-system build for consistency checks. |
13 typed top-level fieldsmanufacturerstringprobes.device_identity.data.manufacturer
modelstringprobes.device_identity.data.model
brandstringprobes.device_identity.data.brand
systemNamestringprobes.device_identity.data.systemName
systemVersionstringprobes.device_identity.data.systemVersion
isTabletbooleanprobes.device_identity.data.isTablet
osBuildstringprobes.device_identity.data.osBuild
kernelVersionstringprobes.device_identity.data.kernelVersion
kernelOsReleasestringprobes.device_identity.data.kernelOsRelease
kernelOsTypestringprobes.device_identity.data.kernelOsType
androidBuildAndroidBuildInfoprobes.device_identity.data.androidBuild
isIosAppOnMacbooleanprobes.device_identity.data.isIosAppOnMac
isMacCatalystAppbooleanprobes.device_identity.data.isMacCatalystApp
|
|||
hardwareHardwareCollect coarse hardware, display, memory, battery, and device-class observations. |
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 fieldsscreenWidthPxnumberprobes.hardware.data.screenWidthPx
screenHeightPxnumberprobes.hardware.data.screenHeightPx
screenDensitynumberprobes.hardware.data.screenDensity
screenDpinumberprobes.hardware.data.screenDpi
screenPhysicalWidthPxnumberprobes.hardware.data.screenPhysicalWidthPx
screenPhysicalHeightPxnumberprobes.hardware.data.screenPhysicalHeightPx
screenPhysicalDensitynumberprobes.hardware.data.screenPhysicalDensity
screenBrightnessnumberprobes.hardware.data.screenBrightness
screenOrientationstringprobes.hardware.data.screenOrientation
processorCountnumberprobes.hardware.data.processorCount
cpuArchitecturestringprobes.hardware.data.cpuArchitecture
cpuMaxFrequencyMhznumberprobes.hardware.data.cpuMaxFrequencyMhz
totalMemoryBytesnumberprobes.hardware.data.totalMemoryBytes
freeMemoryBytesnumberprobes.hardware.data.freeMemoryBytes
isLowMemorybooleanprobes.hardware.data.isLowMemory
processResidentMemoryBytesnumberprobes.hardware.data.processResidentMemoryBytes
isLowRamDevicebooleanprobes.hardware.data.isLowRamDevice
runtimeMaxMemoryBytesnumberprobes.hardware.data.runtimeMaxMemoryBytes
lowPowerModeEnabledbooleanprobes.hardware.data.lowPowerModeEnabled
batteryLevelnumberprobes.hardware.data.batteryLevel
batteryStatestringprobes.hardware.data.batteryState
batteryTemperatureCnumberprobes.hardware.data.batteryTemperatureC
batteryHealthstringprobes.hardware.data.batteryHealth
batteryVoltageMvnumberprobes.hardware.data.batteryVoltageMv
batteryTechnologystringprobes.hardware.data.batteryTechnology
batteryPresentbooleanprobes.hardware.data.batteryPresent
batteryLowbooleanprobes.hardware.data.batteryLow
powerSourcestringprobes.hardware.data.powerSource
batteryCycleCountnumberprobes.hardware.data.batteryCycleCount
chargeTimeRemainingMsnumberprobes.hardware.data.chargeTimeRemainingMs
nfcAvailablebooleanprobes.hardware.data.nfcAvailable
nfcEnabledbooleanprobes.hardware.data.nfcEnabled
storageTotalBytesnumberprobes.hardware.data.storageTotalBytes
storageFreeBytesnumberprobes.hardware.data.storageFreeBytes
uptimeMsnumberprobes.hardware.data.uptimeMs
|
||
fontsInstalled fontsProduce a platform-local digest of installed font names for consistency analysis. |
Digests are comparable only within the same platform and are not persistent device identifiers. |
1 typed top-level fieldsfontsDigeststringprobes.fonts.data.fontsDigest
|
||
os_integrityOS integrityExpose root, jailbreak, emulator, debugger, hook, and boot-integrity observations. |
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 fieldsisEmulatorbooleanprobes.os_integrity.data.isEmulator
isDebuggerAttachedbooleanprobes.os_integrity.data.isDebuggerAttached
isDebuggerWaitingbooleanprobes.os_integrity.data.isDebuggerWaiting
developerModeEnabledbooleanprobes.os_integrity.data.developerModeEnabled
usbDebuggingEnabledbooleanprobes.os_integrity.data.usbDebuggingEnabled
suBinaryFoundbooleanprobes.os_integrity.data.suBinaryFound
suOnPathbooleanprobes.os_integrity.data.suOnPath
rootManagementAppFoundbooleanprobes.os_integrity.data.rootManagementAppFound
dangerousAppFoundbooleanprobes.os_integrity.data.dangerousAppFound
rootCloakingAppFoundbooleanprobes.os_integrity.data.rootCloakingAppFound
suspiciousFilePathsFoundbooleanprobes.os_integrity.data.suspiciousFilePathsFound
suspiciousFilePathsstring[]probes.os_integrity.data.suspiciousFilePaths
writableSystemPathFoundbooleanprobes.os_integrity.data.writableSystemPathFound
dangerousPropsPresentbooleanprobes.os_integrity.data.dangerousPropsPresent
dangerousSystemPropertiesstring[]probes.os_integrity.data.dangerousSystemProperties
canOpenJailbreakSchemebooleanprobes.os_integrity.data.canOpenJailbreakScheme
symbolicLinksSuspiciousbooleanprobes.os_integrity.data.symbolicLinksSuspicious
injectedLibrariesFoundbooleanprobes.os_integrity.data.injectedLibrariesFound
injectedLibraryNamesstring[]probes.os_integrity.data.injectedLibraryNames
loadedHookClassNamesstring[]probes.os_integrity.data.loadedHookClassNames
hookStackFrameFoundbooleanprobes.os_integrity.data.hookStackFrameFound
hookStackFramesstring[]probes.os_integrity.data.hookStackFrames
hookFrameworkFoundbooleanprobes.os_integrity.data.hookFrameworkFound
magiskMountsFoundbooleanprobes.os_integrity.data.magiskMountsFound
magiskAbstractSocketFoundbooleanprobes.os_integrity.data.magiskAbstractSocketFound
magicMountModulesFoundbooleanprobes.os_integrity.data.magicMountModulesFound
fridaThreadNamesFoundstring[]probes.os_integrity.data.fridaThreadNamesFound
fridaInjectorPipeFoundbooleanprobes.os_integrity.data.fridaInjectorPipeFound
fridaListenerPortFoundbooleanprobes.os_integrity.data.fridaListenerPortFound
verifiedBootStatestringprobes.os_integrity.data.verifiedBootState
bootloaderLockedbooleanprobes.os_integrity.data.bootloaderLocked
selinuxEnforcingbooleanprobes.os_integrity.data.selinuxEnforcing
ldPreloadSetbooleanprobes.os_integrity.data.ldPreloadSet
ldPreloadValuestringprobes.os_integrity.data.ldPreloadValue
emulatorFingerprintMatchbooleanprobes.os_integrity.data.emulatorFingerprintMatch
emulatorFilesFoundbooleanprobes.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
sensorCountnumberprobes.os_integrity.data.sensorCount
hasAccelerometerbooleanprobes.os_integrity.data.hasAccelerometer
hasGyroscopebooleanprobes.os_integrity.data.hasGyroscope
hasMagnetometerbooleanprobes.os_integrity.data.hasMagnetometer
hasProximitySensorbooleanprobes.os_integrity.data.hasProximitySensor
isRunningInUserTestHarnessbooleanprobes.os_integrity.data.isRunningInUserTestHarness
simulatorEnvironmentPresentbooleanprobes.os_integrity.data.simulatorEnvironmentPresent
abistringprobes.os_integrity.data.abi
dyldImageCountnumberprobes.os_integrity.data.dyldImageCount
parentPidUnexpectedbooleanprobes.os_integrity.data.parentPidUnexpected
jailbreakBypassDetectedbooleanprobes.os_integrity.data.jailbreakBypassDetected
mainExecutableEncryptedbooleanprobes.os_integrity.data.mainExecutableEncrypted
openReverseEngineeringPortsnumber[]probes.os_integrity.data.openReverseEngineeringPorts
tracerPidnumberprobes.os_integrity.data.tracerPid
tracedByOtherProcessbooleanprobes.os_integrity.data.tracedByOtherProcess
testKeysBuildbooleanprobes.os_integrity.data.testKeysBuild
suspiciousMountsFoundbooleanprobes.os_integrity.data.suspiciousMountsFound
zygiskIndicatorsFoundbooleanprobes.os_integrity.data.zygiskIndicatorsFound
suspiciousExecutableMappingsFoundbooleanprobes.os_integrity.data.suspiciousExecutableMappingsFound
suspiciousEnvironmentVariablesFoundbooleanprobes.os_integrity.data.suspiciousEnvironmentVariablesFound
suspiciousEnvironmentVariableNamesstring[]probes.os_integrity.data.suspiciousEnvironmentVariableNames
suspiciousPathCountnumberprobes.os_integrity.data.suspiciousPathCount
injectedLibraryCountnumberprobes.os_integrity.data.injectedLibraryCount
|
||
os_integrity_frida_scanFrida port scanCheck the local Frida server default port as an active instrumentation signal. |
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 fieldsscanPerformedbooleanprobes.os_integrity_frida_scan.data.scanPerformed
defaultPortOpenbooleanprobes.os_integrity_frida_scan.data.defaultPortOpen
scannedPortnumberprobes.os_integrity_frida_scan.data.scannedPort
fridaHandshakeRejectbooleanprobes.os_integrity_frida_scan.data.fridaHandshakeReject
|
||
os_integrity_fork_testiOS fork jailbreak testTest whether the iOS process can fork outside the normal application sandbox. |
Disabled until stability is validated on a representative physical-device lab. |
2 typed top-level fieldstestPerformedbooleanprobes.os_integrity_fork_test.data.testPerformed
forkSucceededbooleanprobes.os_integrity_fork_test.data.forkSucceeded
|
||
networkNetwork contextDescribe connectivity, VPN, proxy, interfaces, local addresses, and traffic counters. |
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 fieldsisConnectedbooleanprobes.network.data.isConnected
connectionTypestringprobes.network.data.connectionType
isMeteredbooleanprobes.network.data.isMetered
isVpnActivebooleanprobes.network.data.isVpnActive
isProxyConfiguredbooleanprobes.network.data.isProxyConfigured
proxyHoststringprobes.network.data.proxyHost
proxyPortnumberprobes.network.data.proxyPort
wifiSsidstringprobes.network.data.wifiSsid
wifiBssidstringprobes.network.data.wifiBssid
interfaceNamesstring[]probes.network.data.interfaceNames
localIpAddressesstring[]probes.network.data.localIpAddresses
linkDownstreamKbpsnumberprobes.network.data.linkDownstreamKbps
linkUpstreamKbpsnumberprobes.network.data.linkUpstreamKbps
networkTransportTypesstring[]probes.network.data.networkTransportTypes
dnsServerAddressesstring[]probes.network.data.dnsServerAddresses
isPrivateDnsActivebooleanprobes.network.data.isPrivateDnsActive
privateDnsServerNamestringprobes.network.data.privateDnsServerName
activeNetworkMtunumberprobes.network.data.activeNetworkMtu
isInternetValidatedbooleanprobes.network.data.isInternetValidated
hasCaptivePortalbooleanprobes.network.data.hasCaptivePortal
mobileRxBytesnumberprobes.network.data.mobileRxBytes
mobileTxBytesnumberprobes.network.data.mobileTxBytes
wifiRxBytesnumberprobes.network.data.wifiRxBytes
wifiTxBytesnumberprobes.network.data.wifiTxBytes
|
||
telephonyTelephony contextCollect opportunistic carrier, SIM, roaming, and network-country observations. |
No phone-state permission is requested. IMEI is intentionally unavailable to normal applications. |
14 typed top-level fieldsphoneTypestringprobes.telephony.data.phoneType
networkOperatorNamestringprobes.telephony.data.networkOperatorName
simOperatorNamestringprobes.telephony.data.simOperatorName
networkCountryIsostringprobes.telephony.data.networkCountryIso
simCountryIsostringprobes.telephony.data.simCountryIso
simStatestringprobes.telephony.data.simState
simCountnumberprobes.telephony.data.simCount
hasIccCardbooleanprobes.telephony.data.hasIccCard
isNetworkRoamingbooleanprobes.telephony.data.isNetworkRoaming
dataStatestringprobes.telephony.data.dataState
carrierMobileCountryCodestringprobes.telephony.data.carrierMobileCountryCode
carrierMobileNetworkCodestringprobes.telephony.data.carrierMobileNetworkCode
carrierAllowsVoipbooleanprobes.telephony.data.carrierAllowsVoip
imeistringprobes.telephony.data.imei
|
||
localeLocaleDescribe locale, timezone, formatting, and keyboard-language consistency. |
13 typed top-level fieldslanguagestringprobes.locale.data.language
languagesstring[]probes.locale.data.languages
countrystringprobes.locale.data.country
timezoneIdstringprobes.locale.data.timezoneId
timezoneOffsetMinutesnumberprobes.locale.data.timezoneOffsetMinutes
uses24HourClockbooleanprobes.locale.data.uses24HourClock
currencyCodestringprobes.locale.data.currencyCode
calendarstringprobes.locale.data.calendar
decimalSeparatorstringprobes.locale.data.decimalSeparator
groupingSeparatorstringprobes.locale.data.groupingSeparator
measurementSystemstringprobes.locale.data.measurementSystem
firstDayOfWeeknumberprobes.locale.data.firstDayOfWeek
keyboardLanguagesstring[]probes.locale.data.keyboardLanguages
|
|||
geolocationGeolocation contextRead permission state and an already-available last-known location without prompting. |
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 fieldsauthorizationStatusstringprobes.geolocation.data.authorizationStatus
hasCoarsePermissionbooleanprobes.geolocation.data.hasCoarsePermission
latitudenumberprobes.geolocation.data.latitude
longitudenumberprobes.geolocation.data.longitude
accuracyMetersnumberprobes.geolocation.data.accuracyMeters
altitudeMetersnumberprobes.geolocation.data.altitudeMeters
locationServicesEnabledbooleanprobes.geolocation.data.locationServicesEnabled
isFromMockProviderbooleanprobes.geolocation.data.isFromMockProvider
mockLocationAppsFoundbooleanprobes.geolocation.data.mockLocationAppsFound
isSimulatedBySoftwarebooleanprobes.geolocation.data.isSimulatedBySoftware
isProducedByAccessorybooleanprobes.geolocation.data.isProducedByAccessory
providerstringprobes.geolocation.data.provider
locationAgeMsnumberprobes.geolocation.data.locationAgeMs
gnssSupportedbooleanprobes.geolocation.data.gnssSupported
|
||
media_bluetooth_appsMedia, Bluetooth, accessibility, and known appsExpose media-route, paired-device count, accessibility, and finite known-app observations. |
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 fieldsaudioOutputRoutestringprobes.media_bluetooth_apps.data.audioOutputRoute
isMusicActivebooleanprobes.media_bluetooth_apps.data.isMusicActive
isOtherAudioPlayingbooleanprobes.media_bluetooth_apps.data.isOtherAudioPlaying
isScreenCapturedbooleanprobes.media_bluetooth_apps.data.isScreenCaptured
isScreenMirroredbooleanprobes.media_bluetooth_apps.data.isScreenMirrored
connectedScreenCountnumberprobes.media_bluetooth_apps.data.connectedScreenCount
mirroredScreenCountnumberprobes.media_bluetooth_apps.data.mirroredScreenCount
displayCountnumberprobes.media_bluetooth_apps.data.displayCount
presentationDisplayCountnumberprobes.media_bluetooth_apps.data.presentationDisplayCount
bluetoothBondedDeviceCountnumberprobes.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
accessibilityRunningbooleanprobes.media_bluetooth_apps.data.accessibilityRunning
accessibilityFeaturesstring[]probes.media_bluetooth_apps.data.accessibilityFeatures
|
||
gpu_benchmarkGPU benchmarkCollect GPU identity and bounded workload timing for device-class consistency analysis. |
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 fieldsbenchmarkPerformedbooleanprobes.gpu_benchmark.data.benchmarkPerformed
skippedReasonstringprobes.gpu_benchmark.data.skippedReason
rendererNamestringprobes.gpu_benchmark.data.rendererName
vendorNamestringprobes.gpu_benchmark.data.vendorName
apiVersionstringprobes.gpu_benchmark.data.apiVersion
shadingLanguageVersionstringprobes.gpu_benchmark.data.shadingLanguageVersion
maxTextureSizenumberprobes.gpu_benchmark.data.maxTextureSize
drawCallsCompletednumberprobes.gpu_benchmark.data.drawCallsCompleted
durationMsnumberprobes.gpu_benchmark.data.durationMs
gpuTimeMsnumberprobes.gpu_benchmark.data.gpuTimeMs
operationTimeP50Msnumberprobes.gpu_benchmark.data.operationTimeP50Ms
operationTimeP95Msnumberprobes.gpu_benchmark.data.operationTimeP95Ms
operationTimeMadMsnumberprobes.gpu_benchmark.data.operationTimeMadMs
operationTimeCoefficientOfVariationnumberprobes.gpu_benchmark.data.operationTimeCoefficientOfVariation
warmupSlopenumberprobes.gpu_benchmark.data.warmupSlope
|
||
audio_latencyAudio latencyCollect coarse audio pipeline properties for device-class consistency analysis. |
Disabled by default pending representative device-lab calibration. |
6 typed top-level fieldsmeasuredbooleanprobes.audio_latency.data.measured
outputLatencyMsnumberprobes.audio_latency.data.outputLatencyMs
inputLatencyMsnumberprobes.audio_latency.data.inputLatencyMs
ioBufferDurationMsnumberprobes.audio_latency.data.ioBufferDurationMs
framesPerBuffernumberprobes.audio_latency.data.framesPerBuffer
nativeSampleRatenumberprobes.audio_latency.data.nativeSampleRate
|
||
applicationHost applicationDescribe the host app, install source, granted permissions, and package delivery shape. |
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 fieldsappVersionstringprobes.application.data.appVersion
appBuildstringprobes.application.data.appBuild
bundleIdstringprobes.application.data.bundleId
appNamestringprobes.application.data.appName
installerPackagestringprobes.application.data.installerPackage
installingPackageNamestringprobes.application.data.installingPackageName
initiatingPackageNamestringprobes.application.data.initiatingPackageName
initiatingPackageSigningCertificateSha256string[]probes.application.data.initiatingPackageSigningCertificateSha256
installPackageSourcestringprobes.application.data.installPackageSource
updateOwnerPackageNamestringprobes.application.data.updateOwnerPackageName
isForegroundbooleanprobes.application.data.isForeground
processUptimeMsnumberprobes.application.data.processUptimeMs
grantedPermissionsstring[]probes.application.data.grantedPermissions
isSplitApksbooleanprobes.application.data.isSplitApks
splitNamesstring[]probes.application.data.splitNames
firstInstallTimeMsnumberprobes.application.data.firstInstallTimeMs
lastUpdateTimeMsnumberprobes.application.data.lastUpdateTimeMs
targetSdkVersionnumberprobes.application.data.targetSdkVersion
minSdkVersionnumberprobes.application.data.minSdkVersion
minimumOsVersionstringprobes.application.data.minimumOsVersion
isDebuggablebooleanprobes.application.data.isDebuggable
isInstantAppbooleanprobes.application.data.isInstantApp
signingCertificateSha256string[]probes.application.data.signingCertificateSha256
signingCertificateHistorySha256string[]probes.application.data.signingCertificateHistorySha256
hasMultipleSignersbooleanprobes.application.data.hasMultipleSigners
receiptPresentbooleanprobes.application.data.receiptPresent
receiptEnvironmentstringprobes.application.data.receiptEnvironment
bundleExecutablestringprobes.application.data.bundleExecutable
isAppExtensionbooleanprobes.application.data.isAppExtension
isSimulatorBuildbooleanprobes.application.data.isSimulatorBuild
isInstalledOnExternalStoragebooleanprobes.application.data.isInstalledOnExternalStorage
isSystemAppbooleanprobes.application.data.isSystemApp
isUpdatedSystemAppbooleanprobes.application.data.isUpdatedSystemApp
embeddedProvisioningProfilePresentbooleanprobes.application.data.embeddedProvisioningProfilePresent
getTaskAllowEntitlementbooleanprobes.application.data.getTaskAllowEntitlement
|
||
device_security_postureDevice security postureExpose coarse lock, biometric availability, trusted-time, provisioning, and security-update observations. |
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 fieldshasSecureLockScreenbooleanprobes.device_security_posture.data.hasSecureLockScreen
isDeviceLockedbooleanprobes.device_security_posture.data.isDeviceLocked
isUserUnlockedbooleanprobes.device_security_posture.data.isUserUnlocked
protectedDataAvailablebooleanprobes.device_security_posture.data.protectedDataAvailable
biometryAvailablebooleanprobes.device_security_posture.data.biometryAvailable
biometryTypestringprobes.device_security_posture.data.biometryType
fingerprintHardwarePresentbooleanprobes.device_security_posture.data.fingerprintHardwarePresent
faceHardwarePresentbooleanprobes.device_security_posture.data.faceHardwarePresent
strongBoxAvailablebooleanprobes.device_security_posture.data.strongBoxAvailable
automaticTimeEnabledbooleanprobes.device_security_posture.data.automaticTimeEnabled
automaticTimeZoneEnabledbooleanprobes.device_security_posture.data.automaticTimeZoneEnabled
deviceProvisionedbooleanprobes.device_security_posture.data.deviceProvisioned
securityPatchstringprobes.device_security_posture.data.securityPatch
|
||
transaction_safetyTransaction safetyCollect point-in-time remote-control, screen-capture, accessibility, lock, and call-state observations. |
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 fieldsisDeviceLockedbooleanprobes.transaction_safety.data.isDeviceLocked
isInteractivebooleanprobes.transaction_safety.data.isInteractive
isScreenCapturedbooleanprobes.transaction_safety.data.isScreenCaptured
isScreenMirroredbooleanprobes.transaction_safety.data.isScreenMirrored
isVisibleInScreenRecordingbooleanprobes.transaction_safety.data.isVisibleInScreenRecording
screenshotObservationActivebooleanprobes.transaction_safety.data.screenshotObservationActive
screenshotDetectedSinceObservationStartbooleanprobes.transaction_safety.data.screenshotDetectedSinceObservationStart
lastScreenshotDetectedElapsedMsnumberprobes.transaction_safety.data.lastScreenshotDetectedElapsedMs
transactionObservationStartedElapsedMsnumberprobes.transaction_safety.data.transactionObservationStartedElapsedMs
observedTouchCountnumberprobes.transaction_safety.data.observedTouchCount
obscuredTouchObservedbooleanprobes.transaction_safety.data.obscuredTouchObserved
partiallyObscuredTouchObservedbooleanprobes.transaction_safety.data.partiallyObscuredTouchObserved
lastObscuredTouchElapsedMsnumberprobes.transaction_safety.data.lastObscuredTouchElapsedMs
lastPartiallyObscuredTouchElapsedMsnumberprobes.transaction_safety.data.lastPartiallyObscuredTouchElapsedMs
accessibilityRunningbooleanprobes.transaction_safety.data.accessibilityRunning
accessibilityFeatureCountnumberprobes.transaction_safety.data.accessibilityFeatureCount
enabledAccessibilityServiceCountnumberprobes.transaction_safety.data.enabledAccessibilityServiceCount
remoteAccessAppsFoundstring[]probes.transaction_safety.data.remoteAccessAppsFound
remoteAccessAppCountnumberprobes.transaction_safety.data.remoteAccessAppCount
audioModestringprobes.transaction_safety.data.audioMode
isCallActivebooleanprobes.transaction_safety.data.isCallActive
|
||
runtimeReact Native runtimeDescribe the JavaScript engine and active React Native architecture. |
9 typed top-level fieldsjsEnginestringprobes.runtime.data.jsEngine
hermesVersionstringprobes.runtime.data.hermesVersion
isHermesbooleanprobes.runtime.data.isHermes
isFabricbooleanprobes.runtime.data.isFabric
isTurboModulebooleanprobes.runtime.data.isTurboModule
isBridgelessbooleanprobes.runtime.data.isBridgeless
isDebugBuildbooleanprobes.runtime.data.isDebugBuild
reactNativeVersionstringprobes.runtime.data.reactNativeVersion
platformOsstringprobes.runtime.data.platformOs
|
|||
runtime_timingRuntime timing profileMeasure bounded JS event-loop, native clock, and JS-to-native call timing distributions. |
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 fieldsjsClockSourcestringprobes.runtime_timing.data.jsClockSource
jsTimerSampleCountnumberprobes.runtime_timing.data.jsTimerSampleCount
jsTimerResolutionMsnumberprobes.runtime_timing.data.jsTimerResolutionMs
eventLoopSampleCountnumberprobes.runtime_timing.data.eventLoopSampleCount
eventLoopP50Msnumberprobes.runtime_timing.data.eventLoopP50Ms
eventLoopP95Msnumberprobes.runtime_timing.data.eventLoopP95Ms
eventLoopMadMsnumberprobes.runtime_timing.data.eventLoopMadMs
bridgeRoundTripMsnumberprobes.runtime_timing.data.bridgeRoundTripMs
nativeClockSourcestringprobes.runtime_timing.data.nativeClockSource
nativeSampleCountnumberprobes.runtime_timing.data.nativeSampleCount
nativeTimerResolutionNsnumberprobes.runtime_timing.data.nativeTimerResolutionNs
nativeIntervalMedianNsnumberprobes.runtime_timing.data.nativeIntervalMedianNs
nativeIntervalP95Nsnumberprobes.runtime_timing.data.nativeIntervalP95Ns
nativeIntervalMadNsnumberprobes.runtime_timing.data.nativeIntervalMadNs
|
||
numeric_consistencyNumeric runtime consistencyCompare deterministic integer and floating-point behavior across JavaScript and native runtimes. |
Disabled by default; returns comparison aggregates rather than raw stable identifiers or a verdict. |
7 typed top-level fieldsintegerVectorMatchesbooleanprobes.numeric_consistency.data.integerVectorMatches
integerMismatchCountnumberprobes.numeric_consistency.data.integerMismatchCount
floatSampleCountnumberprobes.numeric_consistency.data.floatSampleCount
floatMismatchCountnumberprobes.numeric_consistency.data.floatMismatchCount
floatMaxAbsoluteDifferencenumberprobes.numeric_consistency.data.floatMaxAbsoluteDifference
signedZeroPreservedbooleanprobes.numeric_consistency.data.signedZeroPreserved
subnormalPreservedbooleanprobes.numeric_consistency.data.subnormalPreserved
|
Independent probe outcomes
| Outcome | Meaning | Backend treatment |
|---|---|---|
success | The probe returned an observation payload. | Validate schema and freshness before feature use. |
skipped | Configuration, consent, platform, or capability excluded the probe. | Keep separate from negative evidence. |
timeout | The configured deadline elapsed. | Monitor collection health, do not convert to a safe value. |
error | The 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.