SubstrateState in as little as 5 milliseconds. No browser extension, no user gesture, and no application-side code change is required.
How CDP Connection Works
Whenaxon-daemon detects a new process, the V8 probe checks for an accessible CDP endpoint by scanning:
- Command-line arguments — looking for
--remote-debugging-port=NNNN - Process name patterns —
chrome.exe,msedge.exe,electron.exe,code.exe,slack.exe, and others - Open port scan — checking port 9222 and common Electron debug ports
Enabling CDP on Chrome
Chrome does not expose a CDP endpoint by default. Launch it with the--remote-debugging-port flag to enable the V8 probe:
- Windows
- macOS
- Linux
Close all existing Chrome windows before launching with
--remote-debugging-port. Chrome reuses a single browser process — if a session is already running without the flag, the new flag will have no effect until all Chrome windows are closed and the process fully exits.axon.toml:
Two-Tier Extraction
The V8 probe uses two extraction methods in order of preference. The fast-path handles the vast majority of polls; the heap snapshot fallback fires only when the fast-path is unavailable.1
Tier 1 — ASO Fast-Path (5–50ms)
NSP injects a JavaScript snippet (The ASO result includes confidence scores of 0.95–0.99 for known applications.
__axon_aso_snapshot) into the live tab using CDP Runtime.evaluate. This script locates the application’s data layer directly in the V8 heap and returns it as a serializable JSON object. The probe polls for the result up to 40 times within a 600ms window.2
Tier 2 — Heap Snapshot Fallback (~47s)
When the ASO script returns null — typically on first contact with a new app or after a major navigation — the probe takes a full V8 heap snapshot via After the cold probe succeeds, the ASO script is installed permanently in the tab. Every subsequent poll uses Tier 1 at full speed.
CDP HeapProfiler.takeHeapSnapshot.Supported Applications
The V8 probe covers all Chrome tabs and Electron applications. The following apps have validated entries in the app signature database:Accuracy for all V8-covered applications is >99% once the ASO fast-path is installed. This includes Electron apps that ship obfuscated JavaScript — the heap snapshot fallback recovers semantic labels through LLM enrichment during the cold probe.
SubstrateState and probe_metadata
Every V8 state capture includes aprobe_metadata block that reports which extraction tier was used and the latency breakdown:
probe_tier field takes one of two values:
Action Execution
V8 actions are executed by injecting a typed JavaScript call into the running tab via CDP:click, type, and navigate are dispatched using the Input and Page CDP domains directly — no JavaScript injection is required for those.
Python SDK Example
Can I probe multiple Chrome tabs simultaneously?
Can I probe multiple Chrome tabs simultaneously?
Yes. Each tab is treated as an independent substrate with its own
app_id. NSP maintains a separate probe anchor and poll loop per tab. Electron apps with multiple windows are handled the same way.Does the V8 probe work with headless Chrome?
Does the V8 probe work with headless Chrome?
Yes. Headless Chrome launched with
--remote-debugging-port exposes the same CDP endpoint. Pass --headless=new along with --remote-debugging-port=9222 for full compatibility.