Skip to main content

AI-powered autonomous browser agent for production website monitoring and automation

Project description

🏔️ Yeti Agent

Autonomous AI Browser Agent for Production

PyPI Python License GitHub Stars

AI-powered browser automation that monitors, tests, and automates production websites. Built in Nepal 🇳🇵 — Used worldwide.

Landing Page · PyPI · GitHub · Issues


Install

# One-line install (Linux / macOS / Windows via Git Bash)
curl -fsSL https://nikegunn.github.io/yeti-agent/install.sh | bash

# Or via pip / uv
pip install yeti-agent
uv add yeti-agent

Quick Start

from browser_use import Agent, ChatOpenAI

agent = Agent(
    task="Go to HackerNews and find the top 3 AI stories",
    llm=ChatOpenAI(model="gpt-4o"),
)
result = agent.run_sync()
print(result.final_result())

That's it. Three lines to a running agent.

LLM Providers

Yeti Agent works with 8+ LLM providers out of the box:

from browser_use import ChatOpenAI       # OpenAI (gpt-4o, o3, gpt-5)
from browser_use import ChatAnthropic    # Anthropic (claude-sonnet-4, claude-opus-4)
from browser_use import ChatGoogle       # Google (gemini-2.0-flash, gemini-2.5-pro)
from browser_use import ChatGroq         # Groq (llama-3-70b)
from browser_use import ChatOllama       # Ollama (local models)
from browser_use import ChatAzureOpenAI  # Azure OpenAI
from browser_use import ChatMistral      # Mistral
from browser_use import ChatLiteLLM      # LiteLLM (100+ models)

Production Monitoring

Monitor critical user flows 24/7:

from browser_use import Agent, Browser, BrowserProfile, ChatAnthropic

profile = BrowserProfile(
    headless=True,
    allowed_domains=["your-app.com", "*.your-app.com"],
)

agent = Agent(
    task="""
    1. Go to https://your-app.com/login
    2. Login with test credentials
    3. Navigate to checkout, add an item
    4. Verify payment form loads correctly
    5. Report any errors or broken elements
    """,
    llm=ChatAnthropic(model="claude-sonnet-4-20250514"),
    browser=Browser(browser_profile=profile),
)

result = await agent.run(max_steps=50)

Structured Data Extraction

Extract typed data from any website:

from pydantic import BaseModel
from browser_use import Agent, ChatOpenAI

class Product(BaseModel):
    name: str
    price: float
    rating: float
    in_stock: bool

agent = Agent(
    task="Extract all products from the first page",
    llm=ChatOpenAI(model="gpt-4o"),
    output_model_schema=Product,
)
products = await agent.run()

Custom Tools

Extend the agent with your own functions:

from browser_use import Agent, Tools, ChatGoogle

tools = Tools()

@tools.action(description="Send Slack alert when issue found")
def send_alert(message: str, severity: str) -> str:
    slack.post(channel="#alerts", text=f"[{severity}] {message}")
    return "Alert sent"

agent = Agent(
    task="Monitor checkout flow and alert on any failures",
    llm=ChatGoogle(model="gemini-2.0-flash"),
    tools=tools,
)

CLI

yeti-agent open https://example.com    # Navigate to URL
yeti-agent state                       # See clickable elements
yeti-agent click 5                     # Click element by index
yeti-agent type "Hello"                # Type text
yeti-agent screenshot page.png         # Take screenshot
yeti-agent close                       # Close browser
yeti-agent init                        # Generate starter template
yeti-agent doctor                      # Check your setup

Template Quickstart

yeti-agent init --template default

Creates a ready-to-run Python script. Available templates:

  • default — Minimal setup to get started
  • advanced — All configuration options with comments
  • tools — Custom tools and extending the agent

Architecture

Your Task (plain English)
    → LLM (GPT / Claude / Gemini / Ollama)
        → Agent (plans & executes)
            → Browser (CDP protocol)
                → Results (typed data)

Event-driven with watchdog services for security, popups, downloads, DOM changes, and crash recovery — all running independently through an event bus.

Key Features

Feature Description
20+ Browser Actions Click, type, scroll, navigate, extract, multi-tab, file upload, PDF export
Security Watchdogs Domain allowlists/blocklists, data masking, proxy support, permission handling
Multi-Tab Agent manages multiple tabs autonomously — opens, switches, aggregates
MCP Integration Works as MCP server for Claude Desktop, connects to external MCP servers
Headless Mode Full headless support for CI/CD, serverless, and production
Cloud Browsers Connect to cloud CDP endpoints for scalable automation
GIF Generation Auto-generate visual recordings of agent runs
Structured Output Pydantic v2 models with type validation
Loop Detection Catches repetitive agent behavior automatically
Fallback LLM Secondary LLM for recovery after failures

Configuration

from browser_use import Agent, Browser, BrowserProfile

profile = BrowserProfile(
    headless=True,                                    # No visible browser
    allowed_domains=["*.your-app.com"],               # Security
    proxy={"server": "http://proxy:8080"},            # Proxy
    user_data_dir="./chrome-profile",                 # Persist cookies
)

agent = Agent(
    task="...",
    llm=llm,
    browser=Browser(browser_profile=profile),
    use_vision=True,                                  # Screenshots in prompts
    max_actions_per_step=5,                           # Actions per LLM call
    generate_gif=True,                                # Record run
)

Use Cases

  • Production Monitoring — Test checkout, login, payments 24/7
  • E2E QA Automation — Replace brittle Selenium with AI that adapts to UI changes
  • Data Extraction — Scrape into typed Pydantic models
  • Workflow Automation — Multi-step form filling, report generation
  • Regression Detection — Post-release verification smarter than screenshot diffs
  • SLA Compliance — Verify vendor portals meet requirements

Python Support

  • Python 3.11, 3.12, 3.13
  • Fully async (asyncio)
  • Sync wrapper available (agent.run_sync())

Development

git clone https://github.com/NikeGunn/yeti-agent.git
cd yeti-agent
uv venv --python 3.11 && source .venv/bin/activate
uv sync --dev
uv run pytest -vxs tests/ci          # Run tests
uv run pyright                        # Type check
uv run ruff check --fix && uv run ruff format  # Lint

Credits

Yeti Agent is built on top of the browser-use open-source framework. We extend it with production monitoring capabilities, enterprise features, and the Yeti Agent platform.

License

MIT License — see LICENSE for details.


Made with ❤️ in Nepal 🇳🇵 by Nikhil Bhagat

⭐ Star this repo if you find it useful!

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

yeti_agent-1.0.1.tar.gz (577.0 kB view details)

Uploaded Source

Built Distribution

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

yeti_agent-1.0.1-py3-none-any.whl (685.5 kB view details)

Uploaded Python 3

File details

Details for the file yeti_agent-1.0.1.tar.gz.

File metadata

  • Download URL: yeti_agent-1.0.1.tar.gz
  • Upload date:
  • Size: 577.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for yeti_agent-1.0.1.tar.gz
Algorithm Hash digest
SHA256 8026a84c15c425399c0c1bbfd2f470865e3c8aa9ec43035889e51f8613a13bf0
MD5 0cd033e7651c00d08c9cb68da449f079
BLAKE2b-256 01e042ff14a71fe51db44f09feed8b5f73cb66aa333987605d4f21ed57c5d511

See more details on using hashes here.

File details

Details for the file yeti_agent-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: yeti_agent-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 685.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for yeti_agent-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aa14909ad93ffb66c78e21b1838e8eff503c7dc73bdc6f8b43cda0bcd66d02b5
MD5 d0496986c6e52e0e3d93016fe6561148
BLAKE2b-256 e942613628c6e1e334aa62a9a77a35b2618b260005cc0588711b97edcca26f72

See more details on using hashes here.

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