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.
Create a Site Key
Go to the Rover Workspace and start Guided Launch. In most cases, keep Standard Rover selected, because it already includes RoverBook analytics and feedback capture. Then enter your main domain once, keep domainScopeMode: 'registrable_domain'. Then open Install to copy the exact production snippet for your site. Choose capability profile if you want the same key to support cloud scrape/agent APIs in addition to embed usage.
The final review step is a check-and-change surface. Click any review row to jump back to the right section, make the edit, and return to review without losing the rest of your launch draft.
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.
Workspace now also owns RoverBook setup for the selected site. Use Settings for interview prompts and notification webhooks, then use overview, analytics, trajectories, and the other RoverBook pages for read-only AX analytics.
Workspace keeps launch guided by default and moves deeper controls into Settings. 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.
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 and blocks sibling subdomains unless you list them explicitly.Add the Embed Script
In Install, copy the exact Workspace-generated snippet and paste it before your closing </body> tag. The shape looks like this:
<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>These code blocks show the shape of the install. For production, copy the exact Workspace-generated snippet instead of hand-maintaining these values.
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 a canonical envelope such as { url, goal, capabilityId, args, target, identity, execution, accept, policy }. Compatibility aliases like { url, prompt } still work. When Public AI / Agent Task Access is enabled in Workspace, the generated snippet includes this marker automatically and now also emits inline application/agent-card+json, application/rover-site+json, and page-manifest hints, so no extra manual HTML is needed for baseline on-page discovery 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.
Boot Rover
Call rover('boot', config) with your site key credentials:
<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 sound stays off unless the site owner explicitly enables ui.mascot.soundEnabled: true. Once enabled, ui.muted controls whether it starts muted.
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(...).
// Async login/user hydration example
// Call after your auth flow resolves:
window.rover?.identify({
name: user.fullName,
email: user.email,
});Complete Snippet
<!-- 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 from Install for production so site policy, RoverBook API base, and delegated-handoff settings stay aligned.
If you installed Rover through Webflow, do not paste this snippet manually into the site. Rover publishes the canonical head discovery tags plus runtime bundle for managed Webflow installs and keeps the same saved Rover site config aligned underneath.
Need AI discovery extras?
Keep Quick Start focused on the required production path. If you want stronger machine-readable discovery beyond the generated snippet, follow the dedicated guide instead.
Read AI Discoveryrtrvr-cloud-website Env Mapping
If you integrate Rover through app/layout.tsx, these are the runtime override envs that path actually reads.
For this repo's own rtrvr.ai deploy, the Rover siteId, publicKey, and siteKeyId are checked into lib/rtrvr-ai-rover-site.ts, not read from env. For customer sites and third-party installs, keep using the Workspace-generated snippet and values above.
# Required
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_API_BASE=https://agent.rtrvr.ai
NEXT_PUBLIC_ROVER_ENABLE_EXTERNAL_WEB_CONTEXT=true
NEXT_PUBLIC_ROVER_EXTERNAL_SCRAPE_MODE=on_demandWhat 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.