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 create a site key. You'll specify your allowed domains and 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.
Workspace keeps setup guided by default. Expert mode exposes low-level runtime tuning; managed snippets keep apiBase fixed to https://extensionrouter.rtrvr.ai.
In Rover v2, all in-scope navigation (same host and allowed subdomains) runs in the current tab by default.
Add the Embed Script
Include the Rover embed script before your closing </body> tag:
<script src="https://rover.rtrvr.ai/embed.js?v=replace_with_rover_site_key_id" async></script>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://extensionrouter.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.
Runtime API contracts for /v2/rover/* (session bootstrap, run input/control, tab events, SSE, snapshots) are documented in API Reference.
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.
Journeys/shortcuts and greeting 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.
In Workspace, Save Journey Config writes to the currently selected key. During new key creation, the current journey editor content 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>
(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://extensionrouter.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>rtrvr-cloud-website Env Mapping
If you integrate Rover through app/layout.tsx, set these envs and redeploy.
# 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,www.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://extensionrouter.rtrvr.ai
NEXT_PUBLIC_ROVER_ENABLE_EXTERNAL_WEB_CONTEXT=true
NEXT_PUBLIC_ROVER_EXTERNAL_SCRAPE_MODE=on_demand
NEXT_PUBLIC_ROVER_INCLUDE_TELEMETRY_PAYLOADS=trueWhat 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.