keon/browser-control
A tiny, fast Rust CLI that drives a real browser over the Chrome DevTools Protocol — built for coding agents.
What it solves
browser-control provides a way for AI coding agents to interact with real web browsers without requiring a complex SDK, a long-running server, or a specific language framework. It solves the problem of brittle web selectors and the difficulty of giving LLMs "hands and eyes" to navigate the web by exposing browser capabilities as simple, shell-native commands.
How it works
It is a lightweight Rust CLI that communicates with browsers via the Chrome DevTools Protocol (CDP). Instead of relying solely on CSS selectors, it uses a snapshot command to generate stable element references (e.g., @e1, @e2) that an agent can use to perform actions like clicking or filling forms. It can drive local Chrome instances or remote sessions through various cloud providers (such as Browserbase or Steel) using the same set of commands.
Who it’s for
It is primarily designed for developers building AI coding agents that can already execute shell commands and need a reliable, debuggable way to control a browser for testing or automation.
Highlights
- Shell-native: Every capability is a subcommand that outputs text or JSON, making it easy to pipe and compose in a shell.
- LLM-friendly References: Uses stable element handles (
@e1,@e2) from snapshots to avoid brittle CSS selectors. - Provider Agnostic: Works with local Chrome or remote cloud browsers via CDP.
- Observability: Includes a background daemon for event/network/console tracking and automatically generates compact traces upon command failure for agent self-diagnosis.
- Raw CDP Access: Provides
evalandcdpcommands as escape hatches for any action not covered by the helper surface.
Related
- Project
- Project
- Project
- Project
- Project