Open-source cloud browser API
Self-hosted browsers for
AI agents and developers
BrowseFleet runs a fleet of stealthed headless Chrome instances behind a single REST API. Sessions, scrape, screenshot, PDF, profile persistence, human-in-the-loop control. MIT licensed. You host it.
Sessions
1,247
Active
42
Uptime
99.9%
Create Session
Sign In
One integration, two patterns
Use the SDK or connect Puppeteer directly
Quick actions for one-shot scrape / screenshot / PDF. Sessions when you need a persistent browser. The session response returns a CDP WebSocket URL, so any automation library that speaks CDP plugs in unchanged.
Sessions start in under a second on a warm host
Stealth defaults pass standard bot-detection fingerprint pages
Cap the pool at any concurrency your host can sustain
import { BrowseFleet } from 'browsefleet';
import puppeteer from 'puppeteer-core';
const bf = new BrowseFleet({
baseUrl: 'http://localhost:3000', // or your self-hosted URL
});
// Quick action: scrape a page (no session bookkeeping)
const { markdown } = await bf.scrape('https://example.com');
// Persistent session: connect Puppeteer over the CDP proxy
const session = await bf.sessions.create({ stealth: 'full' });
const browser = await puppeteer.connect({
browserWSEndpoint: session.websocketUrl,
});
const page = await browser.newPage();
await page.goto('https://example.com');
await bf.sessions.release(session.id);Features
Everything in one repo
Sessions API
Launch managed browser sessions over REST. Connect with Puppeteer, Playwright, or Selenium through the CDP WebSocket proxy.
Stealth by default
puppeteer-extra-plugin-stealth baked in plus per-session randomized viewport, user agent, and platform fingerprints.
Quick actions
One-call scrape, screenshot, or PDF. Returns cleaned HTML, markdown, readability text, and link metadata.
Computer API
Click, type, scroll, navigate. Designed for Claude, GPT, and Gemini Computer Use. Every action returns a screenshot.
Operator mode
Sessions can start in human control, let a real person log in, then hand off to an agent via the control state machine.
Profile persistence
Persistent Chrome user-data directories. Logins, cookies, and storage survive across sessions.
Built-in vision agent
Take a natural-language task. The agent screenshots, reasons with Claude or GPT, picks an action, executes, repeats.
Self-hosted, MIT-licensed
One Node process, one SQLite file, one Docker container. Runs on a $4/mo Hetzner box. No external services.
Four repos, all MIT
Server, SDKs, and this site
The full project lives in the open. Server, both SDKs, and the marketing site you are reading are all public on GitHub.
Self-hosted cloud browser API. Sessions, scrape, screenshot, PDF, stealth, profile persistence, human-in-the-loop control behind one REST endpoint.
docker run -p 3000:3000 --shm-size=2g ghcr.io/therjmurray/browsefleet:latestOfficial Node.js SDK. Sync + dual ESM/CJS. Zero runtime dependencies. Full TypeScript types.
npm install browsefleetOfficial Python SDK. Sync + async clients. py.typed. httpx under the hood.
pip install browsefleetPricing
Free. You host it.
BrowseFleet is MIT licensed. There is no hosted SaaS to subscribe to. You run the Docker image on a $4-per-month VPS, or scale up; that is the entire cost model.
Ready to run a fleet?
One docker command to a working local server. Five minutes to a deployed VPS.