VoidCrawl
CDP browser automation for Python — a Rust-native Chrome DevTools Protocol client exposed to Python via PyO3.
void_crawl replaces Playwright/Selenium with a permissively-licensed (Apache-2.0) stack for rendering JavaScript-heavy pages. Built on chromiumoxide with a shared Tokio runtime.
Used by Yosoi — an AI-powered selector discovery tool for resilient web scraping.
Requirements
- Rust ≥ 1.86 (edition 2024)
- Python ≥ 3.10
- Chrome/Chromium installed on the system
- maturin ≥ 1.7 (
cargo install maturin)
Installation
# Build and install into your venv
# Or manually:
Quick Start
BrowserPool (recommended)
Tabs are recycled, not closed — near-instant reuse across requests.
await
BrowserSession (low-level)
= await
await
MCP server for Claude Code
voidcrawl-mcp is a stdio MCP server that exposes the full pool + session API as tools any MCP-speaking agent can call. Point Claude Code at it and the agent can fetch, screenshot, click, type, eval JS, detect captchas, and drive multi-step sessions — all via the same stealth-patched Chrome pool.
Install (pick one):
# Claude Code user — binary only, isolated venv:
# or
# Python lib + MCP server together:
# From crates.io (builds from source):
# From git HEAD (builds from source):
Wire it into Claude Code via .mcp.json:
Optional: pin the whole server to a warm Chrome profile (so every session inherits its cookies/logins):
# or: VOIDCRAWL_PROFILE="Default" voidcrawl-mcp
A ready-made Claude Code skill at .claude/skills/voidcrawl/SKILL.md teaches the agent when to pick voidcrawl over manual browsing, the click_visual_coords recipe for React forms, and how to react to typed CaptchaDetected errors. Claude Code picks it up automatically.
See docs/mcp-server.md for the full tool list and docs/profiles.md for profile leasing.
Docker
Pre-built multi-arch images (linux/amd64, linux/arm64) are published to GHCR on every push to main and every tagged release:
Or via compose:
Available tags: headless-latest, headless-<version>, headless-<sha>, and the same set prefixed headful- for GPU + VNC (linux/amd64 only). See the Docker & VNC guide and the Docker Config reference for every runtime knob.
Testing
# Rust integration tests (serial — Chrome singleton lock)
# Python integration tests (requires built extension + Chrome)
Documentation
Contact
License
Apache-2.0