Scrapybara has shut down their virtual desktop and browser service as of October 15, 2025. If you were using Scrapybara for browser automation, Kernel is here to help you migrate seamlessly.Documentation Index
Fetch the complete documentation index at: https://kernel.sh/docs/llms.txt
Use this file to discover all available pages before exploring further.
Key Concepts
| Feature | Scrapybara | Kernel |
|---|---|---|
| Start Browser | client.start_browser() | kernel.browsers.create() |
| Standby Mode | instance.pause() / instance.resume() | Automatic standby mode |
| CDP URL | instance.get_cdp_url().cdp_url | Returns cdp_ws_url in create response |
| Live View | instance.get_stream_url().stream_url | Returns browser_live_view_url in create response |
| Stealth Mode | ❌ Not available | Create browser with stealth: true |
| Replays | ❌ Not available | kernel.browsers.replays.start() and kernel.browsers.replays.stop() |
| Save Auth | instance.browser.save_auth(name="default") | Create Profile. Then create browser with kernel.browsers.create(profile={"name": "profile1", "save_changes": true}) |
| Click | instance.computer(action="click_mouse", button="left") | kernel.browsers.computer.click_mouse(id=session_id, x=100, y=200) |
| Drag | instance.computer(action="drag_mouse", path=[[100, 200], [300, 400]]) | kernel.browsers.computer.drag_mouse(id=session_id, path=[[100, 200], [150, 220], [200, 260]]) |
| Screenshot | instance.computer(action="take_screenshot").base64_image | kernel.browsers.computer.capture_screenshot(id=session_id) |
How to migrate
Basic Browser Creation
ScrapybaraSave & Reuse Authentication
ScrapybaraFile Download
ScrapybaraLong-Running Sessions
ScrapybaraComputer Controls
Both Scrapybara and Kernel provide Computer Controls APIs that allow you to programmatically control the browser environment at the system level - including mouse movements, clicks, keyboard input, and screenshots. ScrapybaraFull API Comparison
| Feature | Scrapybara | Kernel |
|---|---|---|
| Create Browser | client.start_browser() | kernel.browsers.create() |
| Get CDP URL | instance.get_cdp_url().cdp_url | Returns cdp_ws_url in create response |
| Get Live View | instance.get_stream_url().stream_url | Returns browser_live_view_url in create response |
| Delete Browser | instance.stop() | kernel.browsers.delete_by_id(session_id) |
| List Browsers | kernel.get_instances() | kernel.browsers.list() |
| Save Auth State | instance.browser.save_auth(name="default") | Create Profile. Then create browser with kernel.browsers.create(profile={"name": "profile1", "save_changes": True}) |
| Load Auth State | instance.browser.authenticate(auth_state_id="xyz") | kernel.browsers.create(profile={"name": "profile1"}) |
| Pause/Resume | instance.pause() / instance.resume() | Automatic standby mode |
| Screenshot | instance.screenshot() | Use Playwright or Puppeteer |
| Timeout Config | timeout_hours parameter | timeout_seconds parameter |
| Stealth Mode | ❌ Not available | Create browser with stealth: true |
| Headless Mode | ❌ Not available | Create browser with headless: true |
| Session Persistence | Auth state only | Full browser state via creating browser with extended timeout |
| Video Replays | ❌ Not available | kernel.browsers.replays.start() and kernel.browsers.replays.stop() |
| File Upload | instance.upload() | kernel.browsers.fs.upload() or Playwright |
| File Download | Via browser, then instance.file() | kernel.browsers.fs.read_file() |
| Process Control | instance.bash() | kernel.browsers.process.* |
| Proxy Support | ❌ Not available | Create Proxy. Then create browser with kernel.browsers.create(proxy_id=proxy.id) |
| Click Mouse | instance.computer(action="click_mouse", button="left") | kernel.browsers.computer.click_mouse(id=session_id, x=100, y=200) |
| Move Mouse | instance.computer(action="move_mouse", coordinates=[100, 200]) | kernel.browsers.computer.move_mouse(id=session_id, x=100, y=200) |
| Drag Mouse | instance.computer(action="drag_mouse", path=[[100, 200], [300, 400]]) | kernel.browsers.computer.drag_mouse(id=session_id, path=[[100, 200], [150, 220], [200, 260]]) |
| Scroll | instance.computer(action="scroll", coordinates=[100, 100], delta_x=0, delta_y=200) | kernel.browsers.computer.scroll(id=session_id, delta_x=0, delta_y=100) |
| Type Text | instance.computer(action="type_text", text="Hello") | kernel.browsers.computer.type_text(id=session_id, text="Hello") |
| Press Key | instance.computer(action="press_key", keys=["ctrl", "c"]) | kernel.browsers.computer.press_key(id=session_id, keys=["Ctrl+t"]) |
| Take Screenshot | instance.computer(action="take_screenshot").base64_image | kernel.browsers.computer.capture_screenshot(id=session_id) |
| Get Cursor Position | instance.computer(action="get_cursor_position").output | Use move_mouse with tracking |