SkillAgentSearch skills...

Rover

Turn any web interface into an AI agent — for humans and machines. Open-source, DOM-native SDK. Sub-second actions, no screenshots, no VMs. Websites, Chrome extensions, Electron apps, and more.

Install / Use

/learn @rtrvr-ai/Rover

README

Rover

CI npm License: FSL-1.1-Apache-2.0 Discord GitHub stars

Turn any website into an AI-native interface, for users, AI apps, CLIs, and autonomous agents.

Rover is the DOM-native execution engine. It reads the live page, plans the next action, and executes directly in the browser. No screenshots, no VMs, no RAG glue.

RoverBook now ships as the AX layer on top of Rover:

  • agent analytics and visit replays
  • agent reviews and interviews
  • agent memory and discussion threads
  • experiment exposures tied to real task outcomes
  • tiered agent identity attribution for repeat visits and grouping

One product, two planes:

  • Runtime plane: Rover executes tasks in the browser
  • Owner plane: Rover Workspace configures the site and reads RoverBook analytics

Why Rover?

| | Chatbots | Screenshot agents | Rover | |---|---|---|---| | Task completion | Links only | Slow, remote | Native speed, in-browser | | Reads DOM | No | Vision/pixels | Direct DOM + a11y tree | | Latency | N/A | Seconds per action | Milliseconds | | Infrastructure | Iframe/server | Remote VM | Zero, runs in-browser | | AI / agent access | No | No | POST /v1/tasks, handoffs, WebMCP | | Open Source | Varies | No | FSL-1.1-Apache-2.0 |

For websites

Drop in Rover and users get an assistant that can actually use the page.

For AI agents

Rover exposes machine-readable task resources at POST https://agent.rtrvr.ai/v1/tasks, delegated handoffs, workflow lineage, and optional WebMCP task/tools discovery.

For site owners

Rover Workspace now owns both setup and AX analytics:

  • sites
  • setup
  • overview
  • analytics
  • trajectories
  • reviews
  • interviews
  • board
  • memory

For any DOM interface

The same core runtime works in websites, Chrome extensions, Electron apps, and other browser-like webviews.


Quick Start

Script tag

<script type="application/agent+json">{"task":"https://agent.rtrvr.ai/v1/tasks"}</script>
<script>
  (function () {
    var r = window.rover = window.rover || function () {
      (r.q = r.q || []).push(arguments);
    };
    r.l = +new Date();
  })();

  rover('boot', {
    siteId: 'YOUR_SITE_ID',
    publicKey: 'pk_site_YOUR_PUBLIC_KEY',
    siteKeyId: 'YOUR_SITE_KEY_ID',
    allowedDomains: ['yourdomain.com'],
    domainScopeMode: 'registrable_domain',
    apiBase: 'https://agent.rtrvr.ai',
  });
</script>
<script src="https://rover.rtrvr.ai/embed.js?v=YOUR_SITE_KEY_ID" async></script>

Get your siteId, publicKey, and optional siteKeyId from Workspace:

  • https://rover.rtrvr.ai/workspace
  • https://www.rtrvr.ai/rover/workspace

For production installs, copy the Workspace-generated snippet rather than hand-assembling it. When RoverBook is enabled for a site, Workspace emits:

  • embed.js
  • roverbook.js
  • the inline attach block that calls enableRoverBook(...) with the correct per-site config

Workspace site mode now controls whether the generated snippet is:

  • Full Rover agent: action-capable Rover runtime
  • RoverBook analytics-only: RoverBook enabled with action tools disabled

Script-tag installs do not need a custom identityResolver to attribute Rover-managed traffic. The primary identity path comes from task and session attribution.

Domain scope cheat sheet:

  • allowedDomains: ['example.com'] with registrable_domain allows example.com and subdomains
  • allowedDomains: ['*.example.com'] allows subdomains only, not the apex host
  • host_only makes plain entries exact-host only

npm

pnpm add @rtrvr-ai/rover @rover/roverbook
import { boot } from "@rtrvr-ai/rover";
import { enableRoverBook } from "@rover/roverbook";

const rover = boot({
  siteId: "YOUR_SITE_ID",
  publicKey: "pk_site_YOUR_PUBLIC_KEY",
  allowedDomains: ["yourdomain.com"],
  domainScopeMode: "registrable_domain",
});

enableRoverBook(rover, {
  siteId: "YOUR_SITE_ID",
  apiBase: "https://roverbook.rtrvr.ai",
  memory: {
    sharedAccess: "read_shared",
  },
  interviews: {
    questions: [
      "What was the hardest part of this task?",
      "What would you change about this site for agents?",
    ],
  },
  webmcp: {
    advertiseDelegatedHandoffs: true,
  },
});

Use npm when you want:

  • typed SDK access
  • SPA lifecycle control
  • SSR guards and framework-specific mounting
  • advanced RoverBook fallback logic such as identityResolver

See packages/sdk/README.md for the full SDK surface, and packages/roverbook/README.md for RoverBook package behavior.


Instant Preview & Preview Clients

Rover supports a preview-first workflow before a production install.

Before you try Rover on other sites, get your site config from Workspace.

There are two config sources:

  • Workspace production config: persistent siteId, publicKey, and optional siteKeyId for a live site install.
  • Hosted preview handoff config: short-lived preview identifiers and runtime session tokens created by the hosted preview control plane.

Path matrix

| Path | What you need | Best for | Persistence | Mobile | Managed by | |---|---|---|---|---|---| | Hosted Preview | Signed-in URL + prompt | Rover-managed demos | Temporary preview session (12-minute max) | Best fallback | Rover | | Preview Helper | Workspace test config JSON or hosted handoff | Multi-page desktop demos | Re-injects after reloads/navigation | No | Workspace or Rover | | Console | Workspace test config JSON + generated snippet | Fast DevTools demos | Current page only | No | Workspace | | Bookmarklet | Workspace test config JSON + generated bookmarklet | Drag-and-click demos | Current page only | Weak | Workspace | | Production install | Workspace install snippet | Real site install | Persistent site config | Yes | Workspace |

Notes:

  • Hosted Preview needs no Workspace config. Rover creates temporary preview state for you.
  • Hosted Preview is owned by the signed-in tester who creates it. The temporary runtime session is minted under that tester's uid, and Hosted Preview consumes that tester's credits.
  • Hosted Preview now boots Rover inside the hosted page itself. The hosted browser is not just a remote shell; Rover injects the preview bootstrap into that page and should reattach after top-level navigations.
  • Hosted Preview auto-runs the exact Live Test prompt inside that hosted page once Rover is ready. It is meant to feel like a Rover-managed version of ?rover=, but it does not depend on the target site already having Rover installed.
  • Hosted Preview has a hard 12-minute maximum aligned with /agent. Viewer heartbeats only refresh a short disconnect grace and do not extend the hard expiry.
  • Hosted Preview sends a best-effort close when the hosted viewer tab unloads. If that signal is missed, Rover should still close the hosted session shortly after the disconnect grace expires.
  • Hosted Preview now leases from the same shared browser pool as normal automation on that worker. With POOL_MAX_INSTANCES=1, Hosted Preview and /agent queue behind whichever side currently holds the browser.
  • Hosted Preview is sticky to one worker and one browser. If that owner dies or the lease expires, Rover should fail closed and tell you to recreate the temporary demo.
  • Hosted Preview does not try to recycle its browser after close, expiry, or failure. Rover destroys that browser before the shared pool can hand capacity back to the next request.
  • Try on Other Sites starts in Workspace, then uses Helper / Console / Bookmarklet on arbitrary sites.
  • Production install is the Workspace snippet on your real site, not the same thing as generic testing on other sites.
  • Installed-site deep links like ?rover= remain the real site-owned/browser-first path. Hosted Preview stays separate from that billing and site-key context even if the target site is already installed.
  • Live Test now shows Rover's hosted browser directly on the page for Hosted Preview. Open hosted shell is the full-screen version of that same temporary cloud-browser fallback.
  • Bookmarklet is a drag-only control in Rover's UI. Drag it from Live Test into your bookmarks bar, then click it on the target site.

Troubleshooting

  • This API key is missing capability: roverEmbed The selected Workspace key is not embed-ready. Go back to Workspace and create or rotate an embed-enabled site key, then copy the fresh test config JSON again.
  • Open hosted shell does nothing Hosted Preview should show Rover's hosted browser inline in Live Test and also open the dedicated hosted viewer route in a new tab. If neither works, recreate the temporary demo and try again.
  • The hosted browser opens but Rover never appears inside the page Hosted Preview should inject the same short-lived preview bootstrap into the hosted page and re-inject it after top-level navigations. If the browser opens but Rover never boots, recreate the demo after deploying the latest backend and web-agent changes.
  • Hosted Preview keeps polling /vnc/sessions and the viewer stays blank Hosted Preview should provision a dedicated Rover-managed browser session first, then run Rover on that same browser. If you only see repeated session polling with a blank viewer, the hosted-browser session never became viewer-ready; recreate the demo after deploying the latest

Related Skills

View on GitHub
GitHub Stars101
CategoryDevelopment
Updated3h ago
Forks23

Languages

TypeScript

Security Score

85/100

Audited on Apr 2, 2026

No findings