Registry / llm-agents / skyvern

skyvern

JSON →
library1.0.41pypypi✓ verified 89d ago

Skyvern is a Python library that enables AI-powered browser automation by extending Playwright with large language models (LLMs) and computer vision. It allows users to automate complex, multi-step web workflows using natural language prompts, aiming to be more robust than traditional selector-based automation tools. Skyvern also offers a no-code workflow builder and a managed cloud service. The current version is 1.0.31, with active development and frequent releases.

pip install skyvern
INSTALL
IMPORT
SIG · SKYVERN
S
skyvern
llm-agentspythonv1.0.41
Install
6.8s avg
Import
4400ms
Disk
75MB
Pass rate
6/ 10
Env Coverage6 / 10
glibc
3.9–3.13
musl
3.9–3.13
Install & Compatibility
Where this runs
tested against v1.0.41 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
✕ build_error
✕ build_error
py 3.11
✓ —
✓ 7.38s
py 3.12
✓ —
✓ 6.43s
py 3.13
✓ —
✓ 6.65s
py 3.9
✕ build_error
✕ build_error
75MB installed
● package 75MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Skyvern
✓ from skyvern import Skyvern

This quickstart initializes the Skyvern client with an API key (preferably from an environment variable) and runs a simple task to extract data from a website. For local setup, ensure you run `skyvern quickstart` first and may need to specify a `base_url`.

import os import asyncio from skyvern import Skyvern async def main(): # Ensure SKYVERN_API_KEY is set as an environment variable or replace with your actual key api_key = os.getenv("SKYVERN_API_KEY", "") if not api_key: print("Error: SKYVERN_API_KEY environment variable not set.") return client = Skyvern( api_key=api_key, # For self-hosted, use base_url="http://localhost:8000" # base_url="https://api.skyvern.com" # Default for cloud service ) print("Running task...") try: result = await client.run_task( prompt="Go to news.ycombinator.com and get the title of the #1 post", url="https://news.ycombinator.com", ) print(f"Run ID: {result.run_id}") print(f"Output: {result.output}") except Exception as e: print(f"An error occurred: {e}") if __name__ == "__main__": asyncio.run(main())
skyvern --version
Debug
Known issues
breakingChanging default ports in `docker-compose.yml` for self-hosted Skyvern deployments without updating related environment variables (like `VITE_WSS_BASE_URL`) can lead to 'network error' issues in the UI.
fix
Ensure all relevant environment variables are updated to reflect the new ports after modifying `docker-compose.yml`.
affects: All versions (self-hosted Docker deployments)
gotchaTasks can time out or get stuck in a 'queued' state due to complexity, insufficient `max_steps`, missing explicit completion criteria, concurrency limits, or LLM-related configuration issues.
fix
Increase `max_steps` (default 50, max 75), add explicit completion criteria to prompts (e.g., 'COMPLETE when you see "Order confirmed"'), break complex tasks into smaller workflows, and check your account's concurrency limits. Verify LLM API keys and network access.
affects: All versions
gotchaAuthentication failures (e.g., login-related termination) commonly occur due to expired credentials, CAPTCHAs, Multi-Factor Authentication (MFA), or detection of automation.
fix
Verify credentials in your credential store. For sensitive sites, consider using `RESIDENTIAL_ISP` proxies, configuring TOTP for MFA, or using browser profiles with existing sessions.
affects: All versions
Errors
Common errors & fixes
network error (Skyvern UI after changing Docker Compose ports)
Environment variables within the Docker Compose setup, particularly those related to WebSocket URLs (e.g., `VITE_WSS_BASE_URL`), were not updated to match the new port mappings.
fix
Edit `docker-compose.yml` and any associated `.env` files to ensure all port references and related environment variables are consistent with the new port configuration. Restart the Docker containers.
Task timed_out / Status is timed_out
The task exceeded the `max_steps` limit (default 50), the AI got stuck in a navigation loop, or explicit completion criteria were missing for a complex task.
fix
Increase `max_steps` in your task parameters (up to 75). Add clear completion criteria to your prompt (e.g., 'COMPLETE when you see "Order confirmed"'). Review the task recording to identify where the AI got stuck and refine the prompt or break the task into smaller steps.
Status is completed, but extracted data is incorrect or incomplete.
The AI might have ended on the wrong page, targeted incorrect elements, or the schema description was ambiguous.
fix
Check the `screenshot_final` and `llm_response_parsed` artifacts. Add specific descriptions to your schema (e.g., 'The price in USD, without currency symbol'). Provide visual hints in your prompt. Make schema fields optional if data might not always be present, and add validation instructions.
Run stays in queued status and never starts.
Account concurrency limits were reached, a sequential run lock was active (another run with the same credential), or there was high platform load.
fix
Wait for other runs to complete. Check your plan's concurrency limits in Skyvern settings. If using 'Run Sequentially' with credentials, ensure prior runs have finished. Contact support if the issue persists.
Upgrade
Version history
1.0.41latest on PyPI · released Jun 11, 2026
Audit
Dependencies
pythonrequiredSkyvern requires Python 3.11.x to 3.13.x. Python 3.14 is not yet supported.
Agent activity
51 hits · last 30 days
node
50
OpenAI (training)
1
Resources
skyvern — pip install skyvern · libregistry