Skip to main content

Terminal-native browser CLI for AI agents, powered by Steel Browser.

Project description

Silicon Browser

A terminal-native browser CLI for AI agents — same command surface as the original silicon-browser, but every browser runs in the cloud on Steel. No local Chromium, no stealth-patch maintenance: Steel provides the browser, fingerprinting, proxies, and CAPTCHA solving; Silicon Browser gives you a fast, scriptable CLI on top with a stable @ref element model and shareable remote-access links.

How it works

  • Each named session is a Steel cloud browser, driven over CDP via Playwright.
  • The browser lives in Steel's cloud and persists between commands; Silicon Browser keeps a small local state file per session (~/.silicon-browser/sessions/<name>.json) recording the session id, active tab, and the last snapshot's @ref → element map.
  • Every command opens a short-lived CDP connection, does its work, and disconnects. Disconnecting does not end the cloud browser — only close (or the session timeout) does.

Install

Install directly from GitHub (no clone needed):

uv tool install git+https://github.com/saket1225/silicon-browser.git
# or:  pipx install git+https://github.com/saket1225/silicon-browser.git

Or from a local clone:

git clone https://github.com/saket1225/silicon-browser.git
cd silicon-browser
uv tool install .          # or: pipx install .

Then save your key — the easiest way is the login command, which prompts for the key (hidden input), verifies it against Steel, and stores it persistently in ~/.silicon-browser/config.env (owner-only 0600):

silicon-browser login          # prompts for your key, verifies & saves it
# or non-interactively:
silicon-browser login --key ste-...

Once saved, every command picks it up automatically — no need to re-export it. Prefer environment variables? Those still work and take precedence:

export STEEL_API_KEY=ste-...   # or put it in a project-local .env file
silicon-browser install        # verifies your key + connectivity

Resolution order (first wins): STEEL_API_KEY env var → project-local ./.env → saved ~/.silicon-browser/config.env.

Get a key at app.steel.dev. Note that session/link lifetimes are capped by your Steel plan (e.g. 15 min on the hobby plan); Silicon Browser clamps to your plan's maximum automatically and tells you when it does.

Usage

silicon-browser open example.com         # start a session and navigate
silicon-browser snapshot -i              # list interactive elements with @refs
silicon-browser click @e1                # click by ref
silicon-browser fill @e2 "hello"         # fill an input
silicon-browser type "search query"      # keystroke-level typing
silicon-browser get text @e3             # extract text / html / value
silicon-browser screenshot               # saved under ~/.silicon-browser/screenshots
silicon-browser evaluate "document.title"
silicon-browser file session upload ./data.csv
silicon-browser file input @e4 /files/data.csv
silicon-browser file session archive
silicon-browser tabs                     # list tabs
silicon-browser tab new example.org      # open / switch tabs
silicon-browser tab select 0
silicon-browser close                    # release the cloud browser

Commands

Command Description
open <url> Navigate (starts a session if none active)
snapshot [-i] [--json] Accessibility tree with @refs; -i = interactive only
click @ref Click an element
fill @ref "text" Fill an input
type "text" [--delay ms] Type at the keyboard level
select @ref "value" Select a dropdown option
hover @ref Hover an element
scroll [down|up|top|bottom] [--amount px] Scroll the page
get text|html|value @ref Extract from an element
screenshot [path] [--full-page] Capture a screenshot
evaluate "js" Run JavaScript, print the result
file session list|upload|download|archive|delete|clear Manage files in the active browser session
file global list|upload|download|delete Manage global Steel file storage
file input @ref /files/name Set a file input to one or more session files
tabs / tab new [url] / tab select <n> Manage tabs
share [--expiry min] [--view-only] [--new] Remote access link (see below)
status / sessions Inspect sessions
profile list|save <name>|delete <name> Persistent identities
close Release the cloud browser
login [--key ...] Enter & save your Steel API key (prompts if no --key)
install Verify Steel credentials

Files

Steel session files live inside the remote browser VM under /files. Upload a local file into the current session, then bind it to a web page file input:

silicon-browser snapshot -i
silicon-browser file session upload ./invoice.pdf
silicon-browser file input @e7 /files/invoice.pdf

Downloads created by the browser also appear in the session file list:

silicon-browser file session list
silicon-browser file session download /files/report.csv ./report.csv
silicon-browser file session archive ./session-files.zip

Global files persist across sessions and can be copied into a session by path:

silicon-browser file global upload ./dataset.csv --path datasets/latest.csv
silicon-browser file session upload /files/datasets/latest.csv

Global options

--session/-s <name> (parallel sessions) · --profile <name> · --incognito · --proxy <url> · --user-agent <ua> · --solve-captcha

Remote access links

Generate a shareable link to watch — or take control of — the live cloud browser:

silicon-browser share                      # interactive link, expires in 60 min
silicon-browser share --expiry 30          # custom expiry (minutes)
silicon-browser share --view-only          # watch only, no control
silicon-browser share --new --expiry 120   # fresh session dedicated to the link

The link's lifetime is the Steel session timeout, so the expiry is enforced server-side: when it elapses, Steel tears the browser down and the link stops working. The default is 60 minutes (clamped to your plan's maximum if lower).

  • Interactive (default): recipients can click and type in the live browser.
  • View-only (--view-only): recipients can watch but not control.

Because Steel fixes a session's timeout at creation, share on an existing session reports that session's real expiry; use --new to mint a fresh session with exactly the expiry you ask for.

Profiles

A profile saves a session's cookies + local/session storage + IndexedDB so identity persists across sessions:

silicon-browser --profile work open github.com   # reuse saved context
silicon-browser --profile work close             # context is saved on close
silicon-browser profile list

Configuration

Variable Purpose
STEEL_API_KEY Your Steel API key (required)
STEEL_BASE_URL Override the Steel API base URL (self-hosted Steel)
STEEL_CONNECT_URL Override the CDP connect host (self-hosted Steel)
SILICON_BROWSER_HOME State directory (default ~/.silicon-browser)

silicon-browser login writes STEEL_API_KEY to $SILICON_BROWSER_HOME/config.env (default ~/.silicon-browser/config.env, 0600). Delete that file to "log out".

License

Apache-2.0

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

silicon_browser-0.1.3.tar.gz (26.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

silicon_browser-0.1.3-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

Details for the file silicon_browser-0.1.3.tar.gz.

File metadata

  • Download URL: silicon_browser-0.1.3.tar.gz
  • Upload date:
  • Size: 26.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for silicon_browser-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5938999b1563e70eacacb5330218c78bee79c46301ef01dffb7a69634b58a5b1
MD5 84f89f456d8e4b2b7dc081031c4fcd4d
BLAKE2b-256 ca1981f831f6bad27a0373bf3ab30f60aec2bc0873382b225d311f537542ec4d

See more details on using hashes here.

File details

Details for the file silicon_browser-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: silicon_browser-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 35.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for silicon_browser-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 069603e2ee65376dd3509bbd71d3bb5588608053507973b348bb1c4fbd30ea81
MD5 c13cfd76de823a001e07c8d0bf846c3f
BLAKE2b-256 3cfd6e0600b5f699ea50c3fdd3f3f2cd88b90dffe493b659ad17966cd54f6c55

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page