The Portability Pledge
Most infrastructure earns your loyalty by making it painful to leave. We’d rather earn it by being the best option, and by making sure you could walk away in an afternoon if we ever stopped being that. This page is our pledge, written plainly so you can hold us to it.
The pledge
You can leave BrowserCat at any time, with a one-line change, and take nothing of ours with you, because there’s nothing of ours to take.
We don’t ship a proprietary SDK, a custom protocol, or a magic client you have to bake into your codebase. You write standard Playwright, Puppeteer, or raw CDP. BrowserCat is just the endpoint those tools connect to. Swap the endpoint and your code keeps running, somewhere else, or on your own hardware.
Why we can promise this
Built on open standards, not our own
The browser you drive over BrowserCat speaks the same Chrome DevTools Protocol every headless Chromium speaks. The libraries you call, Playwright and Puppeteer, are open source and maintained by Microsoft and Google, not by us. We didn’t fork them, wrap them, or hide them behind an SDK. That means the skills and code you build here are portable by construction.
The only BrowserCat-specific thing is a connection string
You connect to:
wss://api.browsercat.com/connect
That’s it. One endpoint, one API key. There’s no lock-in surface beyond that line of config, because there’s nowhere else for lock-in to hide.
Leaving is a one-line change
To move to your own infrastructure, you point your code at your own CDP endpoint:
// From BrowserCat...
const browser = await chromium.connectOverCDP(
"wss://api.browsercat.com/connect",
{headers: {"Api-Key": "YOUR_KEY"}}
);
// ...to anywhere else (a competitor, or your own Chromium):
const browser = await chromium.connectOverCDP(
"wss://your-own-endpoint/"
);
Same library, same calls, same selectors, same tests. The rest of your codebase doesn’t even notice.
What “no lock-in” rules out
To make the pledge concrete, here’s what we will not do:
- No proprietary SDK. You never
importa BrowserCat client to drive a browser. - No bespoke protocol. It’s CDP all the way down, the same protocol your local Chrome speaks.
- No data you can’t take with you. Screenshots, PDFs, traces, and HAR files are produced by Playwright/Puppeteer in standard formats, on your side.
- No re-platforming tax. Moving off is a config change, not a rewrite.
So why stay?
Because a router for browser infrastructure is worth more than any single endpoint you could point at yourself. One stable /connect gives you a backend chosen per session, failover when a provider has a bad day, and new capabilities that show up on the roadmap without you changing a line. You stay because it keeps getting better on its own, not because you’re trapped.
That’s the whole deal: easy to leave, so the only reason to stay is that it’s the best place to be.