Checkpoint the live session before a risky action. If the workflow breaks, return to the state that worked.
Three operations.
checkpoint()Preserve a safe point in the live session.
rewind()Return to the exact browser state that worked.
fork(n)Branch parallel futures from one checkpoint.
NEXTOne session.
Fork an authenticated checkpoint into isolated live sessions. Give each branch a different job, then keep moving without repeating login, setup, or navigation. The source stays live, so the default three-session allowance supports two children.
POST /v1/sessions/sess_8f13/forkNot a page reload.The browser itself.
A checkpoint preserves the live browser process and its client-side state together. Rewind returns to that complete safe point—not a URL, screenshot, or reconstructed approximation.
vm / memorypage / liveorigin / stateworker / statesession / authRestores client-side browser state, including the live page, storage and authenticated context.
Rewind replaces the browser. Reconnect and rediscover targets; live connections and stale handles are not preserved.
Does not reverse irreversible actions already accepted by the server.
Keep your browser stack.Add a way back.
brawsr owns the browser lifecycle and state operations. Your client library stays in control through authenticated CDP.
Reconnect Chromium and rediscover the restored pages.
01import { chromium } from "playwright-core";02import { BrawsrClient } from "@brawsr/sdk";03
04const brawsr = new BrawsrClient({05 apiKey: process.env.BRAWSR_API_KEY!,06});07const session = await brawsr.createSession();08const cdp = brawsr.connectCDP(session);09
10let browser = await chromium.connectOverCDP(11 cdp.endpointUrl,12 { headers: cdp.headers },13);14
15const checkpoint = await brawsr.createCheckpoint(session.id, {16 label: "before-action",17});18
19// Attempt the browser action.20const restored = await brawsr.rewind(session.id, checkpoint);21const next = brawsr.connectCDP(restored);22
23browser = await chromium.connectOverCDP(next.endpointUrl, {24 headers: next.headers,25});Same endpoint. Fresh connection. Rediscover pages and targets.
old handles → stalecheckpoint()rewind()fork(n)Explicit. Framework-neutral.
Progress shouldsurvive failure.
Agents, scrapers, and automations spend time building state before the hard part begins. Preserve that progress, then recover or branch from it.
state operations remain explicitYour browser statestays yours.
Isolation follows the session from live execution through checkpoint storage and every forked branch. The boundary does not disappear when state moves.
sess_8f13ACTIVENo cross-project deduplication
Start from a browserthat remembers.
Review free-alpha limits and recovery boundaries in the quickstart. Need help choosing a safe point? Talk to the founder.