Skip to content
Closed
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
a5eb212
Restructure docs navigation around how it works
andrewleesteele Sep 28, 2026
d6f012d
List every Kernel skill and update the introduction page
andrewleesteele Sep 28, 2026
1f40677
Split agent and browser automation frameworks on integrations
andrewleesteele Sep 28, 2026
4f4df66
Restore wallets, Web Bot Auth, and Vercel template on integrations
andrewleesteele Sep 28, 2026
2639ce6
Lead the quickstart with the coding-agent path
andrewleesteele Sep 28, 2026
e96a02c
Explain the unikernel architecture on the introduction page
andrewleesteele Sep 28, 2026
183fe9b
Rewrite the introduction page
andrewleesteele Sep 28, 2026
1e815ae
Add concepts page and diagrams; reorder products, control, and integr…
andrewleesteele Sep 28, 2026
937b374
Refine introduction and move plan limits into Scale
andrewleesteele Sep 28, 2026
6b6c139
Merge main and place its new pages in the new navigation
andrewleesteele Oct 1, 2026
b2a8980
Merge remote-tracking branch 'origin/main' into hypeship/docs-ia-v2
andrewleesteele Oct 2, 2026
b94370a
Revise the introduction's opening paragraph
andrewleesteele Oct 2, 2026
93e05ff
Put KERNEL first in the architecture diagram and expand open source l…
andrewleesteele Oct 2, 2026
9f20871
Reword the benefits lead-in on the introduction
andrewleesteele Oct 2, 2026
8250ea7
Shorten the hypeman card on the introduction
andrewleesteele Oct 2, 2026
76806ef
Clarify product cards and replace ways in with get started
andrewleesteele Oct 2, 2026
6eeff35
Sharpen the See all products subheader
andrewleesteele Oct 2, 2026
70c7a4e
Shorten the browsers card on See all products
andrewleesteele Oct 2, 2026
5e31924
Simplify the important concepts diagram to three components
andrewleesteele Oct 2, 2026
88bc70a
Highlight KERNEL's automation tooling on important concepts
andrewleesteele Oct 2, 2026
1caa721
Organize important concepts around the three components
andrewleesteele Oct 2, 2026
6775867
Summarize agent framework pieces as bullets on important concepts
andrewleesteele Oct 2, 2026
141882d
Link the introduction's architecture story to the scaling blog post
andrewleesteele Oct 2, 2026
41b043c
Link browser creation speed to the benchmarks page
andrewleesteele Oct 2, 2026
7cf65ec
Move KERNEL resources on important concepts into one table
andrewleesteele Oct 2, 2026
3a4bf22
Refine framework examples, infrastructure framing, and KERNEL table o…
andrewleesteele Oct 2, 2026
2c029f0
Drop redundant line from browser infrastructure on important concepts
andrewleesteele Oct 2, 2026
49c1a66
Move Config Registry to the end of the browser infrastructure row
andrewleesteele Oct 2, 2026
fe27b63
Note how browser infrastructure affects scaling on important concepts
andrewleesteele Oct 2, 2026
4f953c5
Call out scaling on important concepts
andrewleesteele Oct 2, 2026
989acea
Move computer use models into the KERNEL table and clarify the model'…
andrewleesteele Oct 2, 2026
34c129c
Split browser infrastructure into bullets on important concepts
andrewleesteele Oct 2, 2026
6286bff
Loosen piece counts on important concepts
andrewleesteele Oct 2, 2026
79537f2
Drop example tool call from the model bullet
andrewleesteele Oct 2, 2026
aeb8c60
Lead Why KERNEL with performance and framework pairing
andrewleesteele Oct 2, 2026
86025d2
Reference benchmarks on Why KERNEL and cover lifecycle and throughput
andrewleesteele Oct 2, 2026
8d26a17
Expand what sets KERNEL apart on Why KERNEL
andrewleesteele Oct 2, 2026
9b288b9
Focus what sets KERNEL apart on headful, VM isolation, and platform p…
andrewleesteele Oct 2, 2026
18446d9
Reorder the run-it-yourself table and add sensitive credentials row
andrewleesteele Oct 2, 2026
7f29ae5
Tone down the debugging row and focus scaling on plan limits
andrewleesteele Oct 2, 2026
2f7f078
Clarify the computer use example on Why KERNEL
andrewleesteele Oct 2, 2026
2305699
Reference only the KERNEL benchmarks page on Why KERNEL
andrewleesteele Oct 2, 2026
4f7a9b4
Reorder architecture benefits on the introduction
andrewleesteele Oct 2, 2026
ff39a8b
Reorder open source cards on the introduction
andrewleesteele Oct 2, 2026
9db832a
Point Why KERNEL to how it works, add P99 creation latency, fix pool …
andrewleesteele Oct 2, 2026
cdd32c1
Move the how it works pointer on Why KERNEL into its own summary line
andrewleesteele Oct 2, 2026
6890bf2
Move the get started grid from See all products to the quickstart
andrewleesteele Oct 2, 2026
4f68261
Move Config Registry to the internet row on important concepts
andrewleesteele Oct 2, 2026
2bb0436
Replace the MPP card on the quickstart with the REST API
andrewleesteele Oct 2, 2026
bcd108a
Tighten the quickstart
andrewleesteele Oct 2, 2026
1ed6ccb
Reorder quickstart options and give both paths matching steps
andrewleesteele Oct 2, 2026
d5f8553
Reorder quickstart options
andrewleesteele Oct 2, 2026
8cd6db5
Return quickstart path 1 to a description, button, and stacked accord…
andrewleesteele Oct 2, 2026
41157dd
Move quickstart next steps out of path 2 to the end of the page
andrewleesteele Oct 2, 2026
afbc125
Widen the quickstart copy prompt button and reorder agent names
andrewleesteele Oct 2, 2026
6bf324f
Reorder cookbook common patterns and group harness recipes by type
andrewleesteele Oct 2, 2026
18abd83
Rename the profile comparison skill card and add a generic plugin ins…
andrewleesteele Oct 2, 2026
13c09f2
Order Kernel CLI skill topics by relevance
andrewleesteele Oct 2, 2026
caf343e
Remove the Kernel CLI skill pointer from Agent Skills
andrewleesteele Oct 2, 2026
efa9be3
Add starter Codex and OpenAI Agents SDK integration pages
andrewleesteele Oct 2, 2026
acf0556
Reorder integration cards and credit Web Bot Auth to Cloudflare
andrewleesteele Oct 2, 2026
0a72738
Move Codex after Claude Managed Agents on integrations
andrewleesteele Oct 2, 2026
03a6889
Add overview pages for Configure and Manage
andrewleesteele Oct 2, 2026
cb21c50
Move Agent Skills and Integrations above Cookbooks in the sidebar
andrewleesteele Oct 2, 2026
bcbd674
Fold browser settings into the Configure overview
andrewleesteele Oct 2, 2026
17dc197
Clarify Configure feature sections
andrewleesteele Oct 2, 2026
f6e8ba1
Group managed auth pages and merge credentials into configuration
andrewleesteele Oct 2, 2026
a627d85
Repoint changelog links to the merged credentials section
andrewleesteele Oct 2, 2026
e7b1668
Restructure Control around the ways to drive the browser
andrewleesteele Oct 2, 2026
0e1bcef
Order Scale as concurrency and limits, performance, then browser pools
andrewleesteele Oct 2, 2026
f7ad11f
Lead the Scale overview with limits and performance
andrewleesteele Oct 2, 2026
2f04b3c
Group browser telemetry pages under Observe
andrewleesteele Oct 2, 2026
5b3ca7f
Name each section overview in the sidebar
andrewleesteele Oct 2, 2026
49c9855
Give integration overview pages specific titles
andrewleesteele Oct 2, 2026
9bfb701
Put the section name in overview page titles, keep Overview in the si…
andrewleesteele Oct 2, 2026
72ce807
Reorder Manage, add multi-tenant guidance, and clarify the firewall a…
andrewleesteele Oct 2, 2026
e8325eb
Add Enterprise to the pricing calculator and reorder the pricing FAQ
andrewleesteele Oct 2, 2026
13e60f0
Reorganize Partnering with KERNEL
andrewleesteele Oct 2, 2026
1862987
Add a Billing group and reorder Partnering with KERNEL
andrewleesteele Oct 2, 2026
7cda265
Make plans and pricing top level and move spending caps into Billing
andrewleesteele Oct 2, 2026
e410a7d
Merge main and add the e2e integration card
andrewleesteele Oct 5, 2026
b4673cd
Apply review feedback across the IA restructure
andrewleesteele Oct 6, 2026
7d4227b
Merge main and add the Docker Sandboxes integration card
andrewleesteele Oct 6, 2026
6c329a5
Focus the introduction's open source section on the browser image and…
andrewleesteele Oct 6, 2026
a843ddd
Use monochrome logos for Yutori, OpenAGI, Tzafon, and OpenAI
andrewleesteele Oct 6, 2026
40b84eb
Group Partnering with KERNEL into four entries
andrewleesteele Oct 6, 2026
7328b22
Label the bots page by what site operators come to do
andrewleesteele Oct 6, 2026
864e318
Keep old section anchors working after the restructure
andrewleesteele Oct 6, 2026
5506ea3
Apply review suggestions to See all features
andrewleesteele Oct 7, 2026
fb3972c
Remove the Generate Video skill from Agent Skills
andrewleesteele Oct 7, 2026
55efb01
Drop Overview from landing page titles
andrewleesteele Oct 7, 2026
58d58f7
Add a control the browser VM section to See all features
andrewleesteele Oct 7, 2026
182e2d2
Hide the page eyebrow when it repeats the page title
andrewleesteele Oct 7, 2026
574eb5b
Merge main: place Fill from Managed Auth and repoint its credentials …
andrewleesteele Oct 7, 2026
c47d7cc
Move See all features to /overview/features
andrewleesteele Oct 7, 2026
c222dce
Keep Control the browser VM to four cards on See all features
andrewleesteele Oct 7, 2026
c199880
Move Control the browser VM below credentials on See all features
andrewleesteele Oct 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion auth/fill-from-vault.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Overview"
title: "Fill from Vault"
description: "Collect end-user credentials and inject them into browser forms while controlling the login workflow"
---

Expand Down
2 changes: 1 addition & 1 deletion auth/managed-auth.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Overview"
title: "Managed Auth"
description: "Handle website login, reuse session state, and recover eligible connections automatically"
---

Expand Down
87 changes: 87 additions & 0 deletions browsers/browser-loop.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
title: "Browser Loop"
description: "A framework-neutral browser tool catalog for your agent, executed against a Kernel browser"
---

Browser Loop gives your agent browser tools. You pick the tools, it supplies the declarations each model provider accepts, executes every action against a [Kernel browser](/introduction/create), and returns plain objects your existing agent loop can use.

It's open source ([`kernel/browser-loop`](https://github.com/kernel/browser-loop), MIT) and published as [`@onkernel/browser-loop`](https://www.npmjs.com/package/@onkernel/browser-loop).

Reach for it when you're building an agent and don't want to write the translation layer between "the model asked to click at (420, 280)" and an actual browser action. If you're driving the browser yourself from a script, use [Playwright execution](/browsers/playwright-execution) or [computer controls](/browsers/computer-controls) directly.

## What it handles

Frontier models expose browser and computer control differently: native computer-use declarations, predefined browser action sets, ordinary function tools, different coordinate systems, different screenshot and result contracts. Every one of them still expects you to run a real browser, translate each action into an SDK call, and capture the right feedback so the model can verify the action landed.

Browser Loop does that and stops there. It doesn't supply an agent class, a session format, or a UI — your framework already has those.

- **Framework-neutral tool catalog.** Tool identities (`kloop.*.v1`) and model-facing names are byte-identical across bindings, so transcripts and evals stay comparable.
- **Kernel-browser execution.** Canonical actions run through Kernel's computer API or a raw-CDP executor against a session with your [profile](/browsers/profiles) and [proxy](/proxies/overview).
- **Per-model compatibility.** Provider transforms compose only the declarations and request fields the tools you selected require.
- **A pi binding and extension**, with Eve and AI SDK bindings next.

## Install

```bash
npm install @onkernel/browser-loop
```

## Build an agent

`attach()` binds a browser once; `compile()` turns a (model, tools) pair into plain agent objects.

```typescript
import Kernel from '@onkernel/sdk';
import { Agent } from '@earendil-works/pi-agent-core';
import { loop } from '@onkernel/browser-loop';
import { attach } from '@onkernel/browser-loop/pi';

const client = new Kernel();
const browser = await client.browsers.create({ stealth: true });
const kb = attach({ client, browser });

const { model, agentTools, models } = kb.compile({
model: 'anthropic:claude-opus-5',
tools: [...loop.toolsets.browser(), loop.tools.browser.act()],
});

const agent = new Agent({
streamFn: (selected, context, options) => models.streamSimple(selected, context, options),
initialState: { model, tools: [...agentTools], systemPrompt: 'Use the supplied browser tools.' },
});

try {
await agent.prompt('Open example.com and report the heading.');
} finally {
await kb.dispose();
await client.browsers.deleteByID(browser.session_id);
}
```

The compiled `model` and `agentTools` have to reach the agent together: selecting a provider-native browser or computer surface can change the transport the model needs, and that's derived from the tools you chose.

## Check which tools a model accepts

Not every model accepts every tool, and two providers' native surfaces can't coexist. Ask instead of guessing — and rebuild the menu after each change rather than caching a per-tool verdict:

```typescript
import { loopToolMenu } from '@onkernel/browser-loop';
import { getLoopModel } from '@onkernel/browser-loop/pi';

for (const entry of loopToolMenu(getLoopModel('openai:gpt-5.6-sol'))) {
console.log(entry.label, entry.available ? 'ok' : `unavailable: ${entry.unavailableReason}`);
}
```

## Try it from a terminal first

The pi extension contributes the same tools to a pi session, so you can find out which tools and which model actually work for your use case before deploying anything. Same catalog, same tool identities, same model knowledge as the SDK path:

```bash
pi install npm:@onkernel/browser-loop
pi -p --browser-tools browser,browser-act "open example.com and report the heading"
```

<Card title="Repository and architecture docs" href="https://github.com/kernel/browser-loop" horizontal>
Harness variant, swapping tools on a running session, and tool contexts.
</Card>
61 changes: 61 additions & 0 deletions browsers/concurrency-and-limits.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: "Concurrency and Limits"
description: "How many browsers you can run, how fast you can create them, and what each one gets"
---

Three separate limits shape a scaled workload, and they're easy to confuse. Concurrency caps how many browsers exist at once. The create rate caps how fast you can ask for new ones. Per-browser resources cap what one browser can do.

## Concurrency

One org-wide limit covers every browser you're running, whether created on demand with `browsers.create()` or reserved in a [browser pool](/browsers/pools). The full limit is available to either API in any mix.

| Plan | Concurrent browsers |
| --- | --- |
| Developer | 5 |
| Hobbyist | 10 |
| Start-Up | 150 |
| Enterprise | Custom |

Two things count against it that people don't expect:

- **Reserved pool capacity counts whether or not it's acquired.** A pool sized to 40 browsers uses 40 of your limit for as long as it exists.
- **Browsers in [standby](/browsers/standby) count.** Standby stops usage charges, not the concurrency slot. Delete the browser to release it.

Set per-project caps if you're splitting one org limit across teams or environments — see [project concurrency limits](/info/projects#concurrency-limits).

## Create rate

Browser creation is rate limited separately from concurrency. The create rate caps how fast you can create browsers, not how many you may run.

{/* TODO: add the per-plan browser-create rate table once the numbers are confirmed. */}

Acquiring from a [browser pool](/browsers/pools) isn't subject to the create rate — the pool's browsers already exist. If your traffic arrives in bursts, that's the reason to use a pool even when your concurrency headroom is fine.

### What happens at the limit

Exceeding the create rate returns `429 Too Many Requests` with a `Retry-After` header, and rate-limited responses carry `X-RateLimit-Limit` and `X-RateLimit-Remaining`.

All Kernel SDKs retry a `429` up to 2 times, honoring `Retry-After`. If retries are exhausted, the SDK raises a typed `RateLimitError` carrying the response headers, so you can apply your own backoff. Queue on your side rather than tightening the retry loop: a `429` means the org is over budget for the minute, so retrying faster doesn't help.

If you're hitting the ceiling in normal operation, [contact us](https://calendly.com/d/d3tn-5kp-5yt) — the limit is raisable.

## Per-browser resources

| Resource | Headful | Headless |
| --- | --- | --- |
| Default memory | 8 GB | 1 GB |

Memory is the practical ceiling on how many tabs and how heavy a page one browser handles. A [headless](/browsers/headless) browser at 1 GB is sized for short-lived, single-page, high-concurrency automation; open a dozen heavy tabs in one and Chromium starts killing renderers. If your workload needs many concurrent pages, spread it across more browsers rather than more tabs in one. [Browser pools](/browsers/pools) accept a `memory` setting when a workload needs more than the default.

[GPU acceleration](/browsers/gpu-acceleration) is a separate browser type with its own [usage rate](/info/pricing#usage-rates), available on Start-Up and Enterprise.

## Other limits worth knowing

| Limit | Where |
| --- | --- |
| Browser `timeout_seconds` (default 60, max 259200 / 72h) | [Termination](/browsers/termination) |
| Pool `timeout_seconds` (default 600) and fill rate | [Browser pools](/browsers/pools) |
| App invocation concurrency, per plan and per app | [Pricing](/info/pricing#concurrency-limits) |
| Managed auth health check interval, per plan | [Connection lifecycle](/auth/connection-lifecycle) |
| Replay retention, extensions, projects, per plan | [Pricing](/info/pricing#managed-infrastructure) |
| Monthly spend | [Spending caps](/info/spending-caps) |
1 change: 1 addition & 0 deletions browsers/curl.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: "Curl"
sidebarTitle: "Browser Curl"
description: "Send HTTP requests through Kernel browsers"
---

Expand Down
1 change: 1 addition & 0 deletions browsers/payments.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: "Payments"
sidebarTitle: "Overview"
description: "Let browser agents complete purchases without handling raw payment details"
---

Expand Down
9 changes: 5 additions & 4 deletions cookbooks.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: "cookbooks"
sidebarTitle: "Cookbooks"
description: "end-to-end recipes to teach agents to use the internet"
mode: "wide"
---
Expand All @@ -13,6 +14,10 @@ import { CookbookSearch } from '/snippets/cookbook-search.jsx';
## Common patterns

<Columns className="responsive-columns" cols={3}>
<Card title="Playwright & Computer Use" img="/images/cookbooks/playwright.png" href="/browsers/playwright-computer-use-fallback">
<div className="cookbook-tag">common patterns</div>
Using Playwright with computer use fallback.
</Card>
<Card title="Human-in-the-loop Credentials" img="/images/cookbooks/hitl-creds.png" href="/browsers/use-vault-credentials-in-browser-agent">
<div className="cookbook-tag">common patterns</div>
Collect credentials from a human, then let your agent fill the form.
Expand All @@ -21,10 +26,6 @@ import { CookbookSearch } from '/snippets/cookbook-search.jsx';
<div className="cookbook-tag">common patterns</div>
Enable Payments in a Browser Agent.
</Card>
<Card title="Playwright & Computer Use" img="/images/cookbooks/playwright.png" href="/browsers/playwright-computer-use-fallback">
<div className="cookbook-tag">common patterns</div>
Using Playwright with computer use fallback.
</Card>
<Card title="Pausing for Captcha Solves" img="/images/cookbooks/captcha-solving.png" href="/browsers/telemetry/pausing-for-captcha-solves">
<div className="cookbook-tag">common patterns</div>
Hold an agent while Kernel's captcha solver works, and tell it what actually happened.
Expand Down
Loading
Loading