Core API

Fleet

Launch many profiles and drive them concurrently. Loop launches over REST or use the fleet_* MCP tools. The browsers run on your hardware, so a fleet does not scale a meter.

Run many profiles

A fleet is just many launched profiles driven at once. Each launch returns its own CDP endpoint, so you connect an independent driver session per profile and operate them in parallel.

Because the browsers run on hardware you own, the practical ceiling is your CPU, memory, and proxies rather than a per browser hour charge.

Over REST

Loop the launch call across your profile ids and attach a driver to each ws_endpoint.

import { chromium } from "playwright";
const ids = ["de-store-01", "de-store-02", "de-store-03"];
const browsers = await Promise.all(
ids.map(async (id) => {
const res = await fetch(
`http://127.0.0.1:8378/api/profiles/${id}/launch`,
{ method: "POST",
headers: { Authorization: `Bearer ${process.env.OCULR_TOKEN}` } },
).then((r) => r.json());
return chromium.connectOverCDP(res.ws_endpoint);
}),
);

Over MCP

The MCP server provides fleet_* tools to launch and act across many profiles in one call, for agents that operate a fleet without writing the loop themselves.

  • fleet_launch to start a set of profiles.
  • fleet_navigate, fleet_click, fleet_type, fleet_evaluate to act across them.
  • fleet_status and fleet_stop_all to monitor and shut the fleet down.