webctl
Browser automation for AI agents and humans, built on the command line.
webctl start webctl navigate " https://google.com " webctl type ' role=combobox name~="Search" ' " best restaurants nearby " --submit webctl snapshot --interactive-only --limit 20 webctl stop --daemon
Why CLI Instead of MCP?
MCP browser tools have a fundamental problem: the server controls what enters your context. With Playwright MCP, every response includes the full accessibility tree plus console messages (default: "info" level). After a few page queries, your context is full.
CLI flips this around: you control what enters context.
# Filter before context webctl snapshot --interactive-only --limit 30 # Only buttons, links, inputs webctl snapshot --within " role=main " # Skip nav, footer, ads # Pipe through Unix tools webctl snapshot | grep -i " submit " # Find specific elements webctl --format jsonl snapshot | jq ' .data.role ' # Extract with jq webctl snapshot | head -50 # Truncate output
Beyond filtering, CLI gives you:
Capability CLI MCP Filter output Built-in flags + grep/jq/head Server decides Debug Run same command as agent Opaque Cache webctl snapshot > cache.txt Every call hits server Script Save to .sh, version control Ephemeral Timeout timeout 30 webctl ... Internal only Parallelize parallel , xargs , & Server-dependent Human takeover Same commands Different interface
Quick Start
... continue reading