General Questions
What is OpenSteer?
What is OpenSteer?
- Description-based element targeting
- Automatic selector persistence
- Structured data extraction with schemas
- Native CUA agent support
- Local and cloud mode
How is OpenSteer different from Playwright or Puppeteer?
How is OpenSteer different from Playwright or Puppeteer?
- Description-based targeting: Use natural language instead of CSS selectors
- Automatic selector persistence: Selectors are saved and reused for deterministic replay
- LLM-powered resolution: AI resolves descriptions to selectors automatically
- Structured extraction: Extract data with typed schemas
- CUA agent support: Native integration with computer use agents
- Snapshot modes: Optimized HTML for action vs extraction workflows
What are the requirements?
What are the requirements?
- Node.js
>=20 - Playwright-compatible runtime environment
- API key for your model provider (for LLM resolve/extract)
Local vs Cloud Mode
What is the difference between local and cloud mode?
What is the difference between local and cloud mode?
- Runs browser on your machine
- Full control over browser environment
- Supports file uploads, cookie import/export
- Uses your model provider API keys (OpenAI, Anthropic, etc.)
- Runs browser on OpenSteer’s infrastructure
- Scalable and managed
- Requires OpenSteer API key
- Fail-fast (no automatic fallback to local)
- Does not support
uploadFile(),exportCookies(),importCookies()
How do I enable cloud mode?
How do I enable cloud mode?
OPENSTEER_BASE_URL- Override default cloud hostOPENSTEER_AUTH_SCHEME- Useapi-key(default) orbearer
Does cloud mode fall back to local mode?
Does cloud mode fall back to local mode?
Selector Persistence
How does selector persistence work?
How does selector persistence work?
- First tries to reuse a persisted selector from previous runs
- Falls back to snapshot counter (
elementparameter) - Falls back to explicit CSS selector (
selectorparameter) - Uses LLM resolution if needed
- Saves the resolved selector to
.opensteer/selectors/<namespace>/
Where are selectors stored?
Where are selectors stored?
.opensteer/selectors/<namespace>/ relative to your project root.The namespace is determined by the name parameter:Can I clear selector cache?
Can I clear selector cache?
.opensteer/selectors/<namespace>/ directory:What happens if the page structure changes?
What happens if the page structure changes?
- Try the saved selector
- Fail to find the element
- Fall back to LLM resolution
- Update the cached selector with the new one
AI Agent Integration
How do I integrate OpenSteer with AI agents?
How do I integrate OpenSteer with AI agents?
- Use OpenSteer APIs instead of raw Playwright calls
- Keep namespace consistent (SDK
name= CLI--name) - Take
snapshot({ mode: "action" })before actions - Take
snapshot({ mode: "extraction" })before extraction - Prefer
descriptiontargeting for persistence - Always wrap in
try/finallyand callclose()
What are OpenSteer skills?
What are OpenSteer skills?
opensteer- Core OpenSteer integrationelectron- Electron app automation
What is CUA agent support?
What is CUA agent support?
openai, anthropic, googleWhat snapshot mode should I use?
What snapshot mode should I use?
mode: "action"):- For interaction planning
- Includes
c="..."counters on interactive elements - Use before
click(),input(),select(), etc.
mode: "extraction"):- For data gathering
- Optimized for content structure
- Use before
extract()
Browser Setup
How do I install browser binaries?
How do I install browser binaries?
Can I use a different browser?
Can I use a different browser?
How do I run in headless mode?
How do I run in headless mode?
headless: true when launching:Troubleshooting
Element not found errors
Element not found errors
- Take a snapshot and verify the element exists:
- Check if the element counter is correct
- Clear selector cache if page structure changed:
- Provide a more specific description
LLM resolution failing
LLM resolution failing
- Verify your API key is set:
- Check that the model is configured:
- Verify the description is clear and specific
- Take a snapshot to ensure the element is present
Timeout errors
Timeout errors
- Increase the timeout:
- Wait for the page to load completely before interacting:
- Check if the element is blocked by overlays or modals
Cloud mode not working
Cloud mode not working
- Verify your API key:
- Check the mode is set:
- Verify you’re not using local-only features:
uploadFile()exportCookies()importCookies()Opensteer.from(page)
- Check OpenSteer service status
Session routing errors (CLI)
Session routing errors (CLI)
- For interactive use, open a session first:
- For non-interactive use, set session explicitly:
- Verify session is active:
Environment Variables
What environment variables does OpenSteer use?
What environment variables does OpenSteer use?
OPENSTEER_MODEL- LLM model (default:gpt-5.1)
OPENSTEER_MODE- Set tolocalorcloud(default:local)OPENSTEER_API_KEY- Your OpenSteer API keyOPENSTEER_BASE_URL- Override cloud hostOPENSTEER_AUTH_SCHEME-api-key(default) orbearer
OPENSTEER_SESSION- Session identifier for CLIOPENSTEER_CLIENT_ID- Client-scoped default session
OPENSTEER_DISABLE_DOTENV_AUTOLOAD- Disable automatic.envloading
Does OpenSteer load .env files automatically?
Does OpenSteer load .env files automatically?
.env files from storage.rootDir (default process.cwd()) in this order:.env.<NODE_ENV>.local.env.local(skipped whenNODE_ENV=test).env.<NODE_ENV>.env
process.env values are never overwritten.To disable: