You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 3ac7ef0
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: architecture/compute-runtimes.md
+63-2Lines changed: 63 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -141,7 +141,7 @@ delete, reconciliation removes the row; otherwise it can remain `Deleting`.
141
141
|---|---|---|---|
142
142
| Docker | Local development with Docker available. | Container plus nested sandbox namespace. | Uses host networking so loopback gateway endpoints work from the supervisor. |
143
143
| Podman | Rootless or single-machine deployments. | Container plus nested sandbox namespace. | Uses the Podman REST API and CDI GPU devices when available. Delivers the supervisor via OCI image volume by default; falls back to extracting the binary to a host-side cache and bind-mounting it when `userns` is configured (overlay does not support idmapped mounts). |
144
-
| Kubernetes | Cluster deployment through Helm. | Pod plus nested sandbox namespace. | Uses Kubernetes API objects, service accounts, secrets, PVC-backed workspace storage, and GPU resources. |
144
+
| Kubernetes | Cluster deployment through Helm. | Pod plus nested sandbox namespace. | Uses Kubernetes API objects, service accounts, secrets, PVC-backed workspace storage, GPU resources, and optionally Agent Sandbox v1beta1 warm-pool claims. |
145
145
| VM | Experimental microVM isolation. | Per-sandbox libkrun VM. | Managed endpoint-backed driver. The gateway spawns `openshell-driver-vm`, waits for its Unix socket, and then consumes it through the same remote `compute_driver.proto` path used by unmanaged endpoint drivers. The VM driver boots a cached bootstrap `rootfs.ext4`, prepares requested OCI images inside a bootstrap VM with `umoci`, attaches the prepared image disk read-only, and gives each sandbox a writable `overlay.ext4` for merged-root changes and runtime material. The driver persists each accepted launch request beside the overlay and restarts those VMs on driver startup without recreating the overlay. |
146
146
| Extension | Out-of-tree drivers operated alongside the gateway. | Whatever boundary the driver implements. | Selected by a non-reserved custom `compute_drivers = ["<name>"]` entry with `[openshell.drivers.<name>].socket_path`, or at launch time by pairing `--drivers <name>` with `--compute-driver-socket=<path>`. Reserved built-in names such as `vm`, `docker`, `podman`, and `kubernetes` cannot be used as unmanaged socket endpoints. The gateway connects to a UDS the operator already provisioned, runs `GetCapabilities`, logs the advertised `driver_name`, and dispatches all sandbox lifecycle calls through `compute_driver.proto`. The driver process and socket lifecycle are operator-owned; the gateway does not spawn, supervise, or remove unmanaged extension drivers. The trust boundary is the socket's filesystem permissions: the operator must ensure only the gateway uid can read/write it. |
147
147
@@ -248,14 +248,75 @@ The supervisor itself remains root so it can establish isolation before
248
248
starting unprivileged children.
249
249
250
250
Kubernetes supervisors authenticate to the gateway in two stages. They first
251
-
call `RegisterSupervisorPod` with the projected ServiceAccount token; the
251
+
call `RegisterSupervisor` with the projected ServiceAccount token; the
252
252
gateway validates the pod-bound token and live Agent Sandbox owner state, then
253
253
activates already-bound cold pods by streaming back a gateway-minted sandbox
254
254
JWT. The supervisor installs that JWT in memory and starts the normal
255
255
`ConnectSupervisor` session as the activated sandbox. The gateway does not dial
256
256
pod IPs or require an inbound activation port; activation is supervisor
257
257
initiated over the existing outbound gRPC connection.
258
258
259
+
When compatible OpenShell-enabled Agent Sandbox warm pools exist, the
260
+
Kubernetes driver can create a `SandboxClaim` instead of a direct `Sandbox`.
261
+
The driver watches warm pools and templates into a local cache so create
262
+
requests do not list or fetch extension objects on the hot path. This remains
263
+
behind the compute-driver boundary: other drivers and the driver-agnostic
264
+
gateway lifecycle continue to operate on OpenShell sandbox identity and status.
265
+
Warm-pool activation uses the same trust boundary as direct Kubernetes
266
+
activation. The direct path validates `pod token -> live pod -> owning Sandbox
267
+
CR -> Sandbox sandbox-id metadata`; the warm path validates `pod token -> live
0 commit comments