You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Brings in #464 (browser-pools guide refresh) and #478 (chrome-policies
URLAllowlist example). One manual resolution: main collapsed the
browsers/pools/ subfolder (faq + overview) into a single
browsers/pools.mdx; applied that at content/docs/browsers/pools.mdx and
dropped the old subfolder (docs.json already redirects the old subpaths
to /browsers/pools). All other content edits auto-merged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: content/docs/auth/profiles.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -264,7 +264,7 @@ You cannot load a profile into a browser that was already created with a profile
264
264
</Warning>
265
265
266
266
<Note>
267
-
To use profiles with browser pools, read: [Can pooled browsers save changes back to a profile?](/browsers/pools/faq#can-pooled-browsers-save-changes-back-to-a-profile)
267
+
To use profiles with browser pools, see [Profiles with browser pools](/browsers/pools#profiles-with-browser-pools)
268
268
</Note>
269
269
270
270
## Other ways to use profiles
@@ -494,5 +494,5 @@ _ = browser
494
494
- Profiles store cookies and local storage. Start the session with `save_changes: true` to write changes back when the browser is closed.
495
495
- To keep a profile immutable for a run, omit `save_changes` (default) when creating the browser.
496
496
- Multiple browsers in parallel can use the same profile, but only one browser should write (`save_changes: true`) to it at a time. Parallel browsers with `save_changes: true` may cause profile corruption and unpredictable behavior.
497
-
-`save_changes` applies to a profile attached to a single browser — either at creation (`kernel.browsers.create()`) or loaded afterward with `kernel.browsers.update()`. A profile set on a [browser pool's](/browsers/pools/overview) config is loaded read-only and never persisted; `save_changes` sent on a pool's profile is silently ignored. To persist per-user state through a pool, attach the profile after acquiring the browser and release with `reuse: false` — see [Per-user profiles with pools](/browsers/pools/overview#per-user-profiles-with-pools).
497
+
-`save_changes` applies to a profile attached to a single browser — either at creation (`kernel.browsers.create()`) or loaded afterward with `kernel.browsers.update()`. A profile set on a [browser pool's](/browsers/pools) config is loaded read-only and never persisted; `save_changes` sent on a pool's profile is silently ignored. To persist per-user state through a pool, attach the profile after acquiring the browser and release with `reuse: false` — see [Per-user profiles with pools](/browsers/pools#per-user-profiles-with-browser-pools).
498
498
- Profile data is encrypted end to end using a per-organization key.
Copy file name to clipboardExpand all lines: content/docs/browsers/bot-detection/overview.mdx
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,12 +31,12 @@ Every Kernel browser launches with anti-detection chrome configuration applied.
31
31
On top of the defaults, stealth mode adds a default ISP proxy and an automatic CAPTCHA solver. Both are opt-out so you can BYO proxy and/or CAPTCHA tooling.
32
32
33
33
### [Configurable Proxies](/proxies/overview)
34
-
Bring your own proxy network or use Kernel's managed pool (selectable down to ZIP-code level). If needed, use the same IP to reduce detection and allow for regional testing or QA.
34
+
Bring your own proxy network or use Kernel's managed proxy pool (selectable down to ZIP-code level). If needed, use the same IP to reduce detection and allow for regional testing or QA.
35
35
36
36
### [Profiles](/auth/profiles)
37
37
Profiles persist cookies, local storage, and session data between runs. Combined with a fixed proxy, this mimics a returning user. We recommend using them to persist authenticated states and reduce CAPTCHAs.
38
38
39
-
### [Browser Pools](/browsers/pools/overview)
39
+
### [Browser Pools](/browsers/pools)
40
40
Browser pools let you reuse browsers across multiple visits to the same website, which introduces consistency with respect to the IP address. Since IP addresses are one of the main components of fingerprinting used by modern bot detection systems, browser pools drastically increase your chances of avoiding detection.
[Residential proxies](/proxies/residential) route traffic through real consumer devices, making them the least detectable proxy type by ASN classification. However, exit IPs [rotate per connection](/proxies/residential#ip-rotation-behavior) since the underlying devices come online and offline dynamically — different tabs hitting different domains will likely show different public IPs.
94
94
95
-
Some IP-reputation-based detection systems (such as reCAPTCHA) can detect rotating pool traffic patterns and penalize them, regardless of how clean the individual exit IPs are. On the other hand, residential proxies tend to be a stronger choice against fingerprint-heavy vendors where detection focuses on the browser and behavioral layer rather than the network layer. Residential proxies also offer richer geo-targeting (country, state, city, ZIP, ASN) compared to ISP.
95
+
Some IP-reputation-based detection systems (such as reCAPTCHA) can detect rotating proxy-pool traffic patterns and penalize them, regardless of how clean the individual exit IPs are. On the other hand, residential proxies tend to be a stronger choice against fingerprint-heavy vendors where detection focuses on the browser and behavioral layer rather than the network layer. Residential proxies also offer richer geo-targeting (country, state, city, ZIP, ASN) compared to ISP.
Copy file name to clipboardExpand all lines: content/docs/browsers/chrome-policies.mdx
+33-1Lines changed: 33 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ Keys are Chrome policy names and values are the corresponding settings. The same
9
9
10
10
## Setting chrome policies on a pool
11
11
12
-
Pass a `chrome_policy` object when [creating](/browsers/pools/overview#create-a-pool-of-reserved-browsers) or [updating](/browsers/pools/overview#update-a-pool) a pool.
12
+
Pass a `chrome_policy` object when [creating](/browsers/pools#create-a-browser-pool) or [updating](/browsers/pools#update-a-browser-pool) a pool.
To lock a browser to an approved set of URLs, block everything with `URLBlocklist` and then allow back only the URLs you want with `URLAllowlist`. Entries match a whole domain (`chatgpt.com`) or a specific path (`en.wikipedia.org/wiki/Cat`), and more specific entries take precedence. This gates top-level navigation, so any other URL returns `ERR_BLOCKED_BY_ADMINISTRATOR`; it does not block resources or API calls a permitted page loads from other origins.
Any policy listed in the [Chrome Enterprise policy documentation](https://chromeenterprise.google/policies/) can be used in the `chrome_policy` object. Refer to the official docs for the full list of supported policy names, types, and values.
Copy file name to clipboardExpand all lines: content/docs/browsers/curl.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -157,9 +157,9 @@ func main() {
157
157
158
158
Browser curl concurrency is constrained by Chromium's internal networking limits:
159
159
160
-
-**HTTP/1.x (direct)** — About 6 sockets per host group and up to 256 active sockets per pool.
160
+
-**HTTP/1.x (direct)** — About 6 sockets per host group and up to 256 active sockets per connection pool.
161
161
-**Proxied chains** — On the order of tens of sockets per proxy chain (Chromium clamps configured values into a bounded range).
162
162
-**HTTP stream pool** — Similar per-group and per-pool behavior to HTTP/1.x direct connections.
163
163
-**HTTP/2** — Roughly 100 concurrent streams per session initially, updated from the server's `SETTINGS_MAX_CONCURRENT_STREAMS`, with an upper cap in Chromium (on the order of 256).
164
164
165
-
If you're issuing many parallel curls from one browser, you're sharing those pools with navigation, XHR, and other session traffic. Latency may vary, as Chromium may queue requests when it reaches its limits.
165
+
If you're issuing many parallel curls from one browser, you're sharing those connection pools with navigation, XHR, and other session traffic. Latency may vary, as Chromium may queue requests when it reaches its limits.
Copy file name to clipboardExpand all lines: content/docs/browsers/extensions.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,7 +52,7 @@ The response includes the extension's ID, name, size, and timestamps.
52
52
Passing the extension name or ID to the `create` method will load it into the browser.
53
53
54
54
<Info>
55
-
Loading an extension into a browser triggers a Chromium restart, which can take several seconds. Use [browser pools](/browsers/pools/overview) to access browsers with extensions faster.
55
+
Loading an extension into a browser triggers a Chromium restart, which can take several seconds. Use [browser pools](/browsers/pools) to access browsers with extensions faster.
Kiosk mode provides a fullscreen live view experience without browser UI elements like the address bar and tabs. You can enable kiosk mode when creating a browser by setting the `kiosk_mode` parameter to `true`.
89
89
90
90
<Info>
91
-
Kiosk mode triggers a Chromium restart, which can take several seconds. Use [browser pools](/browsers/pools/overview) to access kiosk mode browsers faster.
91
+
Kiosk mode triggers a Chromium restart, which can take several seconds. Use [browser pools](/browsers/pools) to access kiosk mode browsers faster.
Copy file name to clipboardExpand all lines: content/docs/browsers/performance.mdx
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ Kernel browsers [benchmark](https://www.kernel.sh/benchmarks) as the fastest, mo
11
11
| P99 | 105ms | April 24, 2026 |
12
12
13
13
### Troubleshooting latency
14
-
If you're experiencing slower-than-expected browser creation (or [browser pool acquisition](/browsers/pools/overview)), review your configuration for the following:
14
+
If you're experiencing slower-than-expected browser creation (or [browser pool acquisition](/browsers/pools)), review your configuration for the following:
15
15
16
16
1. App code ⇔ Kernel browser region
17
17
@@ -23,11 +23,11 @@ Kernel enforces [rate limits](/info/pricing#rate-limiting) on browser creation b
23
23
24
24
3. Non-default browser configurations
25
25
26
-
Certain browser configurations trigger Chromium to restart, which can take several seconds. Use [browser pools](/browsers/pools/overview) to access browsers with custom configurations faster. The following configurations cause browser restarts, as well as disrupt active CDP connections:
26
+
Certain browser configurations trigger Chromium to restart, which can take several seconds. Use [browser pools](/browsers/pools) to access browsers with custom configurations faster. The following configurations cause browser restarts, as well as disrupt active CDP connections:
27
27
- Custom viewport configurations
28
28
- Chrome extensions
29
29
- Setting the live view to `kiosk mode`
30
30
31
31
4. Browser pool refill rate
32
32
33
-
Browser pools fill at a [specified rate](https://www.kernel.sh/docs/api-reference/browser-pools/create-a-browser-pool#body-fill-rate-per-minute). Read about browser pool lifecycle best practices [here](/browsers/pools/overview#how-browser-pools-work).
33
+
Browser pools fill at a [specified rate](https://www.kernel.sh/docs/api-reference/browser-pools/create-a-browser-pool#body-fill-rate-per-minute). Read about browser pool lifecycle best practices [here](/browsers/pools#how-browser-pools-work).
0 commit comments