Component

WADL & Tetra

The browser infrastructure layer. WADL provisions browsers via Unikraft, Tetra runs inside each microVM as a CDP proxy between the AI agent and Chromium.

Browser Lifecycle

EVA asks WADL for a browser → WADL provisions a microVM via Unikraft → EVA connects directly to Tetra over WSS.

MicroVMPOST /v1/tetra/sessionsPOST /instancesbootCDPDirect WSS (CDP)wss://{fqdn} — not through WADLEVAAI AgentWADLapi.agentql.comUnikraftc7i.metalTetraCDP Proxy (port 8080)Chromiumport 9222

WADL — Browser Provisioning

FrameworkFastAPI (Python)
Public URLapi.agentql.com
RoleAPI gateway + Tetra provisioning

Provisioning Flow

POST /v1/tetra/sessions (X-API-Key, BROWSER permission)

→ Generate session_id: "tf-{uuid4}"

→ POST {unikraft_endpoint}/instances

→ Unikraft boots microVM on bare metal EC2 (c7i.metal)

→ Poll /pages until browser is ready

→ Return { session_id, cdp_url: "wss://{fqdn}" }

BareMetalResolver (default)

Unikraft on bare metal EC2 c7i.metal instances. Direct WSS connection from client to microVM.

AWSResolver

AWS-hosted Unikraft behind a single load balancer. Activated via USE_TETRA_AWS_INFRA.

CombinedResolver

AWS primary with bare metal fallback. Activated via USE_COMBINED_TETRA_INFRA.

Tetra — Remote Browser

LanguageTypeScript / Node.js
CoreTetraBrowser (~900 lines)
Model1 microVM = 1 browser = 1 user
ConnectionDirect WSS (not through WADL)

CDP Proxy

Sits between external clients and internal Chromium. Intercepts CDP messages to inject fingerprint scripts, UA spoofing, and recording hooks.

Browser Profiles

"light" (headless Chromium, fast) and "stealth" (headful Chrome with anti-detection). Stealth uses randomized fingerprints across 9 injection scripts.

Fingerprint Randomization

Random Chrome version (110–135), platform-appropriate UA, Client Hints, WebGL, plugins, codecs, language — 9 scripts injected per page via CDP.

Lifecycle

Unikraft boots VM → Tetra starts HTTP server → launches Chromium → proxies CDP → last client disconnects → process.exit(0) → VM deleted.

Code Pointers

WADL

agentqlserver/browser/tetra.pycreate_browser_session() entry point
agentqlserver/browser/resolversBareMetalResolver, AWSResolver, CombinedResolver

Tetra

tetra/src/tetra.tsTetraBrowser — main CDP proxy class
tetra/src/browser-config.tsFingerprint randomization
tetra/src/init-scripts9 fingerprint spoofing JS files
tetra/src/http-proxy.tsLocal proxy-chain for browser traffic