> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://platform.bctrl.ai/llms.txt.
> For full documentation content, see https://platform.bctrl.ai/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://platform.bctrl.ai/_mcp/server.

# Runtime configuration

> Configure stealth, proxy, fingerprint, extensions, and network behaviour on a browser runtime.

Pass a `config` object to [create a runtime](/sdk/runtimes) and control how the browser presents itself and what it can reach.

```ts
const runtime = await bctrl.runtimes.create({
  type: "browser",
  name: "stealthy",
  config: {
    stealth: "high",
    proxy: { mode: "saved", id: "pxy_123" },
    fingerprint: { browser: "chrome", locale: "en-US" },
    extensionIds: ["ext_123"],
    idleTimeoutMinutes: 10,
    webRtcProxyOnly: true,
    networkTraffic: { blockAds: true, blockTrackers: true },
  },
});
```

## Options

| Option                 | Purpose                                                                                                                                                              |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `stealth`              | Anti-detection hardening: `"medium"`, `"high"`, or `"ultra"`.                                                                                                        |
| `proxy`                | A [proxy](/sdk/proxies): `{ mode: "saved", id }`, or inline `{ mode: "custom", protocol, host, port }`.                                                              |
| `fingerprint`          | The fingerprint the browser presents: `{ browser, locale }`.                                                                                                         |
| `extensionIds`         | [Browser extensions](/sdk/extensions) to load at launch.                                                                                                             |
| `idleTimeoutMinutes`   | Auto-stop the runtime after this much inactivity.                                                                                                                    |
| `autoUpgrade`          | Upgrade the browser to the latest version on each start (default `true`). The fingerprint keeps its identity; only the browser version advances. Set `false` to pin. |
| `webRtcProxyOnly`      | Force WebRTC through the proxy to avoid IP leaks.                                                                                                                    |
| `forceOpenShadowRoots` | Open closed shadow roots for automation.                                                                                                                             |
| `networkTraffic`       | Filter network traffic: `blockAds`, `blockTrackers`, and `urlAllowlist` / `urlBlocklist`.                                                                            |

## Profile-backed runtimes

A runtime is either **ephemeral** (browser state is discarded on stop) or **profile-backed** (cookies, logins, and local storage persist across starts). Set `config.profile: true` to make it profile-backed - the runtime itself is the long-term browser, and its state lives and dies with it. Stop and restart the same runtime to resume where it left off; creating a new runtime always starts fresh.

Profile-backed runtimes accept `autoUpgrade`, `idleTimeoutMinutes`, `webRtcProxyOnly`, `forceOpenShadowRoots`, and `networkTraffic`. Stealth, proxy, fingerprint, and extensions are managed by the platform for the life of the profile.

```ts
const runtime = await bctrl.runtimes.create({
  type: "browser",
  name: "acme-session", // a display label - renaming never affects browser state
  config: { profile: true, idleTimeoutMinutes: 15 },
});
```

## Next

* [Proxies](/sdk/proxies) - attach proxies and managed pools
* [Extensions](/sdk/extensions) - load browser extensions
* [CAPTCHA](/sdk/captcha) - stealth reduces challenges