DRIVERLESS CHROME DEVTOOLS PROTOCOL ENGINE

No Node.js tax.
95%+ fewer tokens.
Single Rust binary.

Official Playwright in Python or Go spawns a 150MB+ Node.js subprocess that dumps 45,000 tokens of raw div-soup into your LLM. cdpx compiles to a 1.15MB static Rust binary that drives Chromium over raw CDP WebSockets, compressing dynamic web state into atomic @e1..@eN action handles.

• x86_64 Windows / Linux / macOS • Zero npm / pip subprocesses • stdio MCP 2024-11-05
cdpx session emulator • stdio CDP CONNECTED (127.0.0.1)
$ cdpx open https://github.com/login
Launching browser and connecting CDP session...
[Page: Sign in to GitHub • GitHub] (url: https://github.com/login)
------------------------------------------------------------
@e1: input "Username or email address" (x: 631, y: 207)
@e2: input "Password" (x: 631, y: 288)
@e3: link "Forgot password?" (x: 752, y: 254)
@e4: input "commit" (x: 631, y: 344) [value: "Sign in"]
@e5: link "Create an account" (x: 682, y: 403)
@e6: button "Manage cookies" (x: 681, y: 679)
√ Page settled (120 tokens vs 38,400 tokens raw HTML)
Try Commands:
1.15 MB
BINARY SIZE (RUST)
21.8 MB
IDLE RAM (VS 135MB PLAYWRIGHT)
< 140 ms
COLD LAUNCH TO CDP ACK
95%+
TOKEN REDUCTION RATIO
INTERACTIVE TOKEN BURN CALCULATOR

The Real Cost of DOM Bloat in Production

Every turn in an agent loop re-sends the page state. Calculate your exact monthly token invoice comparing traditional Playwright DOM dumps against cdpx Semantic Action-State Projections.

CALCULATION ENGINE: CLAUDE 3.5 SONNET ($3.00 / MTOK INPUT) SAVINGS: 98.4%
Playwright Monthly Token Bill
$12,825
cdpx SASP Monthly Token Bill
$74
Net Annual Dollars Saved
$153,012 / yr
TWO-PHASE ACTION ENGINE

Zero Ghost Clicks. Zero Hydration Races.

SPAs built with React 19, Next.js, and Remix constantly fail under generic tools because click events fire before client-side hydration or during layout shifts. cdpx enforces a strict two-phase execution cycle.

01

In-Page Scroll & Geometrical Hit-Test

The target handle (e.g. @e4) is resolved inside page context via non-enumerable registry. scrollIntoView aligns the element, re-computes its live bounding box, and verifies visibility with elementFromPoint.

02

Trusted Hardware CDP Event Sequence

Emits native Input.dispatchMouseEvent packets (mouseMoved → 50ms pause → mousePressedmouseReleased) directly over WebSocket. Triggers synthetic framework listeners identical to a real user.

03

MutationObserver Settle Gate

Before returning to the LLM, cdpx awaits document.readyState === 'complete' and listens for DOM mutations to settle within a 250ms quiet window. Guarantees the agent receives post-click reality.

SYSTEM BLUEPRINT

Precision Spec Sheet Architecture

cdpx replaces the heavy multi-tier driver stack with a single, statically linked binary communicating directly with Chromium over standard loopback CDP.

P-01: Native Rust Core Tokio + Clap + JSON-RPC 2.0 P-02: Direct CDP Transport tokio-tungstenite WebSocket P-03: Injected SASP Walker Viewport Culling + Occlusion P-04: Trusted Action Engine Scroll + MouseEvent + Settle Chromium / Chrome / Edge Engine (127.0.0.1 Loopback Debugger Port)
PART COMPONENT SPECIFICATION
P-01 CLI & MCP Dispatcher Pure Rust 2024 edition, Clap v4, stdio JSON-RPC 2.0 protocol engine
P-02 CDP Transport Bus Asynchronous WebSocket client over Target.attachToTarget session domain
P-03 SASP Tree Walker Hit-test occlusion culling (elementFromPoint), non-enumerable registry isolation
P-04 Action Engine In-page scroll re-measurement + trusted CDP Input dispatch + 250ms mutation settle
P-05 Process Cleanup Auto-kills full process tree (GPU + renderers) on Windows, macOS, Linux via taskkill/kill
SIDE-BY-SIDE AUTOPSY

Raw HTML Dump vs Semantic Action-State Projection

Comparing what an LLM actually receives. Notice the complete elimination of nested vector clutter, analytics tags, and invisible wrappers.

Traditional Playwright Dump 42,850 TOKENS

Raw HTML with styling classes, inline SVGs, script tags, and offscreen nodes:

<div class="Box-sc-g0xbh4-0 bnbUuV" data-testid="auth-root">
  <div class="Subhead">
    <h2 class="Subhead-heading">Sign in to GitHub</h2>
  </div>
  <form action="/session" accept-charset="UTF-8" method="post">
    <input type="hidden" name="authenticity_token" value="v9s8..." />
    <div class="auth-form-body mt-3">
      <label for="login_field">Username or email address</label>
      <input type="text" name="login" id="login_field" class="form-control" autocorrect="off" autocapitalize="off" autocomplete="username" autofocus="autofocus" required="required" aria-describedby="login-error" />
      <div class="position-relative">
        <label for="password">Password</label>
        <a class="label-link" href="/password_reset">Forgot password?</a>
        <input type="password" name="password" id="password" class="form-control" autocomplete="current-password" required="required" />
        <input type="submit" name="commit" value="Sign in" class="btn btn-primary" />
      </div>
    </div>
  </form>
  ... [1,842 lines of inline SVG paths, script tags, analytics beacons, hidden tracking pixels] ...
</div>
cdpx Semantic Projection (SASP) 120 TOKENS

Zero noise. Exactly what the LLM needs to make a deterministic decision:

[Page: Sign in to GitHub • GitHub] (url: https://github.com/login)
------------------------------------------------------------
@e1: input "Username or email address" (x: 631, y: 207)
@e2: input "Password" (x: 631, y: 288)
@e3: link "Forgot password?" (x: 752, y: 254)
@e4: input "commit" (x: 631, y: 344) [value: "Sign in"]
@e5: link "Create an account" (x: 682, y: 403)
@e6: link "Terms" (x: 296, y: 679)
@e7: link "Privacy" (x: 362, y: 679)
@e8: link "Docs" (x: 425, y: 679)
@e9: link "Contact GitHub Support" (x: 534, y: 679)
@e10: button "Manage cookies" (x: 681, y: 679)
@e11: button "Do not share my personal information" (x: 873, y: 679)

// Agent command: type @e1 "user" -> type @e2 "pass" -> click @e4
REAL-WORLD VERIFICATION

20 Global Sites. Atomic Verification.

Tested live on Windows 11 with headless Chrome across top production web applications. 100% clean process exits with zero memory leaks.

TARGET URL STATUS INTERACTIVE ELEMENTS TOKEN ESTIMATE LATENCY
Wikipedia en.wikipedia.org √ 100% PASS 32 elements ~451 tokens 4.61s
GitHub Login github.com/login √ 100% PASS 11 elements ~120 tokens 2.96s
DuckDuckGo duckduckgo.com √ 100% PASS 11 elements ~140 tokens 3.73s
Hacker News news.ycombinator.com √ 100% PASS 77 elements ~870 tokens 2.37s
BBC News bbc.com √ 100% PASS 45 elements ~580 tokens 3.12s
Stripe stripe.com √ 100% PASS 24 elements ~310 tokens 4.05s
Vercel vercel.com √ 100% PASS 19 elements ~260 tokens 2.84s
Python.org python.org √ 100% PASS 38 elements ~490 tokens 3.20s
Docs.rs docs.rs √ 100% PASS 12 elements ~160 tokens 2.15s
Hugging Face huggingface.co √ 100% PASS 28 elements ~380 tokens 3.45s
PATNA ZERO-RUPEE SYSTEMS LAB

The Author & Philosophy

I am Akash Priyadarshi, a self-taught systems and AI-augmented developer building out of Patna, Bihar, India.

I operate under a strict ₹0 budget constraint. I have no venture subsidies, no cloud credits to burn, and no patience for bloated developer tools. When Python and Node.js tools leak 500MB of RAM and choke LLMs with 40,000 tokens of useless DOM tags, I build the native tool that replaces them.

cdpx is part of a growing suite of high-craft, token-compressed systems designed to built for solo engineers who ship complete systems.

THE COMPANION ECOSYSTEM