# AX Check: kernel.sh
Checked 2026-09-19.

Kernel.sh's docs, install, and pricing are all agent-ready.
All 23 checked items passed: quickstart, CLI/SDK install, API/MCP references, and pricing (Free $0, Hobbyist $30, Start-Up $200) are stated plainly.

## Onboarding needs a login

## Coding sessions
Three independent sessions attempted the quickstart and pricing task. One stopped before finishing due to local setup steps beyond its scope. The other two completed and accurately reported tiered pricing and usage rates, with one also noting a credit-based cost structure and its assumptions.

### DeepSeek V4 Pro
[View public run](https://agents.withgauge.com/p/runs/0786a37c-04a5-4c42-96ef-27dd1b9f4088) · [Read transcript](https://www.ax-check.com/kernel.sh/sessions/deepseek.json)

#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a real Kernel API key. It reached the docs and pricing pages, installed the official Python SDK, wrote a working example script, and confirmed via a live API call that a placeholder key returns AuthenticationError: Invalid or disabled API key. It never signed up at the dashboard (dashboard.onkernel.com) to get a real credential, so no authenticated operation against the hosted product was ever demonstrated.
  Event 169:

  ```text
  kernel.AuthenticationError: Invalid or disabled API key
  ```
  Event 167:

  ```text
  Traceback (most recent call last):
    File "/sandbox/repo/example_kernel.py", line 74, in <module>
      main()
    File "/sandbox/repo/example_kernel.py", line 41, in main
      browser = kernel.browsers.create(
  ```
  Event 161:

  ```text
  export KERNEL_API_KEY=...  # create at: https://dashboard.onkernel.com
  ```

#### Hallucinated URLs
- **Guessed usekernel.com domain resolved to an unrelated casino site**: The agent tried usekernel.com as a guess for the product's site before finding the real docs at kernel.sh. The domain resolved successfully but served unrelated third-party content (a casino affiliate site), not a 404 — this was a bad guess rather than a documented broken link, and the agent correctly abandoned it after inspecting the response.
  Event 19:

  ```text
  <html>
  <head><title>403 Forbidden</title></head>
  <body>
  <center><h1>403 Forbidden</h1></center>
  <hr><center>nginx</center>
  </body>
  </html>
  
  ```
  Event 53:

  ```text
  <title>MadSlots Casino UK | Login, Free Spins &amp; No-Deposit Bonus 2026</title>
  ```
- **Guessed kernel.so domain led to a parked GoDaddy page**: The agent also guessed kernel.so as a possible product domain. It returned a parked-domain error page, confirming this was an incorrect guess rather than the real product site (kernel.sh).
  Event 58:

  ```text
  You don't have permission to access "http&#58;&#47;&#47;forsale&#46;godaddy&#46;com&#47;forsale&#47;www&#46;kernel&#46;so&#63;" on this server.
  ```
- **Guessed npm package names that do not exist**: The agent tried several plausible but invented npm package names (@usekernel/kernel, usekernel, kernel-sdk, kernel-memory) before finding the real package @onkernel/sdk. All four guesses returned 404 from the npm registry.
  Event 46:

  ```text
  npm error 404 Not Found - GET https://registry.npmjs.org/@usekernel%2fkernel - Not found
  ```
  Event 46:

  ```text
  npm error 404 Not Found - GET https://registry.npmjs.org/kernel-sdk - Not found
  ```

#### Blockers
- **No self-service way to obtain a Kernel API key in this sandboxed session**: Kernel requires signing up at a hosted dashboard (dashboard.onkernel.com) to get an API key; there is no way to generate real credentials via CLI/API without a human completing sign-up in a browser. This is a normal authentication requirement of the product, not a product defect, but it fully blocked any live/authenticated use of the SDK in this run — the agent could only validate the example script against a placeholder key and observe an AuthenticationError.
  Event 169:

  ```text
  kernel.AuthenticationError: Invalid or disabled API key
  ```
  Event 161:

  ```text
  export KERNEL_API_KEY=...  # create at: https://dashboard.onkernel.com
  ```
- **Product name collides heavily with unrelated 'kernel' results, wasting discovery time**: Because 'Kernel' is a generic, overloaded term (Linux kernel, Semantic Kernel, kernel.org, KernelOS, dictionary definitions, memory-layer competitors), roughly a dozen search and curl attempts across Bing, DuckDuckGo, Brave, and direct domain guesses were needed before the agent found the correct product at kernel.sh. This is a naming/discoverability issue rather than a defect in the product itself, and it consumed a large share of the session before any SDK work began.
  Event 77:

  ```text
  kernel.org https://www. kernel .org The Linux Kernel Archives 6 days ago
  ```
  Event 84:

  ```text
  More Kernel kernel.sh › info › pricing & limits
  ```
  Event 90:

  ```text
  KERNEL: browser infrastructure for web agents and automations customers solutions pricing resources book demo sign in / up
  ```

#### Suggested Changes
- **Add a redirect or notice for lookalike domains usekernel.com and kernel.so**: A first-time developer guessing the product's domain lands on usekernel.com (an unrelated casino affiliate site) or kernel.so (a parked GoDaddy page) instead of the real product at kernel.sh. Verify by curling https://usekernel.com and https://kernel.so with a browser user agent; if the product owner controls these domains, redirect them to kernel.sh, otherwise clarify the canonical domain more prominently in outbound marketing so newcomers do not waste time on lookalikes.
  Event 53:

  ```text
  <title>MadSlots Casino UK | Login, Free Spins &amp; No-Deposit Bonus 2026</title>
  ```
  Event 58:

  ```text
  You don't have permission to access "http&#58;&#47;&#47;forsale&#46;godaddy&#46;com&#47;forsale&#47;www&#46;kernel&#46;so&#63;" on this server.
  ```
- **Strengthen branded search visibility against the generic term 'kernel'**: Searches for 'Kernel' plus 'AI agents', 'SDK', or 'memory layer' on Bing and Brave were dominated by Linux kernel, Semantic Kernel, and dictionary-definition results; the product only surfaced after direct domain guessing succeeded. Check current search rankings for phrases like 'Kernel browser infrastructure for agents' and consider promoting the onkernel.com/kernel.sh domain and 'cloud browser for agents' positioning more heavily in SEO metadata so prospective developers find the real site without guessing domains.
  Event 77:

  ```text
  kernel.org https://www. kernel .org The Linux Kernel Archives 6 days ago
  ```
  Event 84:

  ```text
  More Kernel kernel.sh › info › pricing & limits
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/6ccc833e-8f56-41c5-b4b3-2754ba494e9c) · [Read transcript](https://www.ax-check.com/kernel.sh/sessions/kimi.json)
Final output gives per-GB-second usage rates plus tiered plans (Developer $0, Hobbyist $30, Start-Up $200, Enterprise) and states the assumptions (headless vs headful vs GPU, idle-time exemption, this example's runtime 'well under a cent').
#### End-to-end onboarding
- **Onboarding needs a login**: Agent built and syntax-checked a Kernel example, installed the real @onkernel/sdk package, and confirmed the SDK's API surface (browsers.create, browsers.playwright.execute) exists via local instantiation with a dummy key. It never obtained a real API key or made an authenticated call to the hosted Kernel API — it explicitly stopped and asked the human to supply KERNEL_API_KEY before it could run browsers.create() against the live service.
  Event 29:

  ```text
  ---
  v22.23.2
  Python 3.12.3
  
  ```
  Event 70:

  ```text
  SDK client constructed: API surface OK
  ```
  Event 72:

  ```text
  I'm blocked on a `KERNEL_API_KEY`** — signup at kernel.sh requires a human account (free, no card), and I can't create one.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No self-serve way to obtain a Kernel API key from the sandbox**: Signup for a Kernel account (required to get KERNEL_API_KEY) needs a human to create an account via the website; this is a normal login/signup wall rather than a product defect, and it stopped the agent from running the example against the live API. The agent recognized this and stopped as instructed rather than faking success.
  Event 29:

  ```text
  ---
  v22.23.2
  Python 3.12.3
  
  ```
  Event 72:

  ```text
  signup at kernel.sh requires a human account (free, no card), and I can't create one
  ```

#### Suggested Changes
- **Add a non-interactive / API-based account provisioning path for the Developer tier**: Currently the only way to get a KERNEL_API_KEY is through the kernel.sh signup flow, which requires a human session. If the product team wants automated agents or CI pipelines to self-onboard, consider a programmatic account/key-issuance endpoint for the free Developer plan; verify by having an unauthenticated script obtain a working key and call kernel.browsers.create() end-to-end without a human visiting the site.
  Event 72:

  ```text
  signup at kernel.sh requires a human account (free, no card), and I can't create one
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/a7670631-2509-4919-860d-e09e5b9c1dd1) · [Read transcript](https://www.ax-check.com/kernel.sh/sessions/qwen.json)
README.md and final summary state credit costs per job type (1/2/2/3 credits), note there is no public dollar price list, and explain assumptions: starter allocation via approval, no card required, billing_mode billable vs exempt.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a real Kernel API key. It found docs stating that access is manually reviewed (customers create keys in the dashboard; new builders submit a form and wait for approval), confirmed no KERNEL_API_KEY was present in the sandbox, and confirmed unauthenticated/bogus-key calls return 403 Forbidden. It built a fully offline mock client and ran that instead of the live API, so no authenticated product operation was ever demonstrated.
  Event 11:

  ```text
  PI_GATEWAY_API_KEY=<set>
  ```
  Event 64:

  ```text
  --- api without key ---
  403
  {"message":"Forbidden"}
  --- bogus key ---
  403
  {"message":"Forbidden"}
  ```
  Event 130:

  ```text
  kernel_client.KernelError: No API key. Set KERNEL_API_KEY, or run quickstart.py --mock for an offline demo. Keys come from https://app.kernel.ai (Settings > API keys) for customers, or from the request form at https://kernel.ai/kernel-api for new builders.
  ```
  Event 129:

  ```text
  MOCK MODE — offline fixtures, no API calls, no credits spent.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No self-serve API key; access is manually reviewed**: Kernel's own docs state new builders must submit a request form and wait for human review before getting an API key with credits; existing customers must create one in the dashboard. This is normal product behavior (a gated beta/access model), not an agent error or environment misconfiguration — the agent correctly identified it and used the documented mock-fixture path instead of fabricating a live success.
  Event 93:

  ```text
  We're opening the Kernel API to a small group of builders. Tell us what you want to build, and if it's a fit we'll send you an API key with a starter allocation of credits.
  ```
  Event 98:

  ```text
  Access isn't instant. We review each request, but will send you access quickly if you're approved. You start with a fixed credit allocation. No card required.
  ```
  Event 156:

  ```text
  Blocked: live API calls. No `KERNEL_API_KEY` in this environment, unauthenticated requests 403, and obtaining a key needs either an existing customer workspace or a human-approved access request — neither of which I can complete.
  ```

#### Suggested Changes
- **Publish a public pricing page instead of credit-costs-only docs**: The pricing page at withkernel.com/pricing 404s and there is no dollar-denominated price list anywhere in docs.kernel.ai or dev.kernel.ai — only per-job credit costs (1/2/2/3 credits) with no stated credit-to-dollar conversion. Add a pricing page linked from the main nav and confirm it resolves with actual currency figures.
  Event 40:

  ```text
  404
  404
  -rw------- 1 root root 30751 Sep 19 05:17 /tmp/d.html
  -rw------- 1 root root 30751 Sep 19 05:17 /tmp/p.html
  ```
  Event 76:

  ```text
  | `balance`      | `number` | Remaining API credits. Decremented per job based on job type cost. Always `100` for `exempt` organizations.
  ```
- **Publish an official SDK on npm/PyPI**: Every guessed package name for a Kernel SDK (@withkernel/*, kernel-sdk, @kernel/sdk, @kernel-ai/sdk) returned 404 on the npm and PyPI registries, confirming no official client library exists. Publish a minimal typed client (Node and/or Python) matching the OpenAPI spec at dev.kernel.ai/api-reference/openapi.json, and verify it installs via `npm install` / `pip install` under the documented package name.
  Event 34:

  ```text
  @withkernel/wallet-sdk -> 404
  @withkernel/connect -> 404
  @withkernel/kyt-api -> 404
  @withkernel/api -> 404
  kernel-sdk -> 404
  @kernel/sdk -> 404
  ```
  Event 87:

  ```text
  kernel-ai npm: 404
  @kernel-ai/sdk npm: 404
  kernel-sdk npm: 404
  @kernelai/api npm: 404
  ```

### Task given to each agent
Help me build a simple example using Kernel. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: A · 100/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Pass** — Homepage answers Markdown requests

  ```text
  Homepage returned text/markdown with 680 tokens when requested with Accept: text/markdown.
  ```

- **Pass** — llms.txt provides an actionable documentation index

  ```text
  llms.txt links docs, OpenAPI, auth, SDKs, CLI, MCP, and machine endpoints with install guidance.
  ```

- **Pass** — llms.txt provides navigation guidance

  ```text
  llms.txt organizes links under start here, machine endpoints, install, and support sections.
  ```

- **Pass** — llms.txt mentions offered API, MCP, and skills

  ```text
  llms.txt mentions OpenAPI spec, hosted MCP server, and official SDKs and CLI.
  ```

- **Pass** — A compact guide representation exists

  ```text
  llms.txt is a compact agent guide covering when to use, start links, install, and machine endpoints.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  llms.txt fetched directly at /llms.txt with 200 and full plain-text body.
  ```

- **Pass** — Equivalent instructions fit a token budget

  ```text
  llms.txt is 690 tokens, well under the 8000-token budget.
  ```

- **Pass** — Product-docs links survive format changes

  ```text
  Homepage Markdown links to docs, llms.txt, openapi, auth, CLI, and MCP routes.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  llms.txt gives install commands, auth, and start-here links; SKILL.md adds concrete CLI quickstart steps.
  ```

- **Pass** — Install and next-step links resolve

  ```text
  Fetched install/next-step targets (llms.txt, openapi.json, docs, MCP pages) all returned 200.
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  llms.txt and CLI docs link to documentation, API reference, SDKs, and a CLI quickstart with concrete steps.
  ```

- **Pass** — Installation commands are extractable

  ```text
  CLI docs give brew, pnpm, and npm install commands plus verification steps.
  ```

- **Pass** — Code examples are available without interaction

  ```text
  CLI docs and skill file show inline bash examples for create, login, deploy, invoke, and browser commands.
  ```

- **Pass** — Prerequisites and auth boundaries are explicit

  ```text
  Skill file states KERNEL_API_KEY env var or kernel login OAuth; llms.txt points to API authentication.
  ```


### Pricing
- **Pass** — Pricing is readable without interaction

  ```text
  Pricing page renders plan tiers and usage rates as static text without interaction.
  ```

- **Pass** — Prices are stated, not gated

  ```text
  Prices stated: Free $0, Hobbyist $30, Start-Up $200, plus $0.0000166667/GB-sec usage.
  ```

- **Pass** — Pricing units and limits are explicit

  ```text
  Docs list per-second usage rates, concurrency limits, and included monthly credits per plan.
  ```

- **Pass** — Agents identify pricing and its assumptions

  ```text
  2 of 3 sessions were judged on pricing; 0 fell short. Kimi K3: Final output gives per-GB-second usage rates plus tiered plans (Developer $0, Hobbyist $30, Start-Up $200, Enterprise) and states the assumptions (headless vs headful vs GPU, idle-time exemption, this example's runtime 'well under a cent'). Qwen 3.8 Max: README.md and final summary state credit costs per job type (1/2/2/3 credits), note there is no public dollar price list, and explain assumptions: starter allocation via approval, no card required, billing_mode billable vs exempt. This behavioural item does not affect the fast grade.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  OpenAPI 3.1 spec at /openapi.json (118 paths) and rendered API reference pages both fetched successfully.
  ```

- **Pass** — An MCP server is documented and well-formed

  ```text
  Hosted MCP server documented with streamable HTTP endpoint, stdio transport, OAuth 2.1 and API key auth.
  ```

- **Pass** — A CLI install path is documented

  ```text
  CLI install documented via Homebrew and npm/pnpm, with verify and quickstart commands.
  ```

- **Pass** — SDK packages resolve on their registries

  ```text
  npm registry lookups for @onkernel/cli and @onkernel/sdk both returned HTTP 200.
  ```

- **Pass** — Agent skills are published

  ```text
  Agent skills overview page and a published kernel-cli SKILL.md on GitHub both fetched.
  ```



[Full report data](https://www.ax-check.com/kernel.sh/report.json)
