Agent Runtime
Status: Connected
Parsing documentation...
Extracted api references
Generating type definitions...
opensteeropensteer
Y Combinator logoBacked by Y Combinator.

The most comprehensive browser automation framework for AI

Enterprise-grade automation at scale.

Custom plans, unlimited concurrent sessions, dedicated proxies, and advanced support for teams that need more.

+ self-service sso
+ unlimited concurrent sessions
+ custom audit logs
+ advanced captcha bypass
+ dedicated support
view pricing

Simple, transparent pricing.

Start for free, upgrade when you need to scale. Everything you need to build robust AI agents.

Introduction

Introduction

Browser automation framework for AI agents.

Introduction

OpenSteer is a browser automation framework for AI agents with deterministic replay.

Install

# npm
npm install opensteer

# pnpm
pnpm add opensteer

# bun
bun add opensteer

Requirements

  • Node.js >= 20
  • Playwright-supported browser (Chromium, Firefox, WebKit)
  • API key for LLM features (CUA agent, structured extraction)

What it does

  • Unified local/cloud execution — same API surface, swap with a flag.
  • Descriptor-aware actions with replay — interact by description, cache selectors for deterministic re-runs.
  • Structured data extraction — pull typed data from pages using schemas.
  • CUA agent support — delegate multi-step browser tasks to an LLM agent.

Core workflow

import { Opensteer } from 'opensteer'

const opensteer = new Opensteer({ name: 'demo' })

try {
  // Launch a browser session
  await opensteer.launch()

  // Navigate
  await opensteer.goto('https://example.com')

  // Snapshot for action context
  await opensteer.snapshot({ mode: 'action' })

  // Interact by description
  await opensteer.click({ description: 'more-info-link' })

  // Snapshot for extraction context
  await opensteer.snapshot({ mode: 'extraction' })

  // Extract structured data
  const data = await opensteer.extract({
    description: 'page-heading',
    schema: { title: 'string', href: 'string' },
  })
  console.log(data)
} finally {
  await opensteer.close()
}

Runs locally by default. Pass cloud: true (or set OPENSTEER_MODE=cloud) for cloud execution.