Getting Started

OverviewQuick StartInstant PreviewTry on Other SitesWorkspace

Integration

ConfigurationSecurity & PoliciesAI / Agent Tasks

Reference

API ReferenceInstant Preview APIExamplesRoadmap

Quick Start

Get Rover running on your site in under 2 minutes.

Prerequisite: Rover requires an active rtrvr.ai account with available credits. Free accounts get 250 credits. Check your balance in the Workspace or upgrade at rtrvr.ai.

1

Create a Site Key

Go to the Rover Workspace and create a site key. In most cases, enter your main domain once and keep domainScopeMode: 'registrable_domain'. You'll get back a public site key and a ready-to-paste install snippet. Choose capability profile if you want the same key to support cloud scrape/agent APIs in addition to embed usage.

If you already have an active key with the right domains/policy, reuse it. Create/rotate only when policy changes, key compromise, or planned credential rollover.

If you enable tools.web.scrapeMode: 'on_demand', use the workspace profile that includes cloud capabilities.

Want to test Rover on some other site before you install anything? After key creation, use Copy test config JSON in Workspace, then open Try on Other Sites.

Workspace now also owns RoverBook setup for the selected site. Use the setup view for interview prompts and notification webhooks, then use overview, analytics, trajectories, and the other RoverBook pages for read-only AX analytics.

Workspace keeps setup guided by default. Expert mode exposes low-level runtime tuning; managed snippets keep apiBase fixed to https://agent.rtrvr.ai.

In Rover v2, all in-scope navigation (same host and allowed subdomains) runs in the current tab by default.

Domain scope cheat sheet: with registrable_domain, example.com allows example.com and all subdomains. *.example.com allows subdomains only, not the apex host. host_only makes plain entries exact-host only.
No workspace access yet? Sign in with Google at the workspace to get started. Each key is scoped to specific domains — Rover will refuse to run on unlisted hosts.
2

Add the Embed Script

Include the Rover discovery marker and embed script before your closing </body> tag:

HTML
<script type="application/agent+json">{"task":"https://agent.rtrvr.ai/v1/tasks"}</script>
<script src="https://rover.rtrvr.ai/embed.js?v=replace_with_rover_site_key_id" async></script>
<script src="https://rover.rtrvr.ai/roverbook.js?v=replace_with_rover_site_key_id" async></script>

The marker is source-visible to plain HTML fetches. AI tools can detect it, then create tasks by posting to https://agent.rtrvr.ai/v1/tasks with only { url, prompt }. When Public AI / Agent Task Access is enabled in Workspace, the generated snippet includes this marker automatically, so no extra manual HTML is needed beyond the snippet itself.

When RoverBook is enabled for the site, the generated snippet also includes roverbook.js and the inline attach block. Script-tag installs do not need a custom identityResolver to attribute Rover-managed traffic.

3

Boot Rover

Call rover('boot', config) with your site key credentials:

JavaScript
<script>
  (function(){ var r = window.rover = window.rover || function(){ (r.q = r.q || []).push(arguments); }; r.l = +new Date(); })();
  rover('boot', {
    siteId: 'replace_with_rover_site_id',
    publicKey: 'replace_with_rover_public_key_pk_site',
    siteKeyId: 'replace_with_rover_site_key_id',
    apiBase: 'https://agent.rtrvr.ai',
    allowedDomains: ['replace_with_rover_allowed_domain'],
    domainScopeMode: 'registrable_domain',
    externalNavigationPolicy: 'open_new_tab_notice',
    navigation: { crossHostPolicy: 'same_tab' },
    taskRouting: { mode: 'act', plannerOnActError: true },
    checkpointing: { enabled: true, autoVisitorId: true },
    telemetry: { includePayloads: true },
    tools: { web: { enableExternalWebContext: true, scrapeMode: 'on_demand' } },
  });
</script>

Replace placeholders with the exact Workspace values: siteId, publicKey (pk_site_*), and optionally siteKeyId (recommended for embed cache-busting and key-rotation rollouts). See Configuration for all available options.

In the default registrable_domain mode, a plain entry like example.com already covers the apex host and subdomains, so you usually do not need to add both example.com and *.example.com.

Runtime API contracts for /v2/rover/* (session bootstrap, run input/control, tab events, SSE, snapshots) are documented in API Reference.

Public AI / CLI access uses the neutral task resource at https://agent.rtrvr.ai/v1/tasks. That protocol returns a canonical task URL for JSON polling, SSE, NDJSON, continuation input, and cancel, plus receipt-based browser handoff URLs when the task is browser-capable. External AI callers do not need your siteId, publicKey, or siteKeyId.

Public task callers may optionally send an agent object to self-report their identity. If they do not, Rover falls back to lightweight heuristics such as Signature-Agent and User-Agent, then anonymous fallback.

Keep taskRouting.mode: 'act' for latency-first defaults. If you switch to 'auto', planner fallback only runs when ACT does not return a usable outcome.

Task isolation is strict in Rover v2: each normal user send starts a fresh task boundary; only ask_user answers continue the same boundary. Optional task.followup.* settings carry chat cues only.

Shortcuts, greeting, voice dictation, and page-capture settings configured in Workspace are fetched from cloud automatically. Site-key policy controls effective shortcut limits at runtime. You can still override them in boot config if needed.

Voice dictation ships as draft-only browser dictation in v1. On supported Chromium browsers, add ui.voice to boot config or enable it in Workspace, let Rover fill the draft live, allow natural pauses while speaking, then keep manual send as the last step.

Those per-site page-capture settings are separate from global cloud or extension user settings. Mascot media also starts muted by default; only boot config such as ui.muted: false opts a site into sound.

In Workspace, Save Site Config writes to the currently selected key. During new key creation, the current site config is auto-saved to the newly created key.

Async User Identity (Recommended)

If login happens after boot, send user details with rover.identify(...).

JavaScript
// Async login/user hydration example
// Call after your auth flow resolves:
window.rover?.identify({
  name: user.fullName,
  email: user.email,
});

Complete Snippet

HTML — paste before </body>
<!-- Add before </body> -->
<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: 'replace_with_rover_site_id',
    publicKey: 'replace_with_rover_public_key_pk_site',
    siteKeyId: 'replace_with_rover_site_key_id',
    apiBase: 'https://agent.rtrvr.ai',
    allowedDomains: ['replace_with_rover_allowed_domain'],
    domainScopeMode: 'registrable_domain',
    externalNavigationPolicy: 'open_new_tab_notice',
    navigation: { crossHostPolicy: 'same_tab' },
    taskRouting: { mode: 'act', plannerOnActError: true },
    checkpointing: { enabled: true, autoVisitorId: true },
    telemetry: { includePayloads: true },
    tools: { web: { enableExternalWebContext: true, scrapeMode: 'on_demand' } },
  });
</script>
<script src="https://rover.rtrvr.ai/embed.js?v=replace_with_rover_site_key_id" async></script>
<script src="https://rover.rtrvr.ai/roverbook.js?v=replace_with_rover_site_key_id" async></script>
<script>
  (function(){
    var roverBookConfig = {
      siteId: 'replace_with_rover_site_id',
      apiBase: 'https://roverbook.rtrvr.ai',
      webmcp: {
        advertiseDelegatedHandoffs: true
      }
    };
    function attachRoverBook(){
      if (window.__ROVERBOOK_INSTANCE__) return true;
      var roverApi = window.rover;
      var roverBook = window.RoverBook;
      if (!roverApi || typeof roverApi.on !== 'function' || typeof roverApi.requestSigned !== 'function') return false;
      if (!roverBook || typeof roverBook.enableRoverBook !== 'function') return false;
      window.__ROVERBOOK_INSTANCE__ = roverBook.enableRoverBook(roverApi, roverBookConfig);
      return true;
    }
    if (attachRoverBook()) return;
    var attempts = 0;
    var timer = setInterval(function(){
      attempts += 1;
      if (attachRoverBook() || attempts >= 300) clearInterval(timer);
    }, 50);
  })();
</script>

The full RoverBook attach block is generated for you in Workspace. Keep using the generated version for production so site policy, RoverBook API base, and delegated-handoff settings stay aligned.

rtrvr-cloud-website Env Mapping

If you integrate Rover through app/layout.tsx, set these envs and redeploy.

.env
# Required
NEXT_PUBLIC_ROVER_SITE_ID=replace_with_rover_site_id
NEXT_PUBLIC_ROVER_SITE_PUBLIC_KEY=pk_site_replace_with_rover_public_key
NEXT_PUBLIC_ROVER_SITE_KEY_ID=replace_with_rover_site_key_id

# Recommended
NEXT_PUBLIC_ROVER_ALLOWED_DOMAINS=rtrvr.ai
NEXT_PUBLIC_ROVER_DOMAIN_SCOPE_MODE=registrable_domain
NEXT_PUBLIC_ROVER_EXTERNAL_NAVIGATION_POLICY=open_new_tab_notice
NEXT_PUBLIC_ROVER_CROSS_HOST_POLICY=same_tab
NEXT_PUBLIC_ROVER_API_BASE=https://agent.rtrvr.ai
NEXT_PUBLIC_ROVER_ENABLE_EXTERNAL_WEB_CONTEXT=true
NEXT_PUBLIC_ROVER_EXTERNAL_SCRAPE_MODE=on_demand
NEXT_PUBLIC_ROVER_INCLUDE_TELEMETRY_PAYLOADS=true

What Happens Next

Rover loads asynchronously — zero impact on page performance.

It reads your live DOM to understand the page structure.

A chat widget appears (or you can trigger it programmatically).

Workspace journeys appear as shortcut cards/chips when no task is running.

Users describe what they want; Rover clicks, fills, and navigates for them.

If RoverBook is enabled, visits, reviews, interviews, notes, and trajectories stream into the Rover Workspace dashboard for that site.

Configuration ReferenceSecurity & Policies
rtrvr.ai logo
Rover

Browser-native execution for websites and interfaces, plus analytics for the owners improving them.

Product

  • Overview
  • Get Started
  • Test Live
  • Pricing
  • Sweet Shop

Developers

  • GitHub
  • Preview Helper
  • Quick Start
  • Instant Preview
  • Try on Other Sites
  • Instant Preview API
  • Configuration
  • AI / Agent Tasks
  • API Reference
  • Security
  • Examples

Resources

  • Blog
  • Videos
  • SDK Preview Helpers
  • OpenAPI Spec
  • rtrvr.ai Docs
  • rtrvr.ai Cloud

© 2026 rtrvr.ai. All rights reserved.

PrivacyTerms