Hero Background
The unified platform for automation at scale.

BCTRL BETA

Runtime infrastructure for AI agents, with browsers, state, observability, and automation services built in.

Explore the platform →
For
Supercharge your
Agent Skillsagent-browser CLIOpenClawHermes AgentMastra
The Problem

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.

WITHOUT BCTRL
Your Code
persistent process + stateful connection
Browser

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.

WITH BCTRL
Your Code
stateless requests into BCTRL
BCTRL Infra
RT-01
RT-02
RT-03
Built in
profilesvaultproxiesCAPTCHAstoragereplayAI agentsand more
How BCTRL Works

Three concepts is all you need:

Space

The shared control layer. Mount files, secrets, proxies, and AI config once, then coordinate multiple runtimes.

Runtime

A remote environment you start, connect to, inspect, and stop. In BCTRL today, that environment is a browser.

Run

The observable record attached to a runtime session: activity, artifacts, live view, recording, and usage.

01
AI Agents
  • — Agent Skills
  • — agent-browser CLI
  • — OpenClaw
02
Frameworks
  • — Mastra
  • — Hermes Agent
  • — Stagehand
03
Dev Scripts
  • — Runtime API
  • — Direct SDK calls
  • — CI pipelines
Space files · vault · proxies · observability
browser runtime "scraper"
RUN #241 2.4s completed
RUN #242 running
connection cdp
profile buyer-prod
stealth ultra
proxy rotating · US-East
fingerprint chrome · en-US
viewport 1920×1080
browser runtime "login"
RUN #87 running
connection cdp
client agent framework
stealth high
proxy sticky · DE-Frankfurt
fingerprint edge · de-DE
vault 2 credentials
2 active runs · vault mounted · proxy rotating
platform featuresvault.ts
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'))
Where It Fits Explore the cookbook →
01 AI Agents

Publish BCTRL as skill instructions, a runtime API, or a CDP-backed browser target for the agent your users already run.

Agent Skillsagent-browser CLIOpenClaw
02 Agent Frameworks

Let frameworks and long-running agents control a managed browser while BCTRL keeps the run observable.

MastraHermes AgentStagehand
03 Your Product

Embed BCTRL as the runtime layer inside your product so users can watch, debug, and take over agent work.

Live iframeRun observabilitySubaccounts
Latest from the blogBrowse all posts →

Start building.