Skip to content
OpenSourceSoftware.ai

GitHub stars

23,303
—Awaiting first sync

Awaiting first sync

No measured star history yet

What is Skyvern?

Skyvern does repetitive browser work, such as filling in forms, downloading documents or collecting data, by reading web pages the way a person does. Because it does not depend on fixed page structure, a change to a website layout is less likely to break an automation. Teams can build workflows without code in its web interface, while developers can add its AI commands to existing Playwright scripts.

Skyvern automates work in a web browser using large language models and computer vision. Instead of relying on fixed page selectors, it reads each page visually, so the same task can run on websites it has not seen before. It offers a web interface with a no-code workflow builder, a Playwright-compatible SDK for Python and TypeScript, and an API.

Core capabilities

  • Completes website tasks from a URL, a prompt and an optional data schema.
  • Chains browser tasks, data extraction, loops and HTTP requests into workflows.
  • Handles logins with stored credentials, Bitwarden and two-factor codes.

Tasks and workflows

A task is a single request with a URL, a prompt, an optional data schema and optional error codes that tell Skyvern when to stop. Workflows chain blocks together, including browser tasks, browser actions, data extraction, validation, for loops, file parsing, emails, text prompts, HTTP requests and custom code. Skyvern can fill in forms, extract data to a schema and download files. It can also connect to your own Chrome browser through remote debugging, so it can use the sessions you are already signed in to.

  • Tasks
  • Workflows
  • Form filling
  • Data extraction

SDK, logins and integrations

The Python and TypeScript SDKs extend Playwright with commands such as page.act, page.extract and page.validate, and standard actions such as click and fill accept a plain-language prompt. Logins can use stored credentials or Bitwarden, and 2FA support covers authenticator apps, email codes and SMS codes. An MCP server and integrations with Zapier, Make.com and n8n connect workflows to other tools. Models can come from OpenAI, Anthropic, Azure OpenAI, AWS Bedrock, Gemini, Ollama, OpenRouter or any OpenAI-compatible endpoint.

  • Playwright
  • SDK
  • 2FA
  • MCP

Run it yourself under AGPL-3.0

Docker Compose runs PostgreSQL, the API server with its browser and the web UI on port 8080, and you add your own LLM provider key or local model in the .env file. A pip install and Kubernetes manifests are also documented, and the manifests have no authentication, so the cluster should stay off the public internet. Each concurrent run needs its own browser, so memory needs grow with the number of runs. The proxy network, CAPTCHA solving and anti-bot measures are only in the paid Skyvern Cloud. Skyvern is released under the AGPL-3.0 licence and collects basic usage statistics unless SKYVERN_TELEMETRY is set to false.

  • Self-hosted
  • Docker
  • Kubernetes
  • AGPL-3.0

Where it fits

Use cases

  1. 01

    Download invoices from supplier portals

    Build a workflow that opens the invoices page, filters by date, extracts the list of invoices and loops through each one to download it. Downloaded files are uploaded to block storage when it is configured and can be opened from the UI. Store the portal login as a credential, and use the 2FA support for sites that ask for a one-time code.

  2. 02

    Fill in forms on many different websites

    Create a task with the website URL and a prompt that holds the details to enter, such as contact or quote information. Skyvern maps the visible fields to actions without site-specific code, so one task can be reused on sites with different layouts. Livestreaming shows the browser viewport, so you can watch the run and step in when needed.

  3. 03

    Pull structured data from web pages

    Run a task with a data_extraction_schema that lists the fields you want, such as a title, a URL and a number. The output follows that schema, so it can go straight into a spreadsheet or another system. Developers can do the same in code with page.extract in the Python or TypeScript SDK.