From 66a1ea80597d21b020c9c39cc8e27e8b80bcf56f Mon Sep 17 00:00:00 2001 From: Gabriel Guerra Date: Mon, 13 Apr 2026 08:55:22 -0700 Subject: [PATCH 1/3] unbroken --- .github/workflows/broken-links.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/broken-links.yml diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml new file mode 100644 index 00000000..47c11244 --- /dev/null +++ b/.github/workflows/broken-links.yml @@ -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 mintlify + + - name: Check for broken links + run: mint broken-links From 55ec7a02083db0be04b00d6e74c6e64644644f36 Mon Sep 17 00:00:00 2001 From: Gabriel Guerra Date: Mon, 13 Apr 2026 08:58:29 -0700 Subject: [PATCH 2/3] unbroken2 --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 47c11244..8d683128 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -16,7 +16,7 @@ jobs: node-version: "20" - name: Install Mintlify CLI - run: npm install -g mintlify + run: npm install -g mint - name: Check for broken links run: mint broken-links From 4171136357024768e8d05ba3e03055e836ac5978 Mon Sep 17 00:00:00 2001 From: Gabriel Guerra Date: Mon, 13 Apr 2026 09:17:03 -0700 Subject: [PATCH 3/3] ai attempt to fix all --- README.md | 2 +- apps/status.mdx | 2 +- auth/faq.mdx | 4 ++-- auth/profiles.mdx | 4 ++-- browsers/extensions.mdx | 4 ++-- browsers/pools/managing-browsers.mdx | 2 +- browsers/pools/overview.mdx | 8 ++++---- browsers/viewport.mdx | 2 +- changelog.mdx | 16 ++++++++-------- integrations/vibium.mdx | 2 +- reference/cli.mdx | 2 +- testing/profile-loading-performance.md | 4 ++-- 12 files changed, 26 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index cb0e43b9..7e558f1b 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/apps/status.mdx b/apps/status.mdx index ec14dbc7..90b8f0f2 100644 --- a/apps/status.mdx +++ b/apps/status.mdx @@ -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. ```typescript Typescript/Javascript diff --git a/auth/faq.mdx b/auth/faq.mdx index 439a8c53..95ec385d 100644 --- a/auth/faq.mdx +++ b/auth/faq.mdx @@ -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: @@ -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? diff --git a/auth/profiles.mdx b/auth/profiles.mdx index cbe07c88..e2ad8022 100644 --- a/auth/profiles.mdx +++ b/auth/profiles.mdx @@ -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). ```typescript Typescript/Javascript @@ -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 diff --git a/browsers/extensions.mdx b/browsers/extensions.mdx index 857c1ef9..2016479f 100644 --- a/browsers/extensions.mdx +++ b/browsers/extensions.mdx @@ -35,7 +35,7 @@ document.body.innerHTML = document.body.innerHTML.replace(/AI/g, "A1"); ``` -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 @@ -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 ./my-extension diff --git a/browsers/pools/managing-browsers.mdx b/browsers/pools/managing-browsers.mdx index dc507c56..c8b8153c 100644 --- a/browsers/pools/managing-browsers.mdx +++ b/browsers/pools/managing-browsers.mdx @@ -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 diff --git a/browsers/pools/overview.mdx b/browsers/pools/overview.mdx index 14e5db87..097b1488 100644 --- a/browsers/pools/overview.mdx +++ b/browsers/pools/overview.mdx @@ -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). ```typescript Typescript/Javascript @@ -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 @@ -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). diff --git a/browsers/viewport.mdx b/browsers/viewport.mdx index 16086f27..37799cae 100644 --- a/browsers/viewport.mdx +++ b/browsers/viewport.mdx @@ -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). ```typescript Typescript/Javascript diff --git a/changelog.mdx b/changelog.mdx index 8bb7cdd7..b89ba0e8 100644 --- a/changelog.mdx +++ b/changelog.mdx @@ -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). @@ -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. @@ -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. @@ -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. @@ -154,7 +154,7 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n - 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. @@ -167,8 +167,8 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n ## 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. @@ -244,7 +244,7 @@ For API library updates, see the [Node SDK](https://github.com/onkernel/kernel-n ## 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 diff --git a/integrations/vibium.mdx b/integrations/vibium.mdx index 1d51f409..e418f858 100644 --- a/integrations/vibium.mdx +++ b/integrations/vibium.mdx @@ -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 diff --git a/reference/cli.mdx b/reference/cli.mdx index e6d37494..44f7b4a5 100644 --- a/reference/cli.mdx +++ b/reference/cli.mdx @@ -85,7 +85,7 @@ kernel deploy index.ts -o json See individual command documentation for JSON output availability. -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). ## Skills diff --git a/testing/profile-loading-performance.md b/testing/profile-loading-performance.md index 1974830a..70df18a2 100644 --- a/testing/profile-loading-performance.md +++ b/testing/profile-loading-performance.md @@ -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)