Skip to content

Commit 436e56b

Browse files
Add bots and agents overview page (#455)
Add /docs/bots documenting Kernel's two Web Bot Auth identities (the existing user-directed Agent on kernel.sh and the new Kernel Search crawler on search.bot.kernel.sh), so site owners can allow/block by purpose. Also document Kernel Search signing config on the Web Bot Auth page. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 8d80c21 commit 436e56b

3 files changed

Lines changed: 82 additions & 5 deletions

File tree

bots.mdx

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
title: "Bots and agents"
3+
description: "Kernel's bots and agents, their purposes, and how to verify them with Web Bot Auth"
4+
---
5+
6+
Kernel identifies its bots and agents with [Web Bot Auth](https://datatracker.ietf.org/doc/html/draft-meunier-web-bot-auth-architecture). Each identity serves its own key directory from its own authority, so site owners can allow or block each one **independently by purpose** — for example, allow search indexing while blocking user-directed agents (or vice versa).
7+
8+
Kernel is listed in [Cloudflare's bots and agents directory](https://radar.cloudflare.com/bots/directory/kernel) and [Vercel's public directory](https://bots.fyi/?query=kernel).
9+
10+
## Kernel Agent
11+
12+
User-directed browser automation. Kernel Agent visits pages on behalf of an end user's request; it is not an automatic crawler. Requests are signed with Web Bot Auth rather than a dedicated crawler user-agent token.
13+
14+
| Field | Value |
15+
| --- | --- |
16+
| Purpose | Agent |
17+
| Operator | Intermediary (end-user directed) |
18+
| Signature-Agent | `https://www.kernel.sh` |
19+
| Key directory | `https://www.kernel.sh/.well-known/http-message-signatures-directory` |
20+
21+
## Kernel Search
22+
23+
Crawls pages to build search indexes and retrieval databases. Kernel Search identifies itself with the `KernelSearchBot` user-agent token and follows `robots.txt` directives for that token, including crawl-delay preferences.
24+
25+
| Field | Value |
26+
| --- | --- |
27+
| Purpose | Search |
28+
| Operator | Direct (Kernel-operated) |
29+
| User-Agent | `KernelSearchBot` |
30+
| Signature-Agent | `https://search.bot.kernel.sh` |
31+
| Key directory | `https://search.bot.kernel.sh/.well-known/http-message-signatures-directory` |
32+
33+
## Verifying Kernel traffic
34+
35+
Each identity publishes its public key set (JWKS) at its key directory. To verify a request:
36+
37+
1. Read the `Signature-Agent` header to determine which Kernel identity signed the request.
38+
2. Fetch the public key set from that identity's key directory and cache it per the `Cache-Control` header.
39+
3. Verify the `Signature` and `Signature-Input` headers per [RFC 9421](https://datatracker.ietf.org/doc/html/rfc9421).
40+
41+
Most major bot-detection services, CDNs, and WAFs verify Web Bot Auth automatically. See [Web Bot Auth](/browsers/bot-detection/web-bot-auth) for how Kernel signs requests.
42+
43+
## Contact
44+
45+
For questions about Kernel bot or agent traffic, contact [support@kernel.sh](mailto:support@kernel.sh).

browsers/bot-detection/web-bot-auth.mdx

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,18 +145,49 @@ The directory should contain your public keys in JWKS format:
145145
kernel extensions build-web-bot-auth \
146146
--to ./web-bot-auth-ext \
147147
--key ./my-key.jwk \
148-
--url https://yourdomain.com/.well-known/http-message-signatures-directory \
148+
--url https://yourdomain.com \
149+
--signature-agent https://yourdomain.com \
149150
--upload my-web-bot-auth
150151
```
151152

152-
### 4. Register with Vercel and other Web Bot Auth-aware directories (optional)
153+
### 4. Kernel Search configuration
153154

154-
If you want Vercel-protected sites to recognize your agent, you can register your key directory with [Vercel](https://bots.fyi/new-bot). Kernel is officially listed in the Vercel directory.
155+
Kernel Search uses a distinct Web Bot Auth identity from Kernel's user-driven
156+
agent traffic:
157+
158+
- User-Agent: `KernelSearchBot`
159+
- Signature-Agent: `https://search.bot.kernel.sh`
160+
- Key directory:
161+
`https://search.bot.kernel.sh/.well-known/http-message-signatures-directory`
162+
163+
To build a browser extension for Kernel Search, use the Kernel Search Ed25519
164+
private key (JWK) and upload it under a distinct extension name:
165+
166+
```bash
167+
kernel extensions build-web-bot-auth \
168+
--to ./web-bot-auth-search-ext \
169+
--key ./kernel-search.jwk \
170+
--url https://www.kernel.sh \
171+
--signature-agent https://search.bot.kernel.sh \
172+
--upload web-bot-auth-search
173+
```
174+
175+
For host-proxy based signing, configure the Search crawler's host-proxy
176+
environment with:
177+
178+
```bash
179+
HOST_PROXY_WEB_BOT_AUTH_ENABLED=true
180+
HOST_PROXY_WEB_BOT_AUTH_KEY_PATH=/path/to/kernel-search-private-key.pem
181+
HOST_PROXY_WEB_BOT_AUTH_DIRECTORY_URL=https://search.bot.kernel.sh
182+
```
155183

184+
The signing key must correspond to the public key hosted by
185+
`search.bot.kernel.sh`.
156186

187+
### 5. Register with Vercel and other Web Bot Auth-aware directories (optional)
157188

189+
If you want Vercel-protected sites to recognize your agent, you can register your key directory with [Vercel](https://bots.fyi/new-bot). Kernel is officially listed in the Vercel directory.
158190

159-
160191
## References
161192

162193
- [Vercel's Public Directory](https://bots.fyi/?query=kernel)

docs.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,8 @@
147147
"proxies/datacenter"
148148
]
149149
},
150-
"browsers/bot-detection/web-bot-auth"
150+
"browsers/bot-detection/web-bot-auth",
151+
"bots"
151152
]
152153
},
153154
"browsers/extensions",

0 commit comments

Comments
 (0)