SkillAgentSearch skills...

Skyvern

Automate browser based workflows with AI

Install / Use

/learn @Skyvern-AI/Skyvern

README

<!-- DOCTOC SKIP --> <h1 align="center"> <a href="https://www.skyvern.com"> <picture> <source media="(prefers-color-scheme: dark)" srcset="fern/images/skyvern_logo.png"/> <img height="120" src="fern/images/skyvern_logo_blackbg.png"/> </picture> </a> <br /> </h1> <p align="center"> 🐉 Automate Browser-based workflows using LLMs and Computer Vision 🐉 </p> <p align="center"> <a href="https://www.skyvern.com/"><img src="https://img.shields.io/badge/Website-blue?logo=googlechrome&logoColor=black"/></a> <a href="https://www.skyvern.com/docs/"><img src="https://img.shields.io/badge/Docs-yellow?logo=gitbook&logoColor=black"/></a> <a href="https://discord.gg/fG2XXEuQX3"><img src="https://img.shields.io/discord/1212486326352617534?logo=discord&label=discord"/></a> <!-- <a href="https://pepy.tech/project/skyvern" target="_blank"><img src="https://static.pepy.tech/badge/skyvern" alt="Total Downloads"/></a> --> <a href="https://github.com/skyvern-ai/skyvern"><img src="https://img.shields.io/github/stars/skyvern-ai/skyvern" /></a> <a href="https://github.com/Skyvern-AI/skyvern/blob/main/LICENSE"><img src="https://img.shields.io/github/license/skyvern-ai/skyvern"/></a> <a href="https://twitter.com/skyvernai"><img src="https://img.shields.io/twitter/follow/skyvernai?style=social"/></a> <a href="https://www.linkedin.com/company/95726232"><img src="https://img.shields.io/badge/Follow%20 on%20LinkedIn-8A2BE2?logo=linkedin"/></a> </p>

Skyvern automates browser-based workflows using LLMs and computer vision. It provides a Playwright-compatible SDK that adds AI functionality on top of playwright, as well as a no-code workflow builder to help both technical and non-technical users automate manual workflows on any website, replacing brittle or unreliable automation solutions.

<p align="center"> <img src="fern/images/geico_shu_recording_cropped.gif"/> </p>

Traditional approaches to browser automations required writing custom scripts for websites, often relying on DOM parsing and XPath-based interactions which would break whenever the website layouts changed.

Instead of only relying on code-defined XPath interactions, Skyvern relies on Vision LLMs to learn and interact with the websites.

How it works

Skyvern was inspired by the Task-Driven autonomous agent design popularized by BabyAGI and AutoGPT -- with one major bonus: we give Skyvern the ability to interact with websites using browser automation libraries like Playwright.

Skyvern uses a swarm of agents to comprehend a website, and plan and execute its actions:

<picture> <source media="(prefers-color-scheme: dark)" srcset="fern/images/skyvern_2_0_system_diagram.png" /> <img src="fern/images/skyvern_2_0_system_diagram.png" /> </picture>

This approach has a few advantages:

  1. Skyvern can operate on websites it's never seen before, as it's able to map visual elements to actions necessary to complete a workflow, without any customized code
  2. Skyvern is resistant to website layout changes, as there are no pre-determined XPaths or other selectors our system is looking for while trying to navigate
  3. Skyvern is able to take a single workflow and apply it to a large number of websites, as it's able to reason through the interactions necessary to complete the workflow A detailed technical report can be found here.

Demo

<!-- Redo demo -->

https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f

Quickstart

Skyvern Cloud

Skyvern Cloud is a managed cloud version of Skyvern that allows you to run Skyvern without worrying about the infrastructure. It allows you to run multiple Skyvern instances in parallel and comes bundled with anti-bot detection mechanisms, proxy network, and CAPTCHA solvers.

If you'd like to try it out, navigate to app.skyvern.com and create an account.

Run Locally (UI + Server)

Choose your preferred setup method:

Option A: pip install (Recommended)

Dependencies needed:

Additionally, for Windows:

  • Rust
  • VS Code with C++ dev tools and Windows SDK

1. Install Skyvern

pip install skyvern

2. Run Skyvern

skyvern quickstart

Option B: Docker Compose

  1. Install Docker Desktop
  2. Clone the repository:
    git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
    
  3. Run quickstart with Docker Compose:
    pip install skyvern && skyvern quickstart
    
    When prompted, choose "Docker Compose" for the full containerized setup.
  4. Navigate to http://localhost:8080

SDK

Skyvern is a Playwright extension that adds AI-powered browser automation. It gives you the full power of Playwright with additional AI capabilities—use natural language prompts to interact with elements, extract data, and automate complex multi-step workflows.

Installation:

  • Python: pip install skyvern then run skyvern quickstart for local setup
  • TypeScript: npm install @skyvern/client

AI-Powered Page Commands

Skyvern adds four core AI commands directly on the page object:

| Command | Description | |---------|-------------| | page.act(prompt) | Perform actions using natural language (e.g., "Click the login button") | | page.extract(prompt, schema) | Extract structured data from the page with optional JSON schema | | page.validate(prompt) | Validate page state, returns bool (e.g., "Check if user is logged in") | | page.prompt(prompt, schema) | Send arbitrary prompts to the LLM with optional response schema |

Additionally, page.agent provides higher-level workflow commands:

| Command | Description | |---------|-------------| | page.agent.run_task(prompt) | Execute complex multi-step tasks | | page.agent.login(credential_type, credential_id) | Authenticate with stored credentials (Skyvern, Bitwarden, 1Password) | | page.agent.download_files(prompt) | Navigate and download files | | page.agent.run_workflow(workflow_id) | Execute pre-built workflows |

AI-Augmented Playwright Actions

All standard Playwright actions support an optional prompt parameter for AI-powered element location:

| Action | Playwright | AI-Augmented | |--------|------------|--------------| | Click | page.click("#btn") | page.click(prompt="Click login button") | | Fill | page.fill("#email", "a@b.com") | page.fill(prompt="Email field", value="a@b.com") | | Select | page.select_option("#country", "US") | page.select_option(prompt="Country dropdown", value="US") | | Upload | page.upload_file("#file", "doc.pdf") | page.upload_file(prompt="Upload area", files="doc.pdf") |

Three interaction modes:

# 1. Traditional Playwright - CSS/XPath selectors
await page.click("#submit-button")

# 2. AI-powered - natural language
await page.click(prompt="Click the green Submit button")

# 3. AI fallback - tries selector first, falls back to AI if it fails
await page.click("#submit-btn", prompt="Click the Submit button")

Core AI Commands - Examples

# act - Perform actions using natural language
await page.act("Click the login button and wait for the dashboard to load")

# extract - Extract structured data with optional JSON schema
result = await page.extract("Get the product name and price")
result = await page.extract(
    prompt="Extract order details",
    schema={"order_id": "string", "total": "number", "items": "array"}
)

# validate - Check page state (returns bool)
is_logged_in = await page.validate("Check if the user is logged in")

# prompt - Send arbitrary prompts to the LLM
summary = await page.prompt("Summarize what's on this page")

Quick Start Examples

Run via UI:

skyvern run all

Navigate to http://localhost:8080 to run tasks through the web interface.

Python SDK:

from skyvern import Skyvern

# Local mode
skyvern = Skyvern.local()

# Or connect to Skyvern Cloud
skyvern = Skyvern(api_key="your-api-key")

# Launch browser and get page
browser = await skyvern.launch_cloud_browser()
page = await browser.get_working_page()

# Mix Playwright with AI-powered actions
await page.goto("https://example.com")
await page.click("#login-button")  # Traditional Playwright
await page.agent.login(credential_type="skyvern", credential_id="cred_123")  # AI login
await page.click(prompt="Add first item to cart")  # AI-augmented click
await page.agent.run_task("Complete checkout with: John Snow, 12345")  # AI task

TypeScript SDK:

import { Skyvern } from "@skyvern/client";

const skyvern = new Skyvern({ apiKey: "your-api-key" });
const browser = await skyvern.launchCloudBrowser();
const page = await browser.getWorkingPage();

// Mix Playwright with AI-powered actions
await page.goto("https://example.com");
await page.click("#login-button");  // Traditional Playwright
await page.agent.login("skyvern", { credentialId: "cred_123" });  // AI login
await page.click({ prompt: "Add first item to cart" });  // AI-augmented click
await page.agent.runTask("Complete checkout with: John Snow, 12345");  // AI task

await browser.close();

Simple task execution:

from skyvern import Skyvern

skyvern = Skyvern()
task = await skyvern.run_task(prompt="Find the top post on hackernews today")
print(task)

Advanced Usage

Control your own browser (Chrome)

[!WARNING] Since Chrome 136, Chrome refuses any CDP connect to the browser using the default user_data_d

View on GitHub
GitHub Stars21.0k
CategoryDevelopment
Updated13m ago
Forks1.9k

Languages

Python

Security Score

100/100

Audited on Mar 29, 2026

No findings