This is not a set of click primitives — you state the outcome and an agent works out the steps, which is why the transport is a long-lived daemon and why the step cap matters. Pointing it at your own Chrome profile is what makes tasks behind a login possible at all.
Browser-use wrapped as a server. You describe the outcome and a browser agent, driven by an LLM you configure, navigates, fills forms, clicks and extracts what you asked for. It runs as a persistent HTTP daemon rather than over stdio, because a browser task takes minutes and stdio connections drop mid-run.
- A browser task stated in plain English and carried out end to end — typically a minute or two of navigating, clicking and reading
- A deep research run that fans out across several searches and synthesises the result, rather than returning a list of links
- A live web UI on the daemon's own port showing the task list, progress, logs and server health, plus a dashboard with task history and skills
- Your own browser used when it matters: a persistent Chrome profile so logins and cookies survive, or a connection to a Chrome you already have open over its debugging port
- The model behind the agent chosen by you — Anthropic, OpenAI, Google, Azure, Groq, DeepSeek, Cerebras, Ollama, Bedrock, OpenRouter and others — with vision on by default and a step ceiling per task
- A skills system in beta, off unless you enable it, which records what worked and replays it
Python with uv, and Chromium installed through Playwright. An API key for whichever LLM drives the agent — this is the real cost, since every step is a model call; the key goes in the environment rather than the config file. The daemon binds to 127.0.0.1 on port 8383 and clients connect to /mcp over streamable HTTP, with mcp-remote bridging clients that only speak stdio. Settings live in a config file under your home directory, with environment variables taking precedence over it. Defaults worth knowing: the browser runs headless, a task is capped at 20 steps, and a research run at 5 searches. Exposing it beyond localhost means setting an auth token.
Build from source — clone the repository and build it, then point your client at the binary
