Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Browser automation for AI agents via inference.sh. Navigate web pages, interact with elements using @e refs, take screenshots, record video. Capabilities: we...
Browser automation for AI agents via inference.sh. Navigate web pages, interact with elements using @e refs, take screenshots, record video. Capabilities: we...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Browser automation for AI agents via inference.sh. Uses Playwright under the hood with a simple @e ref system for element interaction.
# Install CLI curl -fsSL https://cli.inference.sh | sh && infsh login # Open a page and get interactive elements infsh app run agent-browser --function open --input '{"url": "https://example.com"}' --session new Install note: The install script only detects your OS/architecture, downloads the matching binary from dist.inference.sh, and verifies its SHA-256 checksum. No elevated permissions or background processes. Manual install & verification available.
Every browser automation follows this pattern: Open - Navigate to URL, get @e refs for elements Interact - Use refs to click, fill, drag, etc. Re-snapshot - After navigation/changes, get fresh refs Close - End session (returns video if recording) # 1. Start session RESULT=$(infsh app run agent-browser --function open --session new --input '{ "url": "https://example.com/login" }') SESSION_ID=$(echo $RESULT | jq -r '.session_id') # Elements: @e1 [input] "Email", @e2 [input] "Password", @e3 [button] "Sign In" # 2. Fill and submit infsh app run agent-browser --function interact --session $SESSION_ID --input '{ "action": "fill", "ref": "@e1", "text": "user@example.com" }' infsh app run agent-browser --function interact --session $SESSION_ID --input '{ "action": "fill", "ref": "@e2", "text": "password123" }' infsh app run agent-browser --function interact --session $SESSION_ID --input '{ "action": "click", "ref": "@e3" }' # 3. Re-snapshot after navigation infsh app run agent-browser --function snapshot --session $SESSION_ID --input '{}' # 4. Close when done infsh app run agent-browser --function close --session $SESSION_ID --input '{}'
FunctionDescriptionopenNavigate to URL, configure browser (viewport, proxy, video recording)snapshotRe-fetch page state with @e refs after DOM changesinteractPerform actions using @e refs (click, fill, drag, upload, etc.)screenshotTake page screenshot (viewport or full page)executeRun JavaScript code on the pagecloseClose session, returns video if recording was enabled
ActionDescriptionRequired FieldsclickClick elementrefdblclickDouble-click elementreffillClear and type textref, texttypeType text (no clear)textpressPress key (Enter, Tab, etc.)textselectSelect dropdown optionref, texthoverHover over elementrefcheckCheck checkboxrefuncheckUncheck checkboxrefdragDrag and dropref, target_refuploadUpload file(s)ref, file_pathsscrollScroll pagedirection (up/down/left/right), scroll_amountbackGo back in history-waitWait millisecondswait_msgotoNavigate to URLurl
Elements are returned with @e refs: @e1 [a] "Home" href="/" @e2 [input type="text"] placeholder="Search" @e3 [button] "Submit" @e4 [select] "Choose option" @e5 [input type="checkbox"] name="agree" Important: Refs are invalidated after navigation. Always re-snapshot after: Clicking links/buttons that navigate Form submissions Dynamic content loading
Record browser sessions for debugging or documentation: # Start with recording enabled (optionally show cursor indicator) SESSION=$(infsh app run agent-browser --function open --session new --input '{ "url": "https://example.com", "record_video": true, "show_cursor": true }' | jq -r '.session_id') # ... perform actions ... # Close to get the video file infsh app run agent-browser --function close --session $SESSION --input '{}' # Returns: {"success": true, "video": <File>}
Show a visible cursor in screenshots and video (useful for demos): infsh app run agent-browser --function open --session new --input '{ "url": "https://example.com", "show_cursor": true, "record_video": true }' The cursor appears as a red dot that follows mouse movements and shows click feedback.
Route traffic through a proxy server: infsh app run agent-browser --function open --session new --input '{ "url": "https://example.com", "proxy_url": "http://proxy.example.com:8080", "proxy_username": "user", "proxy_password": "pass" }'
Upload files to file inputs: infsh app run agent-browser --function interact --session $SESSION --input '{ "action": "upload", "ref": "@e5", "file_paths": ["/path/to/file.pdf"] }'
Drag elements to targets: infsh app run agent-browser --function interact --session $SESSION --input '{ "action": "drag", "ref": "@e1", "target_ref": "@e2" }'
Run custom JavaScript: infsh app run agent-browser --function execute --session $SESSION --input '{ "code": "document.querySelectorAll(\"h2\").length" }' # Returns: {"result": "5", "screenshot": <File>}
ReferenceDescriptionreferences/commands.mdFull function reference with all optionsreferences/snapshot-refs.mdRef lifecycle, invalidation rules, troubleshootingreferences/session-management.mdSession persistence, parallel sessionsreferences/authentication.mdLogin flows, OAuth, 2FA handlingreferences/video-recording.mdRecording workflows for debuggingreferences/proxy-support.mdProxy configuration, geo-testing
TemplateDescriptiontemplates/form-automation.shForm filling with validationtemplates/authenticated-session.shLogin once, reuse sessiontemplates/capture-workflow.shContent extraction with screenshots
SESSION=$(infsh app run agent-browser --function open --session new --input '{ "url": "https://example.com/contact" }' | jq -r '.session_id') # Get elements: @e1 [input] "Name", @e2 [input] "Email", @e3 [textarea], @e4 [button] "Send" infsh app run agent-browser --function interact --session $SESSION --input '{"action": "fill", "ref": "@e1", "text": "John Doe"}' infsh app run agent-browser --function interact --session $SESSION --input '{"action": "fill", "ref": "@e2", "text": "john@example.com"}' infsh app run agent-browser --function interact --session $SESSION --input '{"action": "fill", "ref": "@e3", "text": "Hello!"}' infsh app run agent-browser --function interact --session $SESSION --input '{"action": "click", "ref": "@e4"}' infsh app run agent-browser --function snapshot --session $SESSION --input '{}' infsh app run agent-browser --function close --session $SESSION --input '{}'
SESSION=$(infsh app run agent-browser --function open --session new --input '{ "url": "https://google.com" }' | jq -r '.session_id') infsh app run agent-browser --function interact --session $SESSION --input '{"action": "fill", "ref": "@e1", "text": "weather today"}' infsh app run agent-browser --function interact --session $SESSION --input '{"action": "press", "text": "Enter"}' infsh app run agent-browser --function interact --session $SESSION --input '{"action": "wait", "wait_ms": 2000}' infsh app run agent-browser --function snapshot --session $SESSION --input '{}' infsh app run agent-browser --function close --session $SESSION --input '{}'
SESSION=$(infsh app run agent-browser --function open --session new --input '{ "url": "https://example.com", "record_video": true }' | jq -r '.session_id') # Take full page screenshot infsh app run agent-browser --function screenshot --session $SESSION --input '{ "full_page": true }' # Close and get video RESULT=$(infsh app run agent-browser --function close --session $SESSION --input '{}') echo $RESULT | jq '.video'
Browser state persists within a session. Always: Start with --session new on first call Use returned session_id for subsequent calls Close session when done
# Web search (for research + browse) npx skills add inference-sh/skills@web-search # LLM models (analyze extracted content) npx skills add inference-sh/skills@llm-models
inference.sh Sessions - Session management Multi-function Apps - How functions work
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.