Normative source: api/openapi.yaml. The endpoint
table below is auto-generated and must not be edited by hand. See
docs/superpowers/specs/2026-08-02-kernel_zoo-design.md §4 for prose
descriptions of each endpoint.
kernel_package_format.md— the on-disk format of a kernel_package and every schema.kernel_package_guide.md— 简体中文:从零编写一个新 kernel_package 的分步指南。kernel_package_guide_en.md— English:把已有 GPU kernel 项目(含代码与测试)重写为 kernel_package 的指南。README.md— bilingual project overview and quickstart.
| Role | Header | Notes |
|---|---|---|
| Anonymous | — | Read-only listing and detail endpoints |
| Submitter | X-Submitter-Id |
Self-reported; any non-empty string |
| Runner | X-Runner-Key |
Pre-shared key configured on server |
| Editor | X-Submitter-Id |
Reuses submitter role |
Source: api/openapi.yaml
| Method | Path | Auth | Summary |
|---|---|---|---|
GET |
/api/kernels |
— | List all kernel_packages |
GET |
/api/kernels/{kernel_id} |
— | Kernel detail |
GET |
/api/kernels/{kernel_id}/bench-history |
— | Best/current metric summary for a kernel |
POST |
/api/kernels/{kernel_id}/claim |
submitterAuth | Claim a kernel_package tar.gz for optimization |
POST |
/api/submissions |
submitterAuth | Submit a kernel_package for benchmarking |
GET |
/api/submissions/{uuid}/status |
submitterAuth | Poll submission status (long-poll, default 30s) |
POST |
/api/submissions/{uuid}/result |
runnerAuth | Runner submits benchmark result |
POST |
/api/edits/rebase |
submitterAuth | Rebase a local branch onto main |
POST |
/api/runner/register |
runnerAuth | Runner registers its arch + capabilities |
POST |
/api/runner/claim |
runnerAuth | Long-poll for a benchmark task |
POST |
/api/runner/heartbeat |
runnerAuth | Refresh a claimed task's runner.lock |
GET |
/api/health |
— | System health and queue depth |
GET |
/api/index.json |
— | Pre-built WebUI index (static file) |
The server also serves a browser single-page app at /webui/ (redirects from
/webui and /). It is a static, build-less ES-module SPA driven by the
pre-built index served at /api/index.json (see the endpoint table above).
No API changes are required to use it.
All non-2xx responses share this body shape:
{"error": {"code": "...", "message": "...", "details": {...}}}Paths containing {kernel_id} use Starlette's :path converter — the full
remaining path including / is captured. Clients do not need to URL-encode
the slashes. Implementations MUST validate each segment against
^[A-Za-z0-9._-]+$ and reject .. before any filesystem access.