Browser infrastructure for AI agents, from your terminal.
The Steel CLI gives any AI agent (Claude, Cursor, Browser Use, or your own) a production-grade cloud browser: markdown-first scraping, long-running sessions, stealth, residential proxies, automatic CAPTCHA handling, and credential injection. One binary, cloud or self-hosted.
# Install, then interactively log in and install agent skills
curl -fsS https://setup.steel.dev | sh
# Scrape a page (agent-ready markdown)
steel scrape https://example.com- Agent-native. Markdown-first output,
steel describefor machine-readable command introspection, shell completions, and ready-to-install skills for Claude Code, Cursor, OpenCode, and Codex. - Long-running sessions. 24-hour browser sessions, reusable named profiles, persistent auth context. Built for agents that actually live: deep research, async workflows, overnight jobs.
- Framework-agnostic. First-class support for Claude Computer Use, OpenAI Computer Use, Gemini Computer Use, Browser Use, Playwright, Puppeteer, Selenium, Stagehand, CrewAI, Magnitude, Notte, Agno, and AgentKit.
- Cloud or self-hosted. Fully open source. Use managed infrastructure at steel.dev, or run the Steel Browser stack yourself with
steel devor Docker. - Pro browser features. Managed residential proxies, stealth mode, automatic CAPTCHA solving, stored credential injection. Everything a real-world agent needs.
- π Docs: guides, recipes, API reference
- π§ͺ Cookbook: runnable examples across Python, Node, and every supported framework
- π¬ Discord: community, feedback, roadmap
- π GitHub: source, issues, releases
curl -fsS https://setup.steel.dev | shThe installer drops a single binary into ~/.steel/bin, updates your shell's PATH, and auto-generates shell completions for bash, zsh, and fish.
Alternatives:
- Download from GitHub Releases
cargo install steel-clinpm i -g @steel-dev/cli(thin wrapper around the native binary)
After install, either restart your shell or run export PATH="$HOME/.steel/bin:$PATH".
Shell completions are installed automatically by install.sh. To regenerate or install manually:
# Bash (user-local)
steel completion bash > ~/.local/share/bash-completion/completions/steel
# Zsh (ensure a writable dir is in $fpath, then reload)
steel completion zsh > "${fpath[1]}/_steel"
# Fish
steel completion fish > ~/.config/fish/completions/steel.fish
# PowerShell (append to $PROFILE)
steel completion powershell | Out-String | Invoke-ExpressionSupported shells: bash, zsh, fish, powershell, elvish.
| Group | Commands |
|---|---|
| Onboarding | init, forge |
| Browser lifecycle | browser start, browser stop, browser sessions, browser live |
| Browser passthrough | steel browser <inherited-command> |
| Browser profiles | profile import, profile sync, profile list, profile delete |
| API tools | scrape, screenshot, pdf |
| Local runtime | dev install, dev start, dev stop |
| Credentials | credentials list, credentials create, credentials update, credentials delete |
| Account and utility | login, logout, config, doctor, cache, update, completion |
Full flags and schemas: CLI reference.
steel browser is directly backed by the vendored agent-browser runtime. Steel-owned lifecycle commands:
steel browser startsteel browser stopsteel browser sessionssteel browser live
All other steel browser <command> calls inherit upstream runtime behavior and route through Steel. Migration from upstream agent-browser is typically command-prefix only:
- before:
agent-browser <command> ... - after:
steel browser <command> ...
See the migration guide, compatibility matrix, and synced command catalog for details.
For browser lifecycle, browser passthrough bootstrap, and top-level API tools (scrape, screenshot, pdf), endpoint selection is deterministic.
Self-hosted precedence (highest to lowest):
--api-url <url>STEEL_BROWSER_API_URLSTEEL_LOCAL_API_URLbrowser.apiUrlin~/.config/steel/config.jsonhttp://localhost:3000/v1
Cloud precedence:
STEEL_API_URLhttps://api.steel.dev/v1
Attach-flag override rule:
- If
--cdpor--auto-connectis provided, Steel bootstrap injection is skipped and passthrough args are forwarded unchanged.
steel scrapedefaults to markdown-first output for token efficiency; use--rawfor the full JSON payload.steel browser startandsteel browser sessionsemit display-safe connect URLs with sensitive query values redacted.- Browser command paths bypass auto-update checks for lower interactive latency.
- Piped output auto-switches to JSON for machine-readable workflows. Use
--jsonto force it, orSTEEL_FORCE_TTY=1to disable.
Primary docs:
- Docs index
- Generated CLI reference
- Browser compatibility
- agent-browser migration guide
- Upstream sync guide
Reference docs:
- References index
- Steel CLI reference (high-level)
- Steel browser reference (modes + contracts)
- Steel browser commands (synced + transformed)
- Agent troubleshooting playbook
- Pinned upstream source snapshot
Agent skill:
The Steel CLI is now a single native Rust binary. If you previously installed it via npm i -g @steel-dev/cli, the install.sh script auto-detects and removes the old Node-based install. You can also do it manually:
npm update -g @steel-dev/cli # auto-installs native binary
npm uninstall -g @steel-dev/cli # optional cleanup
export PATH="$HOME/.steel/bin:$PATH"Licensed under MIT.
