You stitch together proxy rotation, browser stealth, cookie persistence, secret injection, file staging, CAPTCHA solving, and session replay yourself. Seven integrations, seven failure modes, seven things to keep alive across deploys. None of it survives a cold start — workers timeout, lambdas recycle, sockets drop mid-task. And that's just half of it.

BCTRL BETA
Runtime infrastructure for AI agents, with browsers, state, observability, and automation services built in.
Explore the platform →Browser automation breaks outside local dev.
Playwright and Puppeteer assume you can keep a live process and a persistent connection open for the whole task. That falls apart in workers, queues, agents, and serverless jobs.
Three concepts is all you need:
The shared control layer. Mount files, secrets, proxies, and AI config once, then coordinate multiple runtimes.
A remote environment you start, connect to, inspect, and stop. In BCTRL today, that environment is a browser.
The observable record attached to a runtime session: activity, artifacts, live view, recording, and usage.
- — Agent Skills
- — agent-browser CLI
- — OpenClaw
- — Mastra
- — Hermes Agent
- — Stagehand
- — Runtime API
- — Direct SDK calls
- — CI pipelines
import { Bctrl } from '@bctrl/sdk'
import { chromium } from 'playwright'
const bctrl = new Bctrl({ apiKey: process.env.BCTRL_API_KEY! })
const space = await bctrl.spaces.create({
name: 'login-flow',
mounts: { vault: { allow: ['acme/'] } },
})
const runtime = await space.runtimes.create({
type: 'browser',
name: 'crm',
config: { recording: true },
})
const connection = await runtime.connections.create({ protocol: 'cdp' })
const browser = await chromium.connectOverCDP(connection.endpoint.url)
const page = await browser.newPage()
const cred = await bctrl.vault.get('acme/login')
await page.fill('#user', cred.value)
// TOTP auto-resolved from vault
await page.fill('#otp', await bctrl.vault.totp('acme/2fa'))Publish BCTRL as skill instructions, a runtime API, or a CDP-backed browser target for the agent your users already run.
Let frameworks and long-running agents control a managed browser while BCTRL keeps the run observable.
Embed BCTRL as the runtime layer inside your product so users can watch, debug, and take over agent work.
Introducing BCTRL: Remote Browser & Desktop Automation
Meet BCTRL — a unified platform for remote browser and desktop automation. Connect with Playwright, Puppeteer, Stagehand, and more.
BCTRL SDK v2.0 Released
Major update with desktop automation, improved AI integrations, and 50% faster session initialization.
Stagehand Driver Now Available
AI-powered browser automation with natural language commands and intelligent element detection.