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.
WADL — Browser 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
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.