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):
- Reuse persisted selector path from
description - Try snapshot counter (
element) - Try explicit CSS selector (
selector) - Use LLM resolution (
descriptionrequired) - 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 loginopens your default browser when possible. Use--no-browseron remote shells, containers, or CI and paste the printed URL into a browser manually. In--jsonmode, 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, soopensteer auth status,opensteer auth logout, and other cloud commands reuse it by default unless--base-urlor env vars select a different host. -
OPENSTEER_BASE_URLoverrides the default cloud host -
OPENSTEER_ACCESS_TOKENprovides bearer auth for cloud commands -
OPENSTEER_AUTH_SCHEMEsupportsapi-key(default) orbearer -
Credential precedence: explicit flags > environment variables > saved machine login
-
OPENSTEER_CLOUD_PROFILE_IDoptionally launches into a specific cloud browser profile -
OPENSTEER_CLOUD_PROFILE_REUSE_IF_ACTIVE(true|false) optionally reuses an active profile session -
cloud: trueor acloudoptions object overridesOPENSTEER_MODE -
Cloud mode is fail-fast (no automatic fallback to local)
-
Opensteer.from(page),uploadFile,exportCookies, andimportCookiesare 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:clicksdk:gotosdk:launchsdk:snapshot
