Browser modes
TheBROWSER_TYPE setting controls how Skyvern runs the browser.
- Headful — visible browser window (default)
- Headless — no display, runs in the background
- Use Your Own Chrome — runs the installed Chrome app with your logged-in profile
- CDP Connect — connects to an already-running Chrome instance
Headful (default)
.env
Headless
.env
Some websites detect and block headless browsers. If you encounter issues with bot detection, try headful mode with a virtual display.
Use Your Own Chrome
.env
- Running automations with your saved logins and cookies
- Using your installed Chrome extensions
- Avoiding bot detection by using a real Chrome installation
CDP Connect (External Chrome)
.env
- Using your existing browser profile with saved logins
- Debugging with Chrome DevTools
- Running automations on a browser with specific extensions
Setting up Use Your Own Chrome
SetCHROME_EXECUTABLE_PATH to your Chrome installation path and Skyvern handles the rest — no need to manually start Chrome with debugging flags.
Step 1: Find your Chrome path
Step 2: Configure Skyvern
- Copy your Chrome profile to a working directory (
./tmp/user_data_dir) - Launch Chrome with remote debugging on port 9222
- Connect via CDP automatically
If port 9222 is already in use (e.g., from a previous session), Skyvern will connect to the existing instance instead of launching a new one.
Setting up CDP Connect
CDP (Chrome DevTools Protocol) lets Skyvern control an external Chrome browser instead of launching its own.Step 1: Start Chrome with remote debugging
--user-data-dir flag creates a separate profile for Skyvern, preserving your main Chrome profile.
Step 2: Configure Skyvern
.env
| Host OS | URL |
|---|---|
| macOS/Windows | http://host.docker.internal:9222/ |
| Linux | http://172.17.0.1:9222/ |
Step 3: Verify connection
Test that Skyvern can reach Chrome:Display settings
Configure how the browser appears to websites. These settings affect geolocation detection and content rendering.Locale and timezone
.env
| Region | BROWSER_LOCALE | BROWSER_TIMEZONE |
|---|---|---|
| US East | en-US | America/New_York |
| US West | en-US | America/Los_Angeles |
| UK | en-GB | Europe/London |
| Germany | de-DE | Europe/Berlin |
| Japan | ja-JP | Asia/Tokyo |
Viewport size
.env
Timeout settings
Control how long Skyvern waits for various browser operations..env
When to adjust timeouts
| Symptom | Adjustment |
|---|---|
| Actions fail on slow sites | Increase BROWSER_ACTION_TIMEOUT_MS |
| Screenshots timeout on complex pages | Increase BROWSER_SCREENSHOT_TIMEOUT_MS |
| Page load timeouts | Increase BROWSER_LOADING_TIMEOUT_MS |
| DOM analysis fails on large pages | Increase BROWSER_SCRAPING_BUILDING_ELEMENT_TREE_TIMEOUT_MS |
Advanced settings
Browser logging
.env
Maximum pages
.env
Chrome policies
.env
Video recording path
.env
Memory considerations
Browser instances are memory-intensive. These are approximate guidelines. Actual usage depends on page complexity and browser settings.| Concurrent tasks | Recommended RAM |
|---|---|
| 1-2 | 4GB |
| 3-5 | 8GB |
| 6-10 | 16GB |
| 10+ | 32GB+ |
- Reduce
BROWSER_MAX_PAGES_NUMBER - Use a smaller viewport (
BROWSER_WIDTH,BROWSER_HEIGHT) - Run in headless mode (
BROWSER_TYPE=chromium-headless) - Limit concurrent task execution
Scaling browsers
The default Docker Compose setup runs one browser instance inside the Skyvern container. For higher concurrency:Option 1: Vertical scaling
Add more RAM to your server and increaseMAX_STEPS_PER_RUN and BROWSER_MAX_PAGES_NUMBER.
Option 2: Horizontal scaling
Deploy multiple Skyvern instances behind a load balancer. Each instance runs its own browser. See Kubernetes Deployment for orchestrated scaling.Option 3: External browser pool
Use a browser pool service like Browserless or your own Playwright grid, then connect via CDP:.env
Next steps
Proxy Setup
Configure proxies to avoid bot detection
Storage Configuration
Store recordings and artifacts in S3 or Azure Blob

