BUA lets you control real browsers by simply describing what to do
Automate browsers with full control using natural language. BUA is open-source, powered by real browsers, not simulations.
How BUA navigates the web on its own
How BUA navigates the web on its own
BUA in action: automating browser interactions with real-time control
Comparing Execution Models: BUA vs. OpenAI CUA
Comparing Execution Models: BUA vs. OpenAI CUA
| Feature | BUA (Notte) | CUA (OpenAI) |
|---|---|---|
| Open Source | Yes | No |
| Uses a real browser | Yes (via Playwright or remote envs) | No (simulated environment) |
| Customizable | Fully extensible (plug your own browser or logic) | Closed |
| Execution control | Full (you execute each action locally or remotely) | None (server-side execution) |
| Data inputs | DOM + screenshot from real browser | Simulated screen/context |
| CLI & Developer Tooling | Yes — run via python -m bua | No CLI, API-only |
| Cost | Free (self-hosted) or low-cost via Notte infra | Usage-based pricing |
| Debugging & Auditing | Full traceability of decisions | Opaque — model decisions are hidden |
| Reproducibility | Yes — runs identically in local/remote envs | No — behavior depends on OpenAI servers |
| Privacy | You control the data, especially with local browsers | All data flows through OpenAI's backend |
Open Source
Uses a real browser
Customizable
Execution control
Data inputs
CLI & Developer Tooling
Cost
Debugging & Auditing
Reproducibility
Privacy
Start Automating Browsers with BUA in Minutes
Start Automating Browsers with BUA in Minutes
Automate real browsers with natural language — no complex setup required. Follow these three steps to get started.
1. Installation
pip install bua
2. Run BUA
python -m bua --model bua --computer local-playwright
This launches BUA with the local Playwright browser driver.
3. Use in Code
from bua import Agent, Browser
browser = Browser.create("local-playwright")
agent = Agent.create("bua")
agent.run("Go to example.com and click on More information")
Configuration Options
Browser Environments
local-playwright: Run locally with Playwrightnotte: Use Notte's hosted infrastructurecustom: Implement your own browser driver
Advanced Usage
- Custom functions with
@agent.register_function - Session persistence with
agent.save_session() - Headless mode with
--headlessflag
Pro Tip: Use --debug flag to see detailed logs and browser actions for easier troubleshooting.
Example: Automating a Web Search
# Import BUA components
from bua import Agent, Browser
# Initialize browser and agent
browser = Browser.create("local-playwright")
agent = Agent.create("bua")
# Run a complex task with natural language
response = agent.run("""
1. Go to google.com
2. Search for 'python browser automation'
3. Find and click on a result about Playwright
4. Extract the main heading and first paragraph
"""
# Print the extracted content
print(f"Extracted content: { response }")
What happens: BUA will automatically navigate to Google, perform the search, click on a relevant result, and extract the requested content — all with a single natural language command.