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

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

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.2.tar.gz (19.0 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.2-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: n1_brightdata-0.2.2.tar.gz
  • Upload date:
  • Size: 19.0 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.2.tar.gz
Algorithm Hash digest
SHA256 65f91ac5599b0754f993e6684d60e00843ed2f3c9f7a58a3fad1473586ace773
MD5 c8cf7e18d959afefc4693a33792e0821
BLAKE2b-256 7e2eeb2369c7e9e80904bab5d27b1c6435c5a0bb28850c25ab15e1fa88b56a39

See more details on using hashes here.

Provenance

The following attestation bundles were made for n1_brightdata-0.2.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: n1_brightdata-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 17.2 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fa11484654dc3d0401156e817b2839699a921434eae2972ec0ef8ae9af6f0f9e
MD5 dcdceb25044be12946a1dc1807e3dffc
BLAKE2b-256 076587d8d7ffa56f38bc29b64a56b953de85c60b603f65b0115866809586086e

See more details on using hashes here.

Provenance

The following attestation bundles were made for n1_brightdata-0.2.2-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