> ## Documentation Index
> Fetch the complete documentation index at: https://libretto.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Steel

> Run Libretto sessions on Steel's managed browser infrastructure.

Steel is a managed browser provider. Use it when you want Libretto's local CLI and workflow runtime, but want Steel to host the browser session.

## Configure Steel

Create a Steel API key, then add it to the repo root `.env` file. Libretto loads `.env` automatically before running CLI commands.

```dotenv theme={null} theme={"theme":{"light":"github-light","dark":"github-dark"}}
# inside .env
STEEL_API_KEY=<steel-api-key>
```

`STEEL_BASE_URL` is only needed if you use a custom Steel API endpoint. `STEEL_CONNECT_URL` is only needed if Steel gives you a custom CDP connection endpoint.

Then set Steel as the workspace's default browser provider in `.libretto/config.json`:

```json theme={null} theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "version": 1,
  "provider": "steel"
}
```

You can also use `--provider steel` on a single command instead of changing the config file.

## Open a session

Open a page with the configured Steel provider:

```bash theme={null} theme={"theme":{"light":"github-light","dark":"github-dark"}}
npx libretto open https://example.com --session steel-demo
```

If you did not set `provider` in `.libretto/config.json`, pass it for this command instead:

```bash theme={null} theme={"theme":{"light":"github-light","dark":"github-dark"}}
npx libretto open https://example.com --provider steel --session steel-demo
```

After the session is open, use the normal Libretto commands:

```bash theme={null} theme={"theme":{"light":"github-light","dark":"github-dark"}}
npx libretto snapshot --session steel-demo
npx libretto exec --session steel-demo "await page.title()"
npx libretto close --session steel-demo
```

## Run a workflow

Run workflows normally when `provider` is set in `.libretto/config.json`:

```bash theme={null} theme={"theme":{"light":"github-light","dark":"github-dark"}}
npx libretto run ./workflow.ts --headless
```

Or pass the provider for a single run:

```bash theme={null} theme={"theme":{"light":"github-light","dark":"github-dark"}}
npx libretto run ./workflow.ts --provider steel --headless
```

The workflow code does not need to change. Libretto creates the Steel browser session, connects to it over CDP, runs the workflow, and releases the provider session when the run finishes.

## When to use Steel

Choose Steel when you want a managed browser runtime and already use Steel for browser sessions. If you need to own the container runtime, scheduler, network, and secrets layer yourself, use [GCP](/alternative-providers/gcp) or [AWS](/alternative-providers/aws) instead.
