Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 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
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
85 changes: 84 additions & 1 deletion apps/deploy.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
title: "Deploying"
title: "Deploy an App"
sidebarTitle: "Deploy"
description: "Deploy your app to KERNEL, set environment variables, and pass secrets"
---

Kernel's app deployment process is as simple as it is fast. There are no configuration files to manage or complex CI/CD pipelines.
Expand Down Expand Up @@ -94,6 +96,87 @@ const client = new Kernel({ apiKey: process.env.MY_KERNEL_API_KEY });

Now the API calls your app makes go out as your key. The deployment key stays in place for Kernel's own use — running the invocation and reporting its result — so your key only needs permissions for the calls you actually make.

## Secrets

Pass API keys and other secrets as [environment variables](#environment-variables) when you deploy, with `--env` or `--env-file`. Then read them in your app:

<CodeGroup>
```typescript TypeScript
import Anthropic from "@anthropic-ai/sdk";
import OpenAI from "openai";

app.action('ai-action', async (ctx: KernelContext) => {
// Access API keys from environment variables
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});

const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});

// Use the clients...
});
```

```python Python
import os
from anthropic import Anthropic
from openai import OpenAI

@app.action("ai-action")
async def ai_action(ctx: KernelContext):
# Access API keys from environment variables
anthropic = Anthropic(
api_key=os.environ.get("ANTHROPIC_API_KEY"),
)

openai = OpenAI(
api_key=os.environ.get("OPENAI_API_KEY"),
)

# Use the clients...
```
</CodeGroup>

### Per-invocation secrets

For use cases where different API keys are needed per invocation (such as platforms using end-user keys), pass the secrets at runtime using the [payload parameter](/apps/invoke#payload-parameter).

Use encryption standards in your app to protect sensitive data.

<CodeGroup>
```typescript TypeScript
import OpenAI from "openai";

app.action('ai-action', async (ctx: KernelContext, payload) => {
// Decrypt the API key passed at runtime
const apiKey = decrypt(payload.encryptedApiKey);

const openai = new OpenAI({
apiKey: apiKey,
});

// Use the client with the user's API key...
});
```

```python Python
from openai import OpenAI

@app.action("ai-action")
async def ai_action(ctx: KernelContext, payload):
# Decrypt the API key passed at runtime
api_key = decrypt(payload["encryptedApiKey"])

openai = OpenAI(
api_key=api_key,
)

# Use the client with the user's API key...
```
</CodeGroup>

## Deployment notes

- **The dependency manifest (`package.json` for JS/TS, `pyproject.toml` for Python) must be present in the root directory of your project.**
Expand Down
4 changes: 3 additions & 1 deletion apps/develop.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
title: "Developing"
title: "Develop an App"
sidebarTitle: "Develop"
description: "Build an app with actions that run next to KERNEL browsers"
---

In addition to our browser API, Kernel provides a code execution platform for deploying and invoking code. Typically, Kernel's code execution platform is used for deploying and invoking browser automations or web agents.
Expand Down
67 changes: 66 additions & 1 deletion apps/invoke.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
title: "Invoking"
title: "Invoke an App"
sidebarTitle: "Invoke"
description: "Run an app action from the API or CLI, pass a payload, and stop a running invocation"
---

## Via API
Expand Down Expand Up @@ -154,4 +156,67 @@ See [here](/apps/develop#parameters) to learn how to access the payload in your

If your action specifies a [return value](/apps/develop#return-values), the invocation returns its value once it completes. (The Kernel CLI uses asynchronous invocations under the hood)


## Stop an invocation

You can terminate an invocation that's running. This is useful for stopping automations or agents stuck in an infinite loop.

<Info>
Terminating an invocation also destroys any browsers associated with it.
</Info>

### Via API
You can stop an invocation by setting its status to `failed`. This will cancel the invocation and mark it as terminated.

<CodeGroup>
```typescript Typescript/Javascript
import Kernel from '@onkernel/sdk';

const kernel = new Kernel();

const invocation = await kernel.invocations.update('invocation_id', {
status: 'failed',
output: JSON.stringify({ error: 'Invocation cancelled by user' }),
});
```

```python Python
from kernel import Kernel

kernel = Kernel()
invocation = kernel.invocations.update(
id="invocation_id",
status="failed",
output='{"error":"Invocation cancelled by user"}',
)
```

```go Go
package main

import (
"context"

"github.com/kernel/kernel-go-sdk"
)

func main() {
ctx := context.Background()
client := kernel.NewClient()

invocation, err := client.Invocations.Update(ctx, "invocation_id", kernel.InvocationUpdateParams{
Status: kernel.InvocationUpdateParamsStatusFailed,
Output: kernel.String(`{"error":"Invocation cancelled by user"}`),
})
if err != nil {
panic(err)
}
_ = invocation
}
```
</CodeGroup>

### Via CLI
Use `ctrl-c` in the terminal tab where you launched the invocation.

App invocations accrue compute usage separately from any browsers they create. See the [pricing FAQ](/info/pricing#faq) for how app invocations are charged.
4 changes: 3 additions & 1 deletion apps/logs.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
title: "Logs"
title: "Invocation Logs"
sidebarTitle: "Logs"
description: "Stream an invocation's logs from the API or CLI"
---

## Via API
Expand Down
104 changes: 0 additions & 104 deletions apps/secrets.mdx

This file was deleted.

4 changes: 3 additions & 1 deletion apps/status.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
title: "Status"
title: "Invocation Status"
sidebarTitle: "Status"
description: "Follow an invocation's status by streaming or polling"
---

Once you've [deployed](/apps/deploy) an app and invoked it, you can monitor its status using streaming for real-time updates or polling for periodic checks.
Expand Down
63 changes: 0 additions & 63 deletions apps/stop.mdx

This file was deleted.

Loading