Rustwright provides a Playwright-compatible API that drives Chromium from a native Rust CDP engine, with Python and Node bindings. It runs in-process, no Node driver subprocess, and targets Chromium only.
What it is
Rustwright is a browser automation library for Python and Node.js that keeps the Playwright API but drives Chromium from a native Rust engine speaking raw Chrome DevTools Protocol. It runs in-process with no driver subprocess and interoperates with Playwright.
How it works
One Rust core acts as an async CDP client built on Tokio, talking directly to Chromium. Python uses PyO3 bindings and Node uses napi-rs bindings to expose the engine in-process.
Getting started
Python
pip install rustwright
python -m rustwright install chromium
Node.js (experimental)
npm install rustwright
The Node binding drives Chromium; point at a Chromium binary using environment variables (RUSTWRIGHT_CHROMIUM, CHROME, or CHROMIUM). Build from source by:
git clone <repo> && cd rustwright/node && npm install && npm run build
Recent releases
- None
Traction
701 stars, 7 open issues, 40 forks (as of the provided data).
Limitations
- Chromium-only. Firefox and WebKit are not supported.
- Node bindings are early; a subset of the surface is bridged (launch, newPage, goto, click, fill, title, textContent, evaluate, screenshot, close); contexts, routing, tracing, and locators are Python-only for now.
- Async concurrency details and parity coverage are described in the README (e.g., 515 of 536 methods in Python sync API; 488 of 536 in async).






