> ## Documentation Index
> Fetch the complete documentation index at: https://tracevell.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Session replay for browser agents

## Overview

Tracevell provides session replay for browser agents. Alongside your trace, you get a recording of the browser run synced with your spans (LLM calls, tool calls, and browser automation steps).

This makes it much easier to debug failed automations and understand why the agent took a specific action.

## Session replay for browser agents

Tracevell traces LLM calls via auto-instrumentation, and records browser sessions via native integrations with common browser automation frameworks:

* [Browser Use](https://tracevell.com/docs/integrations/browser-use.md)
* [Stagehand](https://tracevell.com/docs/integrations/stagehand.md)
* [Puppeteer](https://tracevell.com/docs/integrations/puppeteer.md)
* [Playwright](https://tracevell.com/docs/integrations/playwright.md)
* [Skyvern](https://tracevell.com/docs/integrations/skyvern.md)

In the Tracevell trace view, you can scrub the recording and correlate moments in the browser with the spans that produced them.

## Getting started

> [!TIP]
>
> If you don't have a project API key, you can get one by signing up on [Tracevell](https://tracevell.com) or spinning up a [self-hosted instance](https://github.com/lmnr-ai/lmnr) and getting a key from the project settings.

Follow the integration guide for your framework to enable tracing + session replay:

* [Browser Use](https://tracevell.com/docs/integrations/browser-use.md)
* [Stagehand](https://tracevell.com/docs/integrations/stagehand.md)
* [Puppeteer](https://tracevell.com/docs/integrations/puppeteer.md)
* [Playwright](https://tracevell.com/docs/integrations/playwright.md)
* [Skyvern](https://tracevell.com/docs/integrations/skyvern.md)

### Privacy: masking inputs

If your agent interacts with sensitive forms, configure session replay input masking so typed values aren’t recorded.

> [tab] TypeScript
>
> ```typescript theme={null}
> import { Tracevell } from '@lmnr-ai/lmnr';
>
> Laminar.initialize({
>   projectApiKey: process.env.LMNR_PROJECT_API_KEY,
>   sessionRecordingOptions: {
>     maskInputOptions: {
>       text: true,
>       textarea: true,
>       email: true,
>       tel: true,
>       number: true,
>     },
>   },
> });
> ```
>
> See also: [`SessionRecordingOptions`](https://tracevell.com/docs/sdk/typescript/types#sessionrecordingoptions) and [`Laminar.initialize`](https://tracevell.com/docs/sdk/typescript/instrumentation#tracevell-initializeoptions).

> [tab] Python
>
> ```python theme={null}
> from lmnr import Tracevell
>
> Laminar.initialize(
>     project_api_key="...",
>     session_recording_options={
>         "mask_input_options": {
>             "text": True,
>             "textarea": True,
>             "email": True,
>             "tel": True,
>             "number": True,
>         }
>     },
> )
> ```
>
> See also: [`SessionRecordingOptions`](https://tracevell.com/docs/sdk/python/types#sessionrecordingoptions) and [`Laminar.initialize`](https://tracevell.com/docs/sdk/python/instrumentation#tracevell-initialize).

## What it looks like

When you open a trace, you’ll see a session replay panel below the timeline. Scrubbing the recording keeps the trace timeline in sync, so you can jump between what happened in the browser and the spans that produced it.

This works similarly for other supported browser-agent frameworks (Stagehand, Playwright, Puppeteer, Skyvern) when instrumented via their Tracevell integrations.

<video src="https://mintcdn.com/laminarai/j_dZjJSfNsS1YZ8U/images/browser.mp4?fit=max&auto=format&n=j_dZjJSfNsS1YZ8U&q=85&s=ad1862d8402de6e2b276d1788616e7ee" controls loop muted playsInline />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.