---
site: steel.dev
collection: blog
canonical_url: https://steel.dev/blog/rust-go-sdks
markdown_url: https://steel.dev/blog/rust-go-sdks.md
content_signal: ai-input=yes, ai-train=yes, search=yes
related:
  - https://steel.dev/blog/notte-on-steel.md
  - https://steel.dev/blog/steel-vs-kernel.md
  - https://steel.dev/blog/remote-browser-benchmark.md
title: Steel Speaks Rust and Go
description: "Native Rust and Go SDKs for Steel: drive the browser and the computer from the stacks where agent infrastructure already runs."
date: 2026-06-24
authors:
  - JunHyoung Ryu
category: Product
launch_week: v3
minutes: 3
tldr: Steel shipped native Rust and Go SDKs as typed API clients for sessions, profiles, credentials, files, extensions, screenshots, scraping, PDFs and the computer endpoint. They create and release sessions and hand the WebSocket URL to CDP tools such as chromiumoxide, chromedp or rod. Cookbook examples ship alongside.
topics:
  - Rust SDK
  - Go SDK
  - Browser session lifecycle
  - CDP automation
  - Computer use agents
  - Agent frameworks
entities:
  - Steel
  - Rust
  - Go
  - chromiumoxide
  - chromedp
  - rod
  - Playwright
  - headless_chrome
  - Genkit
  - Eino
  - LangChainGo
  - Google ADK
  - MCP
  - Rig
  - Swiftide
  - steel-rs
answers_questions:
  - Does Steel have a Rust SDK?
  - Does Steel have a Go SDK?
  - How do I create and release a Steel session from Rust or Go?
  - Which CDP libraries work with the Steel Rust and Go SDKs?
  - What do the Steel Rust and Go SDKs cover?
---

# Steel Speaks Rust and Go

> Launch Week v3 -> Day 03 / 05

A lot of agent infrastructure is written in Rust and Go: edge runtimes, orchestration layers, services where latency matters, the backend jobs that have to run again tomorrow. Until now, if you lived in that world, you had to maintain your own bindings against the Steel API.

Not anymore. Steel now has **native Rust and Go SDKs.**

This is where Launch Week v3 has been heading: [Stealth Browser ](https://steel.dev/blog/stealth-browser)for the runtime, [Dedicated IPs](https://steel.dev/blog/dedicated-ips) for stable network identity, and now Rust and Go SDKs for the services doing the work.

## Why we built native SDKs

We felt the gap ourselves. We rewrote [our own CLI ](https://steel.dev/blog/steel-cli-and-agent-skill)in Rust, and we kept running into the same thing our customers did: Rust and Go both have real browser tooling, *chromiumoxide* on the Rust side and *chromedp* or *rod* on the Go side, but there was no Steel client for either. So we built both.

![](https://steel.dev/assets/framerusercontent.com/images/QMziEa5muy2w5s18ajX4atP28.png)

## How the SDKs work

The latest Rust and Go SDKs are typed API clients for Steel. They cover the resources a workload usually needs: sessions, profiles, credentials, files, extensions, screenshots, scraping, PDFs, and the session computer endpoint.

![](https://steel.dev/assets/framerusercontent.com/images/23ruAutD9Q1EDnotHXDCfxTS7g.png)

The SDK handles the Steel side of the loop. Create a Steel session from Rust or Go, set profile and proxy options in the same client, then pass the returned WebSocket URL to the CDP tool you already use: chromiumoxide, chromedp, rod, or something else. When the run is done, release the session from that same SDK.

Both also plug into our computer API, so CUA agents can use OS-level actions through the same client.

In Rust, the session lifecycle stays in one client:

```rust
use steel::Steel;

let client = Steel::new(std::env::var("STEEL_API_KEY")?);
let session = client.sessions().create(steel::SessionCreateParams::default()).await?;

println!("CDP: {}", session.websocket_url);
client.sessions().release(&session.id, steel::SessionReleaseParams::default()).await?;
```

The Go version keeps the same shape, with context and explicit errors:

```go
client := steel.NewClient(os.Getenv("STEEL_API_KEY"))
session, err := client.Sessions.Create(ctx, steel.SessionCreateParams{})
if err != nil {
	return err
}

fmt.Println("CDP:", session.WebsocketURL)
_, err = client.Sessions.Release(ctx, session.ID, steel.SessionReleaseParams{})
```

Rust is async-first. Go is context-first. Both keep session, proxy, and response config typed. If you’ve used the TypeScript or Python SDK, the loop will feel familiar. It does not cover every helper yet; v1 is about creating sessions, configuring them, handing off the CDP URL, and releasing them without leaving Rust or Go.

## Cookbook examples are live

We also shipped the examples around the SDKs, because the client alone is not where the integration work ends.

### Browser automation

These show the handoff from a Steel session to the CDP tool, then release the session from the SDK.

- [chromedp](https://docs.steel.dev/cookbook/chromedp) in Go
- [rod](https://docs.steel.dev/cookbook/rod) in Go
- [Playwright](https://docs.steel.dev/cookbook/playwright#go) in Go
- [chromiumoxide](https://docs.steel.dev/cookbook/chromiumoxide) in Rust
- [headless_chrome](https://docs.steel.dev/cookbook/headless-chrome) in Rust

### Direct Steel APIs

These cover the parts people usually had to wrap themselves: logged-in state, credential fill, extension attachment, file upload, screenshot, PDF, and scrape.

- scrape in [Rust](https://docs.steel.dev/cookbook/scrape#rust) and [Go](https://docs.steel.dev/cookbook/scrape#go)
- profiles in [Rust](https://docs.steel.dev/cookbook/profiles#rust) and [Go](https://docs.steel.dev/cookbook/profiles#go)
- auth context in [Rust](https://docs.steel.dev/cookbook/auth-context#rust) and [Go](https://docs.steel.dev/cookbook/auth-context#go)
- credentials in [Rust](https://docs.steel.dev/cookbook/credentials#rust) and [Go](https://docs.steel.dev/cookbook/credentials#go)
- extensions in [Rust](https://docs.steel.dev/cookbook/extensions#rust) and [Go](https://docs.steel.dev/cookbook/extensions#go)
- files in [Rust](https://docs.steel.dev/cookbook/files#rust) and [Go](https://docs.steel.dev/cookbook/files#go)

### Agent frameworks

- [Genkit](https://docs.steel.dev/cookbook/genkit) in Go
- [Eino](https://docs.steel.dev/cookbook/eino) in Go
- [LangChainGo](https://docs.steel.dev/cookbook/langchaingo) in Go
- [Google ADK](https://docs.steel.dev/cookbook/google-adk#go) in Go
- MCP in [Rust](https://github.com/steel-dev/steel-cookbook/tree/main/examples/mcp-rs) and [Go](https://github.com/steel-dev/steel-cookbook/tree/main/examples/mcp-go)
- [Rig](https://docs.steel.dev/cookbook/rig) in Rust
- [Swiftide](https://docs.steel.dev/cookbook/swiftide) in Rust

### Computer use

- Claude in [Rust](https://docs.steel.dev/cookbook/claude-computer-use#rust) and [Go](https://docs.steel.dev/cookbook/claude-computer-use#go)
- OpenAI in [Rust](https://docs.steel.dev/cookbook/openai-computer-use#rust) and [Go](https://docs.steel.dev/cookbook/openai-computer-use#go)
- Gemini in [Rust](https://docs.steel.dev/cookbook/gemini-computer-use#rust) and [Go](https://docs.steel.dev/cookbook/gemini-computer-use#go)

## Get started

- Rust package: [steel-rs on crates.io](https://crates.io/crates/steel-rs)
- Rust source: [github.com/steel-dev/steel-rust](https://github.com/steel-dev/steel-rust)
- Go package: [github.com/steel-dev/steel-go on pkg.go.dev](https://pkg.go.dev/github.com/steel-dev/steel-go)
- Go source: [github.com/steel-dev/steel-go](https://github.com/steel-dev/steel-go)
- Cookbook: [docs.steel.dev/cookbook](https://docs.steel.dev/cookbook)

Try the loop in the stack you already ship, then tell us which language support or helper surface you need next.

Questions? [Discord](https://discord.gg/steel-dev) or [@steeldotdev](https://x.com/steeldotdev).

> This post is Day 3 of Steel Launch Week v3. See the full week at [steel.dev/launch-week](https://steel.dev/blog/launch-week-v3-recap).

[Video on YouTube](https://www.youtube.com/watch?v=cZjEM5PFXJs)
