Rustwright – a Rust Rewrite of Playwright Skyvern AI released Rustwright, a Rust rewrite of the Playwright browser automation library that is 2.55× faster and uses 70% less memory by eliminating the Node.js driver subprocess. The open-source tool supports Python and Node.js with a native Rust CDP engine, currently limited to Chromium, and is funded through Skyvern's paid Browser Sessions service. A Rust rewrite of Playwright , a popular browser automation library. Rustwright is interoperable with Playwright but runs on an in-process Rust CDP engine — 2.55× faster and no Node driver , with no Playwright automation fingerprint. Alpha; Chromium-only. 70% less memory /Skyvern-AI/rustwright/blob/main/BENCHMARK.md client-memory-form-fill-diagnostic Rustwright is a browser automation library for Python and Node.js that keeps the Playwright API you already know but drives Chromium from a native Rust engine speaking raw Chrome DevTools Protocol https://chromedevtools.github.io/devtools-protocol/ — no driver subprocess in the path. playwright-python: your code ──pipe──► Node driver ──CDP──► Chromium rustwright: your code ────────── raw CDP ──────────► Chromium Rustwright is interoperable with Playwright — install it, change one import, and your existing code runs on the Rust engine. Python pip install rustwright python -m rustwright install chromium python - from playwright.sync api import sync playwright + from rustwright.sync api import sync playwright with sync playwright as p: browser = p.chromium.launch headless=True page = browser.new page page.goto "https://example.com" print page.title browser.close Node.js experimental Install from npm: npm install rustwright The Node binding drives an existing Chromium/Chrome — point Rustwright at it with RUSTWRIGHT CHROMIUM , CHROME , or CHROMIUM . Prefer to build from source? git clone the repo and run npm install && npm run build in node/ . js - import { chromium } from 'playwright'; + import { chromium } from 'rustwright'; const browser = await chromium.launch ; const page = await browser.newPage ; await page.goto 'https://example.com' ; console.log await page.title ; await browser.close ; Only a subset of the API surface is bridged — see Limitations limitations . No Node driver subprocess. playwright-python launches and pipes to a bundled Node driver. Rustwright's engine is native — the browser-control code runs in-process. Raw CDP, in Rust. A from-scratch async CDP client — not a wrapper around another automation library. No Playwright automation fingerprint. The driver never loads, so its signatures never appear. See Automation detection automation-detection . Trusted input by default. Clicks and typing go through real CDP input events Input.dispatchMouseEvent , not synthetic element.click DOM calls. Untrusted DOM shortcuts are opt-in only. Cross-origin iframes OOPIF . Auto-attaches out-of-process iframe targets with flattened CDP sessions and routes frame locator across origins. One engine, two languages. The same Rust core backs the Python and Node bindings. One Rust core — an async CDP client built on Tokio WebSocket, with opt-in Unix-pipe transport — talks to Chromium directly, and thin PyO3 https://pyo3.rs Python and napi-rs https://napi.rs Node bindings expose it in-process. The two-line diagram above is the entire architecture. Already have a Chromium/Chrome binary? Point Rustwright at it with RUSTWRIGHT CHROMIUM , CHROME , or CHROMIUM . Rustwright drives browsers — but you still need somewhere to run them. Skyvern the team behind Rustwright offers hosted Browser Sessions as a paid service that funds this project. Features: Persistent cloud browsers — logins, cookies, and tab state carry across runs Configurable timeouts — 5 minutes to 24 hours 60 min default Proxies in 21 countries Live view — watch and interact with the session in the Skyvern Cloud UI Each session returns a browser address CDP endpoint that Rustwright connects to like any remote Chromium sessions bill while open . Get started: - Make an account at app.skyvern.com https://app.skyvern.com - Grab your API key from Settings pip install skyvern python import asyncio from rustwright.async api import async playwright from skyvern import Skyvern async def main : session = await Skyvern api key="