n1-brightdata
An autonomous web research agent powered by Yutori n1 and Bright Data Browser API
Give it a task. It browses the web. It brings back answers.
You give it a task
│
▼
Opens Bright Data Scraping Browser (real Chromium, residential IPs)
│
▼
Takes a screenshot → sends to Yutori n1 model
│
▼
n1 reasons: click here, type this, scroll there...
│
▼
Repeats until confident enough to answer
│
▼
Returns result to your terminal
The agent uses Bright Data's Scraping Browser for undetectable, scalable browsing and Yutori's n1 reasoning model to make decisions — all controlled from a single CLI command.
Before you begin, you'll need accounts and credentials from two services:
| Service | What you need | Where to get it |
|---|---|---|
| Bright Data | Scraping Browser CDP URL | brightdata.com → Scraping Browser zone |
| Yutori | API Key | yutori.com |
1. Clone the repository
git clone https://github.com/meirk-brd/n1-brightdata.git
cd n1-brightdata
2. (Recommended) Create a virtual environment
python -m venv .venv
source .venv/bin/activate # macOS / Linux
# .venv\Scripts\activate # Windows
3. Install the CLI
pip install -e .
This installs the n1-brightdata command globally in your environment. Because it's editable (-e), any local code changes take effect immediately — no reinstall needed.
4. Install the browser
playwright install chromium
Option A — Interactive Setup (Recommended)
Run the built-in setup wizard. It walks you through every credential, saves them to .env, installs Playwright, and optionally tests your connections:
n1-brightdata setup
Option B — Manual credentials.json
Create the file at ~/.n1-brightdata/credentials.json:
mkdir -p ~/.n1-brightdata
cat > ~/.n1-brightdata/credentials.json << 'EOF'
{
"YUTORI_API_KEY": "your_yutori_api_key_here",
"BRD_CDP_URL": "wss://brd-customer-XXXXXX-zone-scraping_browser:PASSWORD@brd.superproxy.io:9222"
}
EOF
chmod 600 ~/.n1-brightdata/credentials.json
Optional Tuning (project-level)
Tuning parameters stay in a local .env file or shell environment — they are not stored in credentials.json:
# .env (in your project directory, or export in your shell)
N1_SCREENSHOT_FORMAT=jpeg # jpeg | png
N1_JPEG_QUALITY=60 # 1–100
N1_SCREENSHOT_TIMEOUT_MS=90000 # screenshot timeout in milliseconds
N1_MAX_REQUEST_BYTES=9500000 # trim old screenshots if payload exceeds this
N1_KEEP_RECENT_SCREENSHOTS=6 # how many screenshots to keep in context
N1_ENABLE_SUFFICIENCY_CHECK=true # stop early when the agent is confident
N1_STOP_CONFIDENCE_THRESHOLD=0.78 # confidence threshold for early stopping (0–1)
Configuration Precedence
CLI flags > Shell env vars > .env file (tuning) > ~/.n1-brightdata/credentials.json
Basic
n1-brightdata "What is the current price of Bitcoin?"
With a Starting URL
n1-brightdata "Find the top 5 trending repositories" --url "https://github.com/trending"
Limit the Number of Steps
n1-brightdata "Summarize today's top news" --url "https://news.ycombinator.com" --max-steps 15
Full Command Reference
n1-brightdata [TASK] [OPTIONS]
| Option | Type | Default | Description |
|---|---|---|---|
TASK |
string | (required) | The task for the agent to complete |
--url |
string | https://www.google.com |
Starting URL before the agent loop begins |
--max-steps |
integer | 30 |
Maximum number of browser actions (min: 1) |
--screenshot-format |
jpeg | png |
jpeg |
Format of screenshots sent to the model |
--jpeg-quality |
integer | 60 |
JPEG quality when format is jpeg (1–100) |
--screenshot-timeout-ms |
integer | 90000 |
Screenshot timeout in milliseconds |
--show-inspect-url |
flag | false |
Print a DevTools inspect URL for the live session |
--yutori-api-key |
string | (env) | Yutori API key (overrides env / .env) |
--brd-cdp-url |
string | (env) | Bright Data CDP WebSocket URL (overrides env / .env) |
--env-file |
path | ./.env |
Custom path to a .env credentials file |
Help
n1-brightdata --help
n1-brightdata run --help
n1-brightdata setup --help
# Research a topic
n1-brightdata "What are the key differences between GPT-4o and Claude 3.5 Sonnet?"
# Scrape structured data
n1-brightdata "List the top 10 products on Product Hunt today" --url "https://www.producthunt.com"
# Monitor a specific page
n1-brightdata "Is there a sale on the MacBook Pro 16-inch?" \
--url "https://www.apple.com/shop/buy-mac/macbook-pro" \
--max-steps 10
# High-quality screenshots for visual tasks
n1-brightdata "Describe the layout of the Airbnb homepage" \
--url "https://www.airbnb.com" \
--screenshot-format png
# Use a different .env for multiple accounts
n1-brightdata "Check order status" --env-file ~/.config/n1/work.env
n1-brightdata/
├── src/
│ └── n1_brightdata/
│ ├── __init__.py # Package exports: AgentConfig, build_agent_config, run_agent
│ ├── agent.py # Core agentic loop, browser tools, n1 model integration
│ ├── cli.py # Click CLI: `run` and `setup` commands
│ └── console.py # Rich terminal UI: banners, step display, progress
├── pyproject.toml # Project metadata, dependencies, CLI entrypoint
└── .env # Your credentials (not committed)
| Action | Description |
|---|---|
left_click |
Click at coordinates |
double_click |
Double-click at coordinates |
triple_click |
Triple-click (select all text in field) |
right_click |
Right-click context menu |
hover |
Mouse hover at coordinates |
drag |
Drag from one coordinate to another |
scroll |
Scroll up / down / left / right |
type |
Type text (with optional clear & Enter) |
key_press |
Press key combinations (e.g. Ctrl+F) |
goto_url |
Navigate to a URL |
go_back |
Browser back button |
refresh |
Reload the current page |
wait |
Pause for 800ms |
| Package | Purpose |
|---|---|
yutori >= 0.4.0 |
Yutori SDK for n1 model access |
openai |
OpenAI-compatible API client |
playwright |
Chromium browser automation |
click |
CLI framework |
python-dotenv |
.env file loading |
rich >= 13.0 |
Beautiful terminal output |
Metadata
Release files for n1-brightdata 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| n1_brightdata-0.2.2.tar.gz | 19.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| n1_brightdata-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.2 kB
Release files / n1_brightdata-0.2.2.tar.gz
| Download URL | n1_brightdata-0.2.2.tar.gz |
|---|---|
| Size | 19.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
65f91ac5599b0754f993e6684d60e00843ed2f3c9f7a58a3fad1473586ace773
|
|
BLAKE2b-256 checksum How to use checksums |
7e2eeb2369c7e9e80904bab5d27b1c6435c5a0bb28850c25ab15e1fa88b56a39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 24, 2026.
Transparency logRelease files / n1_brightdata-0.2.2-py3-none-any.whl
| Download URL | n1_brightdata-0.2.2-py3-none-any.whl |
|---|---|
| Size | 17.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fa11484654dc3d0401156e817b2839699a921434eae2972ec0ef8ae9af6f0f9e
|
|
BLAKE2b-256 checksum How to use checksums |
076587d8d7ffa56f38bc29b64a56b953de85c60b603f65b0115866809586086e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 24, 2026.
Transparency log