A browser in the cloud that sleeps for $0 and wakes in 500ms
Project description
orb-browser
A browser in the cloud that sleeps for $0 and wakes in 500ms.
Deploy Chrome on Orb Cloud. Browse, log in, interact. When you're done, put it to sleep — the entire browser is checkpointed to NVMe. Wake it later in ~500ms with everything intact: cookies, login sessions, page state. You're still logged in.
Install
pip install orb-browser
Get an API Key
curl -X POST https://api.orbcloud.dev/api/v1/auth/register \
-H 'Content-Type: application/json' -d '{"email":"you@example.com"}'
curl -X POST https://api.orbcloud.dev/v1/keys \
-H "Authorization: Bearer YOUR_KEY" \
-H 'Content-Type: application/json' -d '{"name":"my-key"}'
Quick Start
from orb_browser import OrbBrowser
orb = OrbBrowser(api_key="orb_...")
# Deploy a browser (~1-2 min first time)
orb.deploy()
# Browse
orb.navigate("https://example.com")
orb.screenshot("page.jpg")
print(orb.text())
# Sleep — $0/hr while frozen
orb.sleep()
# Wake — ~500ms, everything restored
orb.wake()
print(orb.url()) # still on example.com
# Done
orb.destroy()
Vision Agent
Give the browser a task in natural language. It screenshots the page, sends it to a vision LLM, and executes actions until done.
# No LLM key needed — uses the built-in key
result = orb.task("Go to news.ycombinator.com and tell me the top story")
print(result)
# With a specific start URL
result = orb.task(
"Describe any images on this page",
start_url="https://home.cern/news",
model="google/gemini-2.0-flash-001",
)
# Ask a question about a page (text-only, faster)
answer = orb.ask("https://example.com", "What does this page say?")
CLI:
orb-browser task "Go to example.com and read the page"
orb-browser ask https://example.com "What is this page about?"
Manual Login
Need to log into Twitter, Gmail, or any site with OAuth/2FA? Use the live browser view:
from orb_browser import OrbBrowser
orb = OrbBrowser(api_key="orb_...")
orb.deploy()
# Navigate to login page
orb.navigate("https://x.com/login")
# Open the live view in your browser
print(orb.live_url)
# → https://abc12345.orbcloud.dev/live
# Click, type, do 2FA in the live view...
# When done, checkpoint the session:
orb.sleep()
print(f"Saved! ID: {orb.computer_id}")
# Later — wake and you're still logged in:
orb.connect("COMPUTER_ID", AGENT_PORT)
orb.wake()
API
orb = OrbBrowser(api_key="orb_...")
Lifecycle
| Method | Description |
|---|---|
orb.deploy() |
Deploy browser VM (~1-2 min) |
orb.sleep() |
Checkpoint to NVMe ($0) |
orb.wake() |
Restore (~500ms) |
orb.destroy() |
Delete the VM |
orb.connect(id, port) |
Connect to existing VM |
Browse
| Method | Description |
|---|---|
orb.navigate(url) |
Go to URL |
orb.back() |
Go back |
orb.forward() |
Go forward |
orb.click(selector) |
Click element |
orb.click(x=100, y=200) |
Click coordinates |
orb.fill(selector, value) |
Fill input field |
orb.type(text) |
Type text |
orb.press(key) |
Press key (Enter, Tab, etc) |
orb.scroll(direction, amount) |
Scroll up/down |
orb.evaluate(js) |
Run JavaScript |
Agent
| Method | Description |
|---|---|
orb.task(prompt) |
Vision agent: screenshot + LLM + actions |
orb.ask(url, question) |
Navigate + read text + LLM answer |
Read
| Method | Description |
|---|---|
orb.screenshot(path) |
JPEG screenshot |
orb.url() |
Current URL + title |
orb.text() |
Page text content |
orb.html() |
Page HTML |
orb.cookies() |
All cookies |
Properties
| Property | Description |
|---|---|
orb.vm_url |
VM HTTPS URL |
orb.live_url |
Live browser view URL |
orb.computer_id |
VM ID (save for reconnecting) |
orb.state |
init, deploying, running, sleeping, destroyed |
Live View
Open orb.live_url in your browser to see and control the remote Chrome:
- Click anywhere on the screen to click
- Type on your keyboard to type in the browser
- URL bar to navigate
- Back/Forward buttons
This is how you log into sites that need OAuth, 2FA, or CAPTCHA.
How It Works
deploy()creates a VM on Orb Cloud with Python + Playwright + Chrome- Chrome runs locally in the VM — no remote WebSocket, no CDP over internet
- You send HTTP requests, the agent executes them against local Chrome
sleep()uses CRIU to checkpoint the entire process tree to NVMewake()restores everything in ~500ms — Chrome doesn't know it was frozen
Cost
| State | Cost |
|---|---|
| Running | ~$0.03/hr |
| Sleeping | $0/hr |
| 1,000 browsers, 90% sleeping | ~$50/month |
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file orb_browser-0.5.0.tar.gz.
File metadata
- Download URL: orb_browser-0.5.0.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d783514323873750ff2e72b53f4fbb27ecb54b6c9bc3beb13f9759876f07737d
|
|
| MD5 |
2bddafe7a3c039f9f23b9e319f1e6aac
|
|
| BLAKE2b-256 |
a25340514f16219c71cdbe17053e3c559b12110cb40301138f140b6e6d64daf3
|
File details
Details for the file orb_browser-0.5.0-py3-none-any.whl.
File metadata
- Download URL: orb_browser-0.5.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c82551590bc06eff12ca1507862dea051edcbe16cb0751fb08316bc77016b71
|
|
| MD5 |
1cfd054d56076c7b73c9675452673095
|
|
| BLAKE2b-256 |
c48681d202fd6cf57b801655082b8183a6a21c1265947ccc668cc936783b3f97
|