steel-browser
๐ฅ Open Source Browser API for AI Agents & Apps. Steel Browser is a batteries-included browser sandbox that lets you automate the web without worrying about infrastructure.
Install / Use
claude mcp add steel-dev -- npx -y github:steel-dev/steel-browserIf the server publishes to npm under a different name, use that package instead โ check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AutomationSupported Platforms
Tags
Our assessment of steel-browser
steel-browser scores 97/100 on our quality scale, 137th of 2,866 Automation skills we index (top 5%).
Its MCP Server is 15 KB long, well organised into 24 sections with 17 code examples: a thorough specification that gives an agent plenty to work with.
With 7,922 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated today, so steel-browser is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit โ read the skill file before letting an agent act on it.
steel-browser compared with similar skills
All 4 of these similar skills score higher than steel-browser; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| steel-browser (this skill)by steel-dev | 97 | 7.9k | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 108.8k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.8k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.8k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 96.5k | today | MCP Server |
Frequently asked questions
- How do I install steel-browser?
- Run
claude mcp add steel-dev -- npx -y github:steel-dev/steel-browser. The install tabs above show the steps for each supported agent. - Which AI agents does steel-browser work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is steel-browser safe to use?
- It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is steel-browser still maintained?
- The repository was last updated today, so steel-browser is actively maintained.
Skill content
View source on GitHubโจ Highlights
Steel.dev is an open-source browser API that makes it easy to build AI apps and agents that interact with the web. Instead of building automation infrastructure from scratch, you can focus on your AI application while Steel handles the complexity.
Under the hood, it manages sessions, pages, and browser processes, allowing you to perform complex browsing tasks programmatically without any of the headaches:
- Full Browser Control: Uses Puppeteer and CDP for complete control over Chrome instances -- allowing you to connect using Puppeteer, Playwright, or Selenium.
- Session Management: Maintains browser state, cookies, and local storage across requests
- Proxy Support: Built-in proxy chain management for IP rotation
- Extension Support: Load custom Chrome extensions for enhanced functionality
- Debugging Tools: Built-in request logging and a UI to view/debug sessions with
- Anti-Detection: Includes stealth plugins and fingerprint management
- Resource Management: Automatic cleanup and browser lifecycle management
- Browser Tools: Exposes APIs to quick convert pages to markdown, readability, screenshots, or PDFs.
For detailed API documentation and examples, check out our API reference or explore the Swagger UI directly at http://0.0.0.0:3000/documentation.
Steel is in public beta and evolving every day. Your suggestions, ideas, and reported bugs help us immensely. Do not hesitate to join in the conversation on Discord or raise a GitHub issue. We read everything, respond to most, and love you.
If you love open-source, AI, and dev tools, we're hiring across the stack!
Make sure to give us a star โญ
<img width="200" alt="Start us on Github!" src="images/star_img.png">๐ ๏ธ Getting Started
The easiest way to get started with Steel is by creating a Steel Cloud account. Otherwise, you can deploy this Steel browser instance to a cloud provider or run it locally.
โก Quick Deploy
If you're looking to deploy to a cloud provider, we've got you covered.
| Deployment methods | Link |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pre-built Docker Image (combined API + UI) | |
| 1-click deploy to Railway |
|
| 1-click deploy to Render |
|
๐ป Running Locally
Docker
The simplest way to deploy/run a Steel browser instance locally is to run the pre-built Docker image:
# Pull and run the Docker image
docker run -p 3000:3000 -p 9223:9223 ghcr.io/steel-dev/steel-browser
This will start the Steel browser server on port 3000 (http://localhost:3000) and the UI at http://localhost:3000/ui. The 9223 port is used for the console debugger.
You can now create sessions, scrape pages, take screenshots, and more. Jump to the Usage section for some quick examples on how you can do that.
Alternatively, you can run the API and UI separately with docker compose:
docker compose up
For Mac Silicon users, you will need to pass this env flag to the Docker compose command to run the images on the correct platform:
DOCKER_DEFAULT_PLATFORM=linux/arm64 docker compose up
Quickstart for Contributors
When developing locally, you will need to run the docker-compose.dev.yml file instead of the default docker-compose.yml file so that your local changes are reflected. Doing this will build the Docker images from the api and ui directories and run the server and UI on port 3000 and 5173 respectively.
docker compose -f docker-compose.dev.yml up
You will also need to run it with --build to ensure the Docker images are re-built every time you make changes:
docker compose -f docker-compose.dev.yml up --build
If you run on a custom host, copy .env.example to .env and set DOMAIN and CDP_DOMAIN to your host. Docker Compose reads the .env file automatically.
Node.js
Alternatively, if you have Node.js and Chrome installed, you can run both the server and the UI directly:
npm install
npm run dev
This will also start the Steel server on port 3000 and the UI on port 5173.
Make sure you have the Chrome executable installed and in one of these paths:
-
Linux:
/usr/bin/google-chrome -
MacOS:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome -
Windows:
C:\Program Files\Google\Chrome\Application\chrome.exeORC:\Program Files (x86)\Google\Chrome\Application\chrome.exe
Custom Chrome Executable
If you have a custom Chrome executable or a different path, you can set the CHROME_EXECUTABLE_PATH environment variable to the path of your Chrome executable:
export CHROME_EXECUTABLE_PATH=/path/to/your/chrome
npm run dev
For more details on where this is checked look at api/src/utils/browser.ts.
๐๐ฝโโ๏ธ Usage
If you're looking for quick examples on how to use Steel, check out the Cookbook.
Alternatively you can play with the REPL package too
cd replandnpm run start
There are three main ways to interact with the Steel browser API:
In these examples, we assume your custom Steel API endpoint is http://localhost:3000.
The full REST OpenAPI documentation can be found on our site and on your local Steel instance at http://localhost:3000/documentation.
Using the SDKs
If you prefer to use the our Python and Node SDKs, you can install the steel-sdk package for Node or Python.
These SDKs are built on top of the REST API and provide a more convenient way to interact with the Steel browser API. They are fully typed, and are compatible with both Steel Cloud and self-hosted Steel instances (changeable using the baseURL option on Node and base_url on Python).
For more details on installing and using the SDKs, please see the Node SDK Reference and the Python SDK Reference.
Sessions
The /sessions endpoint lets you relaunch the browser with custom options or extensions (e.g. with a custom proxy) and also reset the browser state. Perfect for complex, stateful workflows that need fine-grained control.
Once you have a session, you can use the session ID or the root URL to interact with the browser. To do this, you will need to use Puppeteer or Playwright. You can find some examples of how to use Puppeteer and Playwright with Steel in the docs below:
<details open> <summary><b>Creating a Session using the Node SDK</b></summary> <br>import Steel from "steel-sdk";
const client = new Steel({
baseURL: "http://localhost:3000", // Custom API Base URL override
});
(async () => {
try {
// Create a new browser session with current API fields
const session = await client.sessions.create({
blockAds: true,
proxyUrl: "user:pass@host:port", // optional
dimensions: { width: 1280, height: 800 }, // optional
});
console.log("Created session with ID:", session.id);
} catch (error) {
console.error("Error creating session:", error);
}
})();
</details>
<details>
<summary><b>Creating a Session using the Python SDK</b></summary>
<br>
import os
from steel import Steel
client = Steel(
base_url="http://localhost:3000", # Custom API Base URL override
)
try:
# Create a new browser session with custom options
session = client.sessions.create(
block_ads=True,
proxy_url="user:pass@host:port", # optional
dimensions={"width": 1280, "height": 800}, # optional
)
print("Created session with ID:", session.id)
except Exception as e:
print("Error creating session:", e)
</details>
<details>
<summary><b>Creating a Session using Curl</b></summary>
<br>
# Launch a new browser session
curl -X POST http://localhost:3000/v1/sessions \
-H "Content-Type: application/json" \
-d '{
"proxyUrl": "user:pass@host:port",
"blockAds": true,
"dimensions": { "width": 1280, "height": 800 }
}'
</details>
Selenium Sessions
Note: This integration does not support all the features of the CDP-based browser sessions API.
For teams with existing Selenium workflows, the Steel browser provides a drop-in replacement that adds enhanced features while maintaining compatibility. You can simply use the isSelenium option to create a Selenium session:
// Using the Node SDK
const session = await client.sessions.create({ isSelenium: true });
# Using the Python SDK
session = client.sessions.create(is_selenium=True)
<details>
<summary><b>Using Curl</b></summary>Truncated for display โ read the full file on GitHub.
Related Skills
Agent-Reach
108.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu โ one CLI, zero API fees.
headroom
78.8kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.8kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
96.5k๐ท๏ธ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit โ see the Safety scan above for what the skill file itself contains.
