426e9eeabd
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
Chat shell gestures / Chat shell gesture + parity e2e (push) Has been cancelled
Cloud Gateway Discord / Test (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Has been cancelled
Build Agent Image / build-and-push (push) Has been cancelled
Dev Smoke / bun run dev onboarding chat (push) Has been cancelled
Dev Smoke / Vite HMR dependency-level smoke (push) Has been cancelled
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Has been cancelled
Publish @elizaos/example-code / check_npm (push) Has been cancelled
Publish @elizaos/example-code / publish_npm (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / verify_version (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / publish_npm (push) Has been cancelled
Sandbox Live Smoke / Sandbox live smoke (push) Has been cancelled
Snap Build & Test / Build Snap (amd64) (push) Has been cancelled
Snap Build & Test / Build Snap (arm64) (push) Has been cancelled
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Has been cancelled
Cloud Gateway Webhook / Test (push) Has been cancelled
Cloud Tests / lint-and-types (push) Has been cancelled
Cloud Tests / unit-tests (push) Has been cancelled
Cloud Tests / integration-tests (push) Has been cancelled
Cloud Tests / e2e-tests (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Apps Worker (Product 2) / Determine environment (push) Has been cancelled
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Has been cancelled
Deploy Eliza Provisioning Worker / Determine environment (push) Has been cancelled
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Has been cancelled
Dev Smoke / Classify changed paths (push) Has been cancelled
supply-chain / sbom (push) Has been cancelled
supply-chain / vulnerability-scan (push) Has been cancelled
Build, Push & Deploy to Phala Cloud / build-and-push (push) Has been cancelled
Test Packaging / Validate Packaging Configs (push) Has been cancelled
Test Packaging / Build & Test PyPI Package (push) Has been cancelled
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Has been cancelled
Test Packaging / Pack & Test JS Tarballs (push) Has been cancelled
UI Fixture E2E / ui-fixture-e2e (push) Has been cancelled
UI Fixture E2E / fixture-e2e (push) Has been cancelled
UI Story Gate / story-gate (push) Has been cancelled
vault-ci / test (macos-latest) (push) Has been cancelled
vault-ci / test (ubuntu-latest) (push) Has been cancelled
vault-ci / test (windows-latest) (push) Has been cancelled
vault-ci / app-core wiring tests (push) Has been cancelled
verify-patches / verify patches/CHECKSUMS.sha256 (push) Has been cancelled
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Has been cancelled
Voice Benchmark Smoke / voice bench smoke summary (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Has been cancelled
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Has been cancelled
132 lines
5.1 KiB
Markdown
132 lines
5.1 KiB
Markdown
# @elizaos/plugin-browser
|
|
|
|
Browser automation and companion bridge plugin for elizaOS. Adds the `BROWSER` action and `MANAGE_BROWSER_BRIDGE` action to any Eliza agent, owns the Eliza browser workspace (electrobun-embedded `BrowserView` on desktop, JSDOM fallback on web/mobile), and manages the Chrome/Safari Agent Browser Bridge companion extension.
|
|
|
|
## What this plugin provides
|
|
|
|
### Actions
|
|
|
|
**BROWSER** — Controls a registered browser target. The agent picks the best available backend automatically, or you can pin a specific target with the `target` parameter. Supported operations:
|
|
|
|
| `action` value | What it does |
|
|
|---|---|
|
|
| `open` | Open a URL in a new tab |
|
|
| `navigate` | Navigate an existing tab to a URL |
|
|
| `click` | Click a DOM element by CSS selector |
|
|
| `type` | Type text into a selector |
|
|
| `press` | Press a keyboard key |
|
|
| `get` | Get a DOM value |
|
|
| `state` | Return current tab state (URL, title) |
|
|
| `snapshot` | Capture a DOM snapshot |
|
|
| `screenshot` | Capture a screenshot |
|
|
| `reload` | Reload the current tab |
|
|
| `back` / `forward` | Browser history navigation |
|
|
| `close` | Close a tab |
|
|
| `show` / `hide` | Show or hide the browser window |
|
|
| `wait` | Wait for a selector to appear |
|
|
| `tab` | Tab management (list/new/close/switch) |
|
|
| `realistic_click` | Animated cursor click (visible to user) |
|
|
| `realistic_fill` | Animated fill with per-character delay |
|
|
| `realistic_type` | Animated typing |
|
|
| `realistic_press` | Animated key press |
|
|
| `cursor_move` | Animate cursor to a position |
|
|
| `cursor_hide` | Hide the cursor overlay |
|
|
| `autofill_login` | Fill saved credentials into a browser tab (vault-gated; requires `domain`) |
|
|
|
|
**MANAGE_BROWSER_BRIDGE** — Manages the Chrome/Safari companion extension. Subactions: `install` (build + reveal + open manager), `reveal_folder` (open the build folder in Finder/Explorer), `open_manager` (`chrome://extensions`), `refresh` (report paired companions and settings). Owner-only.
|
|
|
|
### Browser targets
|
|
|
|
The plugin uses a pluggable target registry in `BrowserService`. Targets are selected automatically by availability and score:
|
|
|
|
| Target ID | Backend | When available |
|
|
|---|---|---|
|
|
| `workspace` | Electrobun `BrowserView` (desktop) or JSDOM (web) | Always |
|
|
| `bridge` | Paired Chrome/Safari via companion extension | At least one companion paired |
|
|
| `stagehand` | Playwright/Stagehand via HTTP endpoint | `ELIZA_BROWSER_STAGEHAND_COMMAND_URL` or `STAGEHAND_SERVER_URL` set |
|
|
|
|
External plugins can register additional targets by calling `BrowserService.registerTarget(target)`.
|
|
|
|
### Provider
|
|
|
|
`browser_workspace` — Injects the current dispatch mode (`desktop` / `web`) and a capped list of open tabs into agent context. Active when the `browser` or `web` context is selected.
|
|
|
|
### Routes
|
|
|
|
`/api/browser-bridge/*` — HTTP surface for the companion extension: pairing, settings, tab sync, page-context ingest, session progress, and extension package build/download.
|
|
|
|
## Requirements
|
|
|
|
### Auto-enable
|
|
|
|
The plugin is opt-in. It activates when `config.features.browser` is truthy in the elizaOS agent config:
|
|
|
|
```json
|
|
{
|
|
"features": {
|
|
"browser": true
|
|
}
|
|
}
|
|
```
|
|
|
|
### Environment variables
|
|
|
|
| Variable | Purpose |
|
|
|---|---|
|
|
| `ELIZA_BROWSER_STAGEHAND_COMMAND_URL` | Full URL for the Stagehand command endpoint |
|
|
| `STAGEHAND_SERVER_URL` | Stagehand base URL (commands go to `<url>/api/browser-command`) |
|
|
| `ELIZA_BROWSER_STAGEHAND_URL` | Alias for `STAGEHAND_SERVER_URL` |
|
|
| `ELIZA_BROWSER_STAGEHAND_AUTO_SETUP` | Set `false` to disable automatic stagehand-server install/build |
|
|
| `ELIZA_BROWSER_ALLOW_STAGEHAND_ON_MOBILE` | Set `true` to allow stagehand target on mobile |
|
|
| `ELIZA_MOBILE_PLATFORM` / `ELIZA_PLATFORM` / `CAPACITOR_PLATFORM` | Platform hint for target scoring (`ios`/`android`/`mobile`) |
|
|
|
|
### Vault keys (set by the user, not env vars)
|
|
|
|
`autofill_login` only fires when the user has pre-authorized it per domain:
|
|
|
|
- `creds.<domain>.:autoallow = "1"` — set via Settings → Vault → Logins.
|
|
|
|
Without this flag, the action returns an error rather than prompting interactively.
|
|
|
|
## Companion extension authentication
|
|
|
|
Companion-scoped endpoints require two headers:
|
|
|
|
```
|
|
X-Browser-Bridge-Companion-Id: <companion uuid>
|
|
Authorization: Bearer <pairing token>
|
|
```
|
|
|
|
Legacy header aliases (`X-LifeOps-Browser-Companion-Id`, `x-eliza-browser-companion-id`) are not accepted.
|
|
|
|
## Database
|
|
|
|
Drizzle tables in the `browser` PostgreSQL schema (applied by elizaOS `plugin-sql` migrator):
|
|
|
|
- `browser_bridge_companions`
|
|
- `browser_bridge_settings`
|
|
- `browser_bridge_tabs`
|
|
- `browser_bridge_page_contexts`
|
|
|
|
## Registering a custom browser target
|
|
|
|
Any plugin can extend the browser dispatch surface at runtime:
|
|
|
|
```ts
|
|
import { BrowserService, BROWSER_SERVICE_TYPE } from "@elizaos/plugin-browser";
|
|
import type { BrowserTarget } from "@elizaos/plugin-browser";
|
|
|
|
const myTarget: BrowserTarget = {
|
|
id: "my-target",
|
|
name: "My Browser",
|
|
description: "Custom browser backend.",
|
|
kind: "external",
|
|
priority: 50,
|
|
available: async () => true,
|
|
execute: async (command) => { /* ... */ },
|
|
};
|
|
|
|
const browserService = runtime.getService<BrowserService>(BROWSER_SERVICE_TYPE);
|
|
browserService?.registerTarget(myTarget);
|
|
```
|