← Blog

BLOG

Agent Borwser: The Production Runtime for AI Browser Agents

Agent borwser runtime guide: how to connect AI agents to hosted Chromium via CDP, keep sessions alive, and scale Playwright workloads.

September 6, 202610 min readRemote Browser

# Agent Borwser: The Production Runtime for AI Browser Agents

If you're building an AI agent that needs to browse the web, you've probably searched for an "agent borwser" solution and found a confusing mix of local CLI tools, browser-use libraries, and cloud browser services. The core problem isn't the AI model—it's the browser runtime. An agent borwser needs a real Chromium instance it can control programmatically, keep alive across multiple requests, and scale across concurrent tasks. This guide explains what an agent browser actually requires in production and how Remote Browser's hosted Chromium runtime fits that need.

What Is an Agent Browser?

An agent browser is a browser instance designed to be driven by an AI agent or automation script rather than a human. Unlike a standard Chrome window, an agent borwser exposes control interfaces—typically the Chrome DevTools Protocol (CDP) or WebDriver—so that code can navigate pages, click elements, fill forms, extract data, and make decisions based on what it sees.

The term has become ambiguous because several tools call themselves "agent browsers":

ToolWhat It Actually IsProduction Fit
Vercel's agent-browser CLIA local CLI for browser automation aimed at AI coding agentsGood for development, not for 24/7 cloud workloads
browser-use libraryA Python framework that connects LLMs to local browsersRequires your own infrastructure
Remote BrowserA hosted Chromium runtime with CDP access, persistent profiles, and live debuggingDesigned for production AI agent workloads

The distinction matters. A local agent borwser works fine for a demo. But when your agent needs to run in production—handling multiple sessions, surviving network interruptions, and scaling across workers—you need a runtime that separates the browser from your application process.

Why Local Agent Browsers Fail in Production

Most developers start with a local Playwright or Puppeteer script. It works until you hit one of these walls:

1. Session Lifecycle Problems

Your AI agent might need to log into a service, perform a task, and then continue that session hours later from a different worker. Local browsers tie the session to a specific process. If that process dies—or if you're running serverless functions that spin up and down—the session is lost.

The production question: How do you keep browser sessions alive across multiple cloud workers?

The answer is to decouple the browser from the worker. Remote Browser runs Chromium as a hosted service. Your worker connects via CDP, does its work, and disconnects. The browser session persists independently. A different worker can reconnect to the same session later, using the same cookies, localStorage, and login state.

2. Resource Constraints

Headless Chromium is memory-hungry. Each instance can consume 300-500 MB of RAM. Running multiple concurrent sessions on a single machine quickly exhausts resources, causing crashes and slow performance.

The production question: How do you scale Playwright browser workloads reliably?

You need either a large fleet of machines or a service that manages browser instances for you. Remote Browser handles the infrastructure—spinning up isolated Chromium instances on demand, each with its own profile and proxy settings.

3. Connection Complexity

Playwright's connect_over_cdp is the standard way to attach to an existing browser. But it has quirks. For example, as of recent Playwright versions, connect_over_cdp officially supports Chromium-based browsers. Firefox support via CDP is limited—Firefox primarily uses the WebDriver BiDi protocol, not CDP.

The production question: How do you connect Playwright to a remote browser without fighting protocol mismatches?

Remote Browser exposes a standard CDP endpoint. You connect using Playwright's chromium.connectOverCDP() method, which is the officially supported path for Chromium. No custom protocol shims required.

The Remote Browser Architecture

Remote Browser is built around a simple idea: browsers should be infrastructure, not processes you manage. Here's how it works:

  1. Hosted Chromium instances run in isolated containers. Each instance gets its own profile, storage, and network configuration.
  2. CDP access lets you connect from any language or framework that speaks CDP—Playwright, Puppeteer, or raw WebSocket clients.
  3. Persistent profiles store cookies, localStorage, and browser state. Sessions survive disconnects and can be resumed later.
  4. Live viewer gives you a real-time view of what the browser is doing, which is essential for debugging AI agent behavior.
  5. Proxy and stealth settings are configurable per session, so you can route traffic through different IPs when needed.

This architecture solves the three most common agent browser failures: session loss, resource exhaustion, and connection instability.

Connecting Your Agent Browser via CDP

Let's walk through a concrete example. You have an AI agent that needs to log into a dashboard, extract data, and then let another worker pick up the session later.

First, create a browser session through the Remote Browser API:

// Create a new browser session
const response = await fetch('https://api.remote-browser.dev/v1/browsers', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.REMOTE_BROWSER_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    // Persistent profile so the session survives disconnects
    profileId: 'my-agent-profile',
    // Optional: route through a specific proxy
    proxy: {
      url: 'http://proxy.example.com:8080'
    }
  })
});

const { id, connectUrl } = await response.json();

Now connect Playwright to that session:

import { chromium } from 'playwright';

// Connect to the hosted Chromium instance via CDP
const browser = await chromium.connectOverCDP(connectUrl);
const context = browser.contexts()[0];
const page = await context.newPage();

// Your AI agent logic here
await page.goto('https://dashboard.example.com');
await page.fill('#username', process.env.USERNAME);
await page.fill('#password', process.env.PASSWORD);
await page.click('#login-button');
await page.waitForSelector('.dashboard-content');

// Extract the data your agent needs
const data = await page.evaluate(() => {
  return document.querySelector('.dashboard-content')?.textContent;
});

// Disconnect — the session stays alive
await browser.close();

Later, a different worker can reconnect to the same session:

// Reconnect to the existing session using the same browser ID
const browser = await chromium.connectOverCDP(
  `wss://connect.remote-browser.dev/${id}`
);
const context = browser.contexts()[0];
const page = context.pages()[0]; // The page is still logged in

// Continue where the previous worker left off
console.log(await page.title()); // "Dashboard"

This pattern is the foundation of reliable AI web agents. The browser is no longer tied to a single execution context.

Playwright and Selenium Compatibility

A common question is whether an agent borwser runtime works with both Playwright and Selenium. The answer depends on the protocol:

  • Playwright connects to Chromium via CDP using connectOverCDP(). This is the recommended path for new projects.
  • Selenium uses the WebDriver protocol. Remote Browser supports WebDriver-compatible sessions for teams that have existing Selenium test suites.

For Playwright users, there's an important nuance: connect_over_cdp is officially documented as Chromium-only. If you're trying to connect to Firefox via CDP, you'll run into limitations. Firefox's CDP implementation is incomplete, and Playwright's official docs note that Firefox support via connect_over_cdp is not available. For Firefox automation, you need WebDriver BiDi, which is a different connection mechanism.

Practical advice: If you're building an AI agent browser, standardize on Chromium. It has the most complete CDP implementation, and every major browser automation framework supports it well. Remote Browser runs Chromium specifically for this reason.

Keeping Sessions Alive Across Cloud Workers

The "session persistence" problem deserves more attention because it's the #1 reason AI agents fail in production. Here's the scenario:

  1. Worker A starts a task, logs into a service, and begins processing.
  2. Worker A hits a timeout or crashes.
  3. Worker B picks up the task, but the browser session is gone.

With local browsers, this is unavoidable. With Remote Browser, the session lives in the cloud. Worker B can reconnect to the same browser instance and pick up exactly where Worker A left off.

This works because Remote Browser separates browser state from application state. The browser profile—cookies, localStorage, IndexedDB—persists on the hosted instance. Your workers are stateless clients that connect and disconnect as needed.

Scaling Playwright Browser Workloads

When you need to run many browser tasks concurrently, you face a resource planning problem. Each Chromium instance needs:

  • CPU: 1-2 cores for reasonable page render performance
  • Memory: 300-500 MB minimum, more for complex pages
  • Network: Stable outbound connectivity

Running 50 concurrent sessions on a single machine is unrealistic. You'd need a cluster of machines, orchestration, and monitoring. That's a significant infrastructure investment.

Remote Browser handles this by managing browser instances as a service. You request a browser, use it, and release it. The service handles instance placement, resource allocation, and cleanup. You pay for what you use, measured in browser-hours.

For pricing details, check the pricing page. The model is straightforward: you're billed for the time browsers are running, not for idle infrastructure.

Browser Resource Usage and Multi-Session Management

One of the less obvious challenges with agent browsers is managing multiple sessions efficiently. Each session has its own:

  • Profile (cookies, storage, extensions)
  • Network configuration (proxy, DNS)
  • Viewport and user agent

If you're running a fleet of agents, you need to match sessions to tasks. A task that requires logging into a specific account needs a session with that account's profile. A task that requires a specific geographic IP needs a session with the right proxy.

Remote Browser's API lets you create sessions with specific profiles and proxy settings. You can also set usage controls—timeouts, page limits, and concurrent session caps—to prevent runaway costs.

What Is a Browser Agent, Really?

The term "browser agent" gets thrown around loosely. In the context of AI, a browser agent is an autonomous program that uses a browser to accomplish tasks. It typically involves:

  1. Perception: Taking screenshots or extracting DOM content to understand the page
  2. Reasoning: Deciding what action to take next (often via an LLM)
  3. Action: Executing clicks, form fills, navigation via browser automation

The browser is the agent's "hands and eyes." Without a reliable browser runtime, the agent is blind and paralyzed.

This is why the runtime matters as much as the model. A great LLM will fail if the browser it controls crashes, loses state, or gets blocked by anti-bot measures.

Production Criteria for Agent Browser Runtimes

When evaluating an agent borwser solution, use these criteria:

CriterionWhy It MattersRemote Browser
Session persistenceAgents need to resume work after interruptions✅ Sessions persist across disconnects
CDP compatibilityStandard protocol for browser control✅ Full CDP endpoint
Profile isolationDifferent tasks need different browser states✅ Per-session profiles
Proxy supportRoute traffic through specific IPs✅ Configurable per session
Live debuggingSee what the agent is doing in real time✅ Live viewer
Usage controlsPrevent runaway costs✅ Timeouts and session limits
API-drivenProgrammatic browser creation and management✅ REST API

Getting Started

If you're building an AI agent that needs browser access, start with the documentation to understand the API. Then create a test session and connect via Playwright's connectOverCDP. The learning curve is minimal if you've used Playwright or Puppeteer before.

For a deeper dive into why hosted browsers beat local setups for AI agents, read our post on remote browsers for AI agents. If you're specifically interested in the connection mechanics, our guide on remote browser online covers the practical steps.

Conclusion

An agent borwser is only as reliable as the runtime it runs on. Local browsers are fine for development but fail in production due to session loss, resource constraints, and scaling challenges. Remote Browser provides a hosted Chromium runtime designed for AI agent workloads—with CDP access, persistent profiles, and the ability to keep sessions alive across multiple workers.

The key takeaway: separate your browser from your application logic. Make the browser a service that your agents connect to, not a process they spawn. That single architectural decision solves most of the reliability problems that plague AI web automation.

For current pricing and session limits, visit the pricing page. For implementation details, the API documentation has everything you need to get started.