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

What Is OpenSteer? Browser Automation for AI Agents

Understand how OpenSteer helps AI agents automate browsers with deterministic replay, resilient selectors, and local or cloud execution.

Quick Answer

OpenSteer is a browser automation framework for AI agents that keeps local and cloud execution under one action model with deterministic replay.

OpenSteer is a browser automation framework for coding agents and deterministic replay. It provides a unified surface for local Playwright execution and cloud-backed execution with the same high-level action model.

Requirements

  • Node.js >=20
  • Playwright-supported browser runtime
  • Model provider API key for LLM-powered resolution/extraction/CUA

If browser binaries are missing:

npx playwright install chromium

Install

Main setup (recommended):

npm i -g opensteer
opensteer skills install

SDK package (when importing Opensteer in app code):

# npm
npm install opensteer

# pnpm
pnpm add opensteer

# bun
bun add opensteer

Resolution and Replay

For descriptor-aware actions (click, input, hover, select, scroll):

  1. Reuse persisted selector path from description
  2. Try snapshot counter (element)
  3. Try explicit CSS selector (selector)
  4. Use LLM resolution (description required)
  5. Return actionable error

When step 2-4 succeeds and description is present, selector paths are cached in .opensteer/selectors/<namespace> for deterministic replay.

Cloud Mode

Opensteer defaults to local mode. Enable cloud mode with env or constructor options:

OPENSTEER_MODE=cloud
OPENSTEER_API_KEY=<your_api_key>
  • Interactive CLI login:
opensteer auth login
opensteer auth status
opensteer auth logout
  • opensteer auth login opens your default browser when possible. Use --no-browser on remote shells, containers, or CI and paste the printed URL into a browser manually. In --json mode, login prompts go to stderr and the final JSON result stays on stdout.

  • Saved machine logins remain scoped per resolved cloud API host (baseUrl). The CLI also remembers the last selected cloud host, so opensteer auth status, opensteer auth logout, and other cloud commands reuse it by default unless --base-url or env vars select a different host.

  • OPENSTEER_BASE_URL overrides the default cloud host

  • OPENSTEER_ACCESS_TOKEN provides bearer auth for cloud commands

  • OPENSTEER_AUTH_SCHEME supports api-key (default) or bearer

  • Credential precedence: explicit flags > environment variables > saved machine login

  • OPENSTEER_CLOUD_PROFILE_ID optionally launches into a specific cloud browser profile

  • OPENSTEER_CLOUD_PROFILE_REUSE_IF_ACTIVE (true|false) optionally reuses an active profile session

  • cloud: true or a cloud options object overrides OPENSTEER_MODE

  • Cloud mode is fail-fast (no automatic fallback to local)

  • Opensteer.from(page), uploadFile, exportCookies, and importCookies are local-only

Select a cloud browser profile in SDK:

const opensteer = new Opensteer({
  cloud: {
    accessToken: process.env.OPENSTEER_ACCESS_TOKEN,
    browserProfile: {
      profileId: "bp_123",
      reuseIfActive: true,
    },
  },
});

Sync local profile cookies into a cloud profile:

opensteer profile sync \
  --from-profile-dir ~/Library/Application\ Support/Google/Chrome/Default \
  --to-profile-id bp_123 \
  --domain github.com

Covered Features

  • sdk:click
  • sdk:goto
  • sdk:launch
  • sdk:snapshot