Skip to main content

CLI browser agent using n1 with Bright Data Scraping Browser.

Project description


image     image

n1-brightdata

An autonomous web research agent powered by Yutori n1 and Bright Data Scraping Browser

Give it a task. It browses the web. It brings back answers.


Python License Bright Data Yutori


How It Works

  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.


Prerequisites

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

Installation

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

Configuration

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

Usage

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
--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

Examples

# 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

Project Structure

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)

Browser Tools

The agent can perform these actions autonomously:

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

Dependencies

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

License

MIT © Bright Data


Built with Bright Data Scraping Browser + Yutori n1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

n1_brightdata-0.2.1.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

n1_brightdata-0.2.1-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file n1_brightdata-0.2.1.tar.gz.

File metadata

  • Download URL: n1_brightdata-0.2.1.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for n1_brightdata-0.2.1.tar.gz
Algorithm Hash digest
SHA256 24cfb6fb4609e84f99a46481447059140fd9b14369bde1f0c4edf0c5219af76e
MD5 4c78e4ce3590fc3b0b3013405f24c1a6
BLAKE2b-256 6e9b5d28615427833ef80a1e13cafa85effdccbedca63e748de03974144830fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for n1_brightdata-0.2.1.tar.gz:

Publisher: publish.yml on brightdata/n1-brightdata

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file n1_brightdata-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: n1_brightdata-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for n1_brightdata-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4c4fdfd6e3d81748f492971c5909222658dc5a35488be231f6043c25bb1bcad3
MD5 909ce99131b1cbe3f42d1ba70a8df2c1
BLAKE2b-256 127900bc740b5dfaf3d413f8ac0b68a582058332831c970d5efcf4f7f09a7da0

See more details on using hashes here.

Provenance

The following attestation bundles were made for n1_brightdata-0.2.1-py3-none-any.whl:

Publisher: publish.yml on brightdata/n1-brightdata

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page