> ## Documentation Index
> Fetch the complete documentation index at: https://notte-experiment-visibility-md-links.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Steel

> Run Notte with Steel cloud browsers (CDP)

Steel is a developer platform that provides cloud browser infrastructure for web agents. By integrating with Notte, you can use Steel's browser infrastructure to run reliable browser agents using Chrome DevTools Protocol (CDP).

## Adding Steel to existing Notte implementations

### 1. Install Notte and Steel SDK

```bash theme={null}
uv pip install notte-sdk
uv pip install steel
```

### 2. Initialize Notte and Steel

Import the libraries and create a cloud browser session:

{/* @sniptest testers/integrations/steel/init.py */}

```python steel_init.py theme={null}

STEEL_API_KEY = os.getenv("STEEL_API_KEY")

# Initialize clients
steel = Steel(steel_api_key=STEEL_API_KEY)
client = NotteClient()

# Create a browser session on Steel
```

### 3. Connect Notte to Steel's CDP endpoint

Use Steel's CDP URL to create a Notte session:

{/* @sniptest testers/integrations/steel/connect.py */}

```python steel_connect.py theme={null}

# Connect Notte to Steel's browser via CDP
with client.Session(cdp_url=steel_session.websocket_url) as session:
    # Create an agent with a task
    agent = client.Agent(session=session, max_steps=10)

    # Run your automation task
    result = agent.run(task="extract pricing plans from https://www.notte.cc")
```

## Complete example script

Here's a complete, runnable script that demonstrates the full integration:

{/* @sniptest testers/integrations/steel/complete.py */}

```python steel_complete.py theme={null}

STEEL_API_KEY = os.getenv("STEEL_API_KEY")

steel = Steel(steel_api_key=STEEL_API_KEY)
client = NotteClient()

# Create a browser session on Steel
steel_session = steel.sessions.create()

try:
    # Connect Notte to Steel's browser via CDP
    with client.Session(cdp_url=steel_session.websocket_url) as session:
        agent = client.Agent(session=session, max_steps=10)

        result = agent.run(task="extract pricing plans from https://www.notte.cc")

        print(f"Task completed: {result.answer}")

except Exception as e:
    print(f"Error during automation: {e}")

finally:
    steel.sessions.release(steel_session.id)
    print("Steel session released")
```

<Note>Steel's SDK may evolve. Refer to [Steel's documentation](https://docs.steel.dev/) for the most up-to-date API details.</Note>

## Benefits of using Steel with Notte

* **No local browser management**: Run agents without installing or maintaining browsers locally
* **Cloud infrastructure**: Leverage Steel's managed browser infrastructure
* **Scalability**: Launch multiple browser sessions in parallel for concurrent tasks
* **Session control**: Programmatic control over browser lifecycle
