Hero Background
The unified platform for automation at scale.

Introducing BCTRL

Control remote environments using your favorite automation frameworks over one stateless API.

Explore the platform →
For
Works with
Playwright Puppeteer Stagehand Selenium browser-use
Why BCTRL Exists

Browser automation shouldn't depend on a fragile socket.

Traditional browser automation assumes you can keep a live browser process and a persistent WebSocket connection open for the entire run. That gets awkward fast in serverless functions, queued jobs, remote workers, and AI systems.

BCTRL wraps Playwright, Puppeteer, Stagehand, and Selenium in a stateless session layer, so browser work fits modern infrastructure. You keep the APIs you know while BCTRL adds the services browser workloads actually need: profiles, storage, vault access, CAPTCHA solving, and replay.

Deploy browser work anywhere

Run the same browser logic in serverless functions, queued jobs, remote workers, and AI systems without designing around a long-lived socket.

Keep the driver API you know

Playwright, Puppeteer, Stagehand, and Selenium still feel familiar at the call site. The runtime model changes, not the ergonomics.

Attach services to the same session

Vault access, workspace files, CAPTCHA solving, live view, and replay become part of the browser session instead of extra infrastructure.

Runtime Model

Stateless session layer

Same driver ergonomics
Serverless functions
Queue workers
Remote workers
AI systems

BCTRL

HTTP-backed session control

Wrap browser frameworks in a session model that fits backend systems and AI tools.

Playwright
Puppeteer
Stagehand
Selenium

Traditional

Built around a live connection

  • Long-lived browser process
  • Persistent WebSocket connection
  • Secrets and files wired in separately

With BCTRL

Same browser APIs, much more deployable

  • Stateless session calls
  • Same driver ergonomics
  • Runtime services attached to the session
Vault + TOTPWorkspace filesLive viewReplay + events
One Session Layer

Use drivers and agents on the same session.

Most AI browser tooling asks you to build a separate local agent stack and wire everything together yourself. BCTRL keeps agents and drivers on the same browser runtime.

Start with Playwright, Puppeteer, Stagehand, or Selenium. Add AI when a task benefits from it. The same session can access browser state, vault secrets, workspace files, profiles, and replay without extra local setup.

Start with a driver

Keep Playwright, Puppeteer, Stagehand, or Selenium instead of replatforming your automation around a new control model.

Add AI without a second stack

browser-use and Stagehand ride on the same session instead of forcing a separate local agent setup.

Bring session services with you

Vault credentials, workspace files, CAPTCHA solving, and replay stay attached to the browser session.

SDK Surface

Familiar APIs, BCTRL session services underneath

// Playwright session with BCTRL runtime services
import { Bctrl } from '@bctrl/sdk'
const bctrl = new Bctrl({ apiKey: process.env.BCTRL_API_KEY! })
const session = await bctrl.session.playwright({
humanize: true,
solveCaptchas: true,
})
await session.page.goto('https://example.com/login')
await session.page.locator('button[type="submit"]').click()
Playwright sessionHumanize enabledCAPTCHA solving
What BCTRL Adds

The runtime around the browser, not just the driver attachment.

BCTRL is not just a way to start a browser. It gives each session the operational pieces that are painful to bolt on later: persistence, secrets, files, AI access, and replay.

Runtime

Stateless session control

Fit browser work into serverless jobs, queued workers, and AI systems instead of keeping a live socket open for the entire run.

Serverless functions
Queue workers
Remote workers
AI systems
POST /sessionsPOST /cmdHTTP transport

Observability

Live view, recording, and event history

Open a live iframe during the run, replay it later, and inspect event history when a workflow needs debugging or auditability.

01

Watch

Open a live browser iframe while the session is active.

02

Replay

Review the recording after the run finishes.

03

Inspect

Trace session events when something breaks.

Persistence

Named browser profiles

Create browsers by name, reconnect later, and keep cookies, storage, and auth across runs.

bctrl.browser(name)start()connect.*()

Detection

Humanize, proxies, and stealth

Attach proxy-aware profiles and humanized behavior to the browser instead of rebuilding anti-detection logic in every worker.

humanizeproxy overrideprofile defaults

Security

Vault + TOTP in the same session

Store credentials once, scope access per session, and generate TOTP codes when login flows ask for them.

  • session.vault.get()
  • totp()
  • allowlist

Files

Workspace files and storage

Upload inputs, browse outputs, and give every run a default workspace for agents and scripts.

session.storageuploadworkspacePath

Execution

Run typed scripts close to the browser

Use session.run() and defined scripts when you want one round trip instead of a long chain of client calls.

defineScript()session.run()host execution

Agents

Drivers and agents share the runtime

browser-use and Stagehand can use the same page, vault, files, and browser state your driver session already has.

Playwright page
browser-use agent
Stagehand agent
same sessionsame vault/filessame browser state

Captcha

Detect and solve CAPTCHAs

Native detection and solving live on the session, so browser runs can recover without bolted-on side flows.

01 detect()
02 solve()
03 continue run
Use Cases

One browser layer for agents, scraping, white-label services, and workflows.

The point is not to invent another browser API. The point is to make browser work easier to deploy, easier to enrich with services, and easier to debug after the run.

01

AI agents

Give agents a real browser with session state, vault credentials, workspace files, and replayable runs instead of a fragile local stack.

browser-use + Stagehandvault + filesreplay after the run
02

Web scraping

Run scraping on modern, JS-heavy sites with persistent profiles, proxies, and humanized browser behavior already attached to the session.

JS-heavy pagesprofiles + stealthstructured extraction
03

White-label services

Run browser automation for clients under your own service or product brand, with isolated sessions, profiles, vault access, and replay built into each account.

client-isolated sessionsprofiles + vault per accountservice under your brand
04

Automation

Move recurring browser work into serverless jobs, queues, or backend workers without babysitting a persistent browser connection.

serverless friendlyvault + TOTPfiles in and out
Start Here

Start with the driver you already use.

BCTRL gives you one SDK for remote browser sessions, AI agents, vault access, workspace files, and replay. You do not need a separate local stack just to make browser work fit modern infrastructure.

Self-hosted and enterprise support available. Talk to us

Install

pnpm add @bctrl/sdk
Playwright, Puppeteer, Stagehand, SeleniumVault + files + replayStart free, self-host later

Fastest path

Start with an anonymous session when you need quick execution, or move to named profiles when you want persistence.

When the task gets harder

Add browser-use, Stagehand, vault policies, workspace files, and replay without changing the core session model.

Latest Updates
View all posts