Show HN: Webctl – Browser automation for agents based on CLI instead of MCP

https://news.ycombinator.com/rss Hits: 16
Summary

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 pip install webctl # Requires Python 3.11+ webctl setup # Downloads Chromium (~150MB) Verify it works: webctl start webctl navigate " https://example.com " webctl snapshot --interactive-only webctl stop --daemon Install from source git clone https://github.com/cosinusalpha/webctl cd webctl uv sync && uv run webctl setup Linux system dependencies playwright install-deps chromium # Or manually: sudo apt-get install libnss3 libatk1.0-0 libatk-bridge2.0-0 ... Core Concepts Sessions Browser stays open across commands. Cookies persist to disk. webctl start # Visible browser webctl start --mode unattended #...

First seen: 2026-01-14 21:11

Last seen: 2026-01-15 12:16