Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
22 changes: 22 additions & 0 deletions .github/workflows/broken-links.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Check Broken Links

on:
pull_request:
push:
branches: [main]

jobs:
broken-links:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install Mintlify CLI
run: npm install -g mint

- name: Check for broken links
run: mint broken-links
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,4 @@ We welcome contributions to the documentation. Please feel free to submit a pull

## License

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
2 changes: 1 addition & 1 deletion apps/status.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Once you've [deployed](/apps/deploy) an app and invoked it, you can monitor its

## Streaming Status Updates

For real-time status monitoring, use `follow` to [stream invocation events](/api-reference/invocations/stream-invocation-events-via-sse). This provides immediate updates as your invocation progresses and is more efficient than polling.
For real-time status monitoring, use `follow` to [stream invocation events](https://kernel.sh/docs/api-reference/invocations/stream-invocation-events-via-sse). This provides immediate updates as your invocation progresses and is more efficient than polling.

<CodeGroup>
```typescript Typescript/Javascript
Expand Down
4 changes: 2 additions & 2 deletions auth/faq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Passkey-based authentication (e.g., Google accounts with passkeys enabled) is no

## What happens if login fails?

If a login attempt fails, Kernel will retry with exponential backoff. After multiple failures, the [login flow](/auth/hosted-ui) will be marked as failed and you'll receive an error with a specific error code. Common codes include `credentials_invalid`, `bot_detected`, and `captcha_blocked`. See the [API reference](/api-reference) for the full list of error codes.
If a login attempt fails, Kernel will retry with exponential backoff. After multiple failures, the [login flow](/auth/hosted-ui) will be marked as failed and you'll receive an error with a specific error code. Common codes include `credentials_invalid`, `bot_detected`, and `captcha_blocked`. See the [API reference](https://kernel.sh/docs/api-reference/managed-auth/start-login-flow) for the full list of error codes.

Common failure reasons include:

Expand Down Expand Up @@ -94,7 +94,7 @@ if state.status == "NEEDS_AUTH":

## What types of flows does Managed Auth support?

Managed Auth is designed for login and authentication flows — entering credentials, handling SSO redirects, completing MFA challenges, and maintaining sessions. For other browser interactions like form filling, sign-ups, or multi-step workflows, use [Kernel's browser automation](/browsers/overview) directly.
Managed Auth is designed for login and authentication flows — entering credentials, handling SSO redirects, completing MFA challenges, and maintaining sessions. For other browser interactions like form filling, sign-ups, or multi-step workflows, use [Kernel's browser automation](/browsers/create-a-browser) directly.

## How do I debug a managed auth session?

Expand Down
4 changes: 2 additions & 2 deletions auth/profiles.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ print("Live view:", kernel_browser2.browser_live_view_url)

## Loading a profile into an existing browser

You can load a profile into a browser after it has been created using the [update browser endpoint](/api-reference/browsers/update-browser-session).
You can load a profile into a browser after it has been created using the [update browser endpoint](https://kernel.sh/docs/api-reference/browsers/update-browser-session).

<CodeGroup>
```typescript Typescript/Javascript
Expand Down Expand Up @@ -142,7 +142,7 @@ You cannot load a profile into a browser that was already created with a profile

## Other ways to use profiles

The API and SDKs support listing, deleting, and downloading profile data as JSON. See the [API reference](/api-reference/profiles/list-profiles) for more details.
The API and SDKs support listing, deleting, and downloading profile data as JSON. See the [API reference](https://kernel.sh/docs/api-reference/profiles/list-profiles) for more details.

## Multiple auth connections per profile

Expand Down
4 changes: 2 additions & 2 deletions browsers/extensions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ document.body.innerHTML = document.body.innerHTML.replace(/AI/g, "A1");
```
</CodeGroup>

Once these files are in place, you can upload them to Kernel via the CLI (or [API](/api-reference/extensions/upload-a-browser-extension)):
Once these files are in place, you can upload them to Kernel via the CLI (or [API](https://kernel.sh/docs/api-reference/extensions/upload-a-browser-extension)):

```bash
kernel extensions upload ./my-extension --name my-extension
Expand Down Expand Up @@ -93,7 +93,7 @@ kernel extensions upload ./downloaded-extension --name my-extension

## Loading an extension into a running browser

If you have a browser running and would like to load an extension into it after the browser session has started, Kernel also allows you to do that via the CLI (or [API](/api-reference/browsers/ad-hoc-upload-one-or-more-unpacked-extensions-to-a-running-browser-instance)):
If you have a browser running and would like to load an extension into it after the browser session has started, Kernel also allows you to do that via the CLI (or [API](https://kernel.sh/docs/api-reference/browsers/ad-hoc-upload-one-or-more-unpacked-extensions-to-a-running-browser-instance)):

```bash CLI
kernel browsers extensions upload <session_id> ./my-extension
Expand Down
2 changes: 1 addition & 1 deletion browsers/pools/managing-browsers.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: "Managing Browsers"
description: "Customize Chrome behavior in reserved browser pools using Chrome policies"
---

Browser pools accept an optional [`chrome_policy`](/api-reference/browser-pools/create-a-browser-pool#body-chrome-policy) object that lets you apply [Chrome enterprise policies](https://chromeenterprise.google/policies/) to every browser in the pool. Use this to control startup behavior, default homepages, bookmarks, and other browser-level settings.
Browser pools accept an optional [`chrome_policy`](https://kernel.sh/docs/api-reference/browser-pools/create-a-browser-pool#body-chrome-policy) object that lets you apply [Chrome enterprise policies](https://chromeenterprise.google/policies/) to every browser in the pool. Use this to control startup behavior, default homepages, bookmarks, and other browser-level settings.

## Setting chrome policies

Expand Down
8 changes: 4 additions & 4 deletions browsers/pools/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@ print(pool.id)

### Pool configuration options

Pools can be pre-configured with options like custom extensions, supported viewports, residential proxies, profiles, and more. See the [API reference](/api-reference/browser-pools/create-a-browser-pool) for more details.
Pools can be pre-configured with options like custom extensions, supported viewports, residential proxies, profiles, and more. See the [API reference](https://kernel.sh/docs/api-reference/browser-pools/create-a-browser-pool) for more details.

## Acquire a browser

Acquire a browser from the pool. The request returns immediately if a browser is available, or waits until one becomes available. The `acquire_timeout_seconds` parameter controls how long to wait; it defaults to the calculated time it would take to fill the pool at the pool's configured [fill rate](/api-reference/browser-pools/create-a-browser-pool#body-fill-rate-per-minute).
Acquire a browser from the pool. The request returns immediately if a browser is available, or waits until one becomes available. The `acquire_timeout_seconds` parameter controls how long to wait; it defaults to the calculated time it would take to fill the pool at the pool's configured [fill rate](https://kernel.sh/docs/api-reference/browser-pools/create-a-browser-pool#body-fill-rate-per-minute).

<CodeGroup>
```typescript Typescript/Javascript
Expand All @@ -84,7 +84,7 @@ The acquired browser includes all the same properties as a regular browser sessi

### Timeout behavior

Browsers remain in the pool indefinitely until acquired. Once acquired, the pool's `timeout_seconds` applies just like a [regular browser timeout](/browsers/termination#automatic-deletion-via-timeout)—if the browser is idle (no CDP or live view connection) for longer than the timeout, it is destroyed and **not** returned to the pool. The pool will automatically create a replacement browser at the pool's configured [fill rate](/api-reference/browser-pools/create-a-browser-pool#body-fill-rate-per-minute).
Browsers remain in the pool indefinitely until acquired. Once acquired, the pool's `timeout_seconds` applies just like a [regular browser timeout](/browsers/termination#automatic-deletion-via-timeout)—if the browser is idle (no CDP or live view connection) for longer than the timeout, it is destroyed and **not** returned to the pool. The pool will automatically create a replacement browser at the pool's configured [fill rate](https://kernel.sh/docs/api-reference/browser-pools/create-a-browser-pool#body-fill-rate-per-minute).

## Release a browser

Expand Down Expand Up @@ -276,4 +276,4 @@ asyncio.run(main())

## API reference

For more details on all available endpoints and parameters, see the [Browser Pools API reference](/api-reference/browser-pools/list-browser-pools).
For more details on all available endpoints and parameters, see the [Browser Pools API reference](https://kernel.sh/docs/api-reference/browser-pools/list-browser-pools).
2 changes: 1 addition & 1 deletion browsers/viewport.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ wuxga = kernel.browsers.create(

## Dynamically changing the viewport

You can change the viewport of a browser after it has been created using the [update browser endpoint](/api-reference/browsers/update-browser-session).
You can change the viewport of a browser after it has been created using the [update browser endpoint](https://kernel.sh/docs/api-reference/browsers/update-browser-session).

<CodeGroup>
```typescript Typescript/Javascript
Expand Down
16 changes: 8 additions & 8 deletions changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n
## Documentation updates

- Documented MFA token auto-retry behavior for [managed auth](/auth/overview) sessions.
- Added a new [Managing Browsers](/browsers/scaling/reserved) page to the Reserved Browsers documentation.
- Added a new [Managing Browsers](/browsers/pools/managing-browsers) page to the Reserved Browsers documentation.
- Clarified that [profiles](/auth/profiles) can have multiple auth connections.
- Added a Headful + GPU acceleration option to the [pricing calculator](/info/pricing#pricing-calculator).
</Update>
Expand Down Expand Up @@ -81,7 +81,7 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n

- Added WebDriver BiDi support for cloud browsers through a new [partnership with Vibium](https://www.kernel.sh/docs/integrations/computer-use/vibium). AI agents can now use Vibium to connect to Kernel and navigate pages, fill forms, click buttons, and take screenshots across thousands of cloud browsers running in parallel.
- Launched [Kernel Eval Protocol](https://github.com/kernel/kernel-eval-protocol-quickstart), an open-source repo that pairs Kernel Browser Pools with Fireworks RFT and [Eval Protocol](https://github.com/fw-ai/eval-protocol) to evaluate and fine-tune VLM browser agents using reinforcement learning.
- Added a `usage` field to the [browser session details](/api-reference/browsers/get-browser-session-details#response-usage) API response, which returns session metrics like `uptime_ms`. Use this to track session duration and build billing or analytics workflows around your browser usage.
- Added a `usage` field to the [browser session details](https://kernel.sh/docs/api-reference/browsers/get-browser-session-details#response-usage) API response, which returns session metrics like `uptime_ms`. Use this to track session duration and build billing or analytics workflows around your browser usage.
- Extended smooth Bezier curve mouse movements to click and drag operations, and added `--smooth` and `--duration-ms` flags to the `move-mouse` command in the [CLI](https://github.com/kernel/cli) for more natural-looking browser interactions.
- Improved headless viewport resize performance by using a CDP fast path, reducing resize time from ~5 seconds to ~10 milliseconds.
- Added support for [runtime proxy configuration swapping](https://www.kernel.sh/docs/proxies/overview#update-a-browsers-proxy), enabling you to change a browser's proxy settings mid-session without restarting.
Expand All @@ -99,7 +99,7 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n
- Added support for [mobile and tablet viewports](/browsers/viewport), enabling browser automation at phone and tablet screen sizes.
- Added a `kernel status` command to the [CLI](https://github.com/kernel/cli) for checking API and service health at a glance.
- Added a `--force` flag to `kernel browsers update` for [resizing the viewport](/browsers/viewport) during an active recording, which gracefully stops and restarts the recording.
- Improved [Managed Auth](/profiles/managed-auth/overview) MFA handling by resolving MFA options by label, type, or display string for more reliable multi-factor authentication flows.
- Improved [Managed Auth](/auth/overview) MFA handling by resolving MFA options by label, type, or display string for more reliable multi-factor authentication flows.
- Enhanced auth connection output in the [CLI](https://github.com/kernel/cli) with richer details from `kernel auth connections get` and `kernel auth connections list`.
- Added a Pool column and `--query` flag to `kernel browsers list` in the [CLI](https://github.com/kernel/cli) for easier filtering and identification of pooled browsers.
- Updated the Anthropic computer use [template](https://github.com/kernel/cli/tree/main/pkg/templates) to default to use claude-sonnet-4-6 for improved agent performance.
Expand All @@ -110,7 +110,7 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n

## Documentation updates

- Renamed "Scaling in Production" to [Reserved Browsers](/browsers/scaling/overview) and added a new [On-Demand Browsers](/browsers/scaling/on-demand) section for clearer guidance on browser provisioning strategies.
- Renamed "Scaling in Production" to [Reserved Browsers](/browsers/pools/overview) and added a new [On-Demand Browsers](/browsers/create-a-browser) section for clearer guidance on browser provisioning strategies.
- Added [mobile and tablet viewport configurations](/browsers/viewport) with supported screen sizes and usage guidance.
- Added [proxy-bypass-hosts](https://www.kernel.sh/docs/proxies/overview#bypass-hosts) documentation for configuring proxy bypass lists on browser pools.
- Documented the `--force` flag for [viewport resizing](/browsers/viewport) during active recordings.
Expand Down Expand Up @@ -154,7 +154,7 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n
<YouTubeVideo videoId="lK3YR8qzeH4" title="Introducing Managed Auth" />
- Launched [Web Bot Auth](/browsers/bot-detection/web-bot-auth) in partnership with Vercel, enabling agents to cryptographically sign requests and prove they're legitimate instead of getting blocked by bot detection.
- Released [Managed Auth](/auth/overview), simplifying authentication by securely logging into any site without custom auth flows or exposing credentials to the LLM, and maintaining up-to-date credentials.
- Added a `POST /computer/batch` [endpoint](/api-reference/browsers/execute-a-batch-of-computer-actions-sequentially) for executing multiple computer actions in a single API call, reducing round-trip latency for complex automations.
- Added a `POST /computer/batch` [endpoint](https://kernel.sh/docs/api-reference/browsers/execute-a-batch-of-computer-actions-sequentially) for executing multiple computer actions in a single API call, reducing round-trip latency for complex automations.
- Improved the [CLI](https://github.com/onkernel/cli) by adding new commands for managing auth connections, supporting `-o json` output for `kernel ssh --setup-only`, allowing pool names as positional arguments in `kernel browser-pools create`, and enabling file exclusions when publishing extensions.
- Improved input reliability with context-aware timing in key press and mouse drag operations.
- Fixed an issue where stealth mode browsers couldn't access plain HTTP websites due to forced HTTPS redirects.
Expand All @@ -167,8 +167,8 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n
<Update label="February 6" tags={["Product", "Docs"]}>
## Product updates
- Added a `/json` endpoint to the CDP proxy, enabling native Playwright `connectOverCDP()` connections.
- Launched an [API](/api-reference/browsers/get-the-current-mouse-cursor-position-on-the-browser-instance) to get the current cursor position, which is useful for debugging and building adaptive automation logic.
- Released an [API](/api-reference/invocations/list-browsers-for-an-invocation) to retrieve browser session IDs associated with a specific invocation.
- Launched an [API](https://kernel.sh/docs/api-reference/browsers/get-the-current-mouse-cursor-position-on-the-browser-instance) to get the current cursor position, which is useful for debugging and building adaptive automation logic.
- Released an [API](https://kernel.sh/docs/api-reference/invocations/list-browsers-for-an-invocation) to retrieve browser session IDs associated with a specific invocation.
- Added [SSH access](/browsers/ssh) to Kernel browsers for debugging, running commands, and tunneling your local development server to the browser.
- Enabled support for the [1280x800 viewport](/browsers/viewport#supported-viewport-configurations) size, which improves click coordinate accuracy.
- The Live View clipboard now syncs correctly between browser and local machine.
Expand Down Expand Up @@ -244,7 +244,7 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n

<Update label="December 5" tags={["Product", "Docs"]}>
## Product updates
- Added option to include ephemeral and deleted browsers when [listing sessions](/api-reference/browsers/list-browser-sessions) via API
- Added option to include ephemeral and deleted browsers when [listing sessions](https://kernel.sh/docs/api-reference/browsers/list-browser-sessions) via API
- Updated the [maximum timeout](/browsers/termination#automatic-deletion-via-timeout) available from 24 hours to 72 hours of no CDP activity
- Updated the maximum async invocation [duration](/apps/invoke#asynchronous-invocations) from 15 minutes to 1 hour
- Improved error messaging when invalid invocation IDs are provided
Expand Down
2 changes: 1 addition & 1 deletion integrations/vibium.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ Or in your Claude Desktop / Claude Code config:
- **No local browser management**: Run automations without installing or maintaining browsers locally
- **Scalability**: Launch multiple browser sessions in parallel
- **Stealth mode**: Built-in anti-detection features for web scraping
- **Session state**: Maintain browser state across runs via [Profiles](/profiles/overview)
- **Session state**: Maintain browser state across runs via [Profiles](/auth/profiles)
- **Live view**: Debug your automations with real-time browser viewing

## Next steps
Expand Down
2 changes: 1 addition & 1 deletion reference/cli.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ kernel deploy index.ts -o json
See individual command documentation for JSON output availability.

<Info>
Looking for the API? See the [API Reference](/api-reference/invocations/invoke-an-action).
Looking for the API? See the [API Reference](https://kernel.sh/docs/api-reference/invocations/invoke-an-action).
</Info>

## Skills
Expand Down
4 changes: 2 additions & 2 deletions testing/profile-loading-performance.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,5 +183,5 @@ Support flexible domain matching:
## References

- [Kernel Profiles Documentation](/auth/profiles)
- [Profile API Reference](/api-reference/profiles/list-profiles)
- [Browser Creation API](/api-reference/browsers/create-a-browser)
- [Profile API Reference](https://kernel.sh/docs/api-reference/profiles/list-profiles)
- [Browser Creation API](https://kernel.sh/docs/api-reference/browsers/create-a-browser-session)
Loading