title: kubernetes-sigs/agent-sandbox Support authors:
- "@jwx0925" creation-date: 2026-01-23 last-updated: 2026-01-23 status: draft
OSEP-0002: kubernetes-sigs/agent-sandbox Support
- Summary
- Motivation
- Requirements
- Proposal
- Design Details
- Test Plan
- Drawbacks
- Alternatives
- Infrastructure Needed
- Upgrade & Migration Strategy
Summary
Add first-class support for kubernetes-sigs/agent-sandbox as a runtime backend for OpenSandbox. This enables a Kubernetes-native sandbox lifecycle while keeping the existing OpenSandbox SDK and API contract, and introduces a dedicated ingress path for direct sandbox access.
Motivation
OpenSandbox already provides a Kubernetes runtime roadmap and an SDK-first experience, but users running kubernetes-sigs/agent-sandbox must currently integrate it manually. A native integration unifies lifecycle management, observability, and routing, letting teams adopt OpenSandbox without changing their existing Kubernetes operational model.
Goals
- Support creating, querying, and terminating sandboxes backed by
kubernetes-sigs/agent-sandboxvia the OpenSandbox server API. - Provide two supported access paths:
- Biz -> OpenSandbox SDK -> OpenSandbox server -> K8s API server ->
agent-sandboxpod. - Biz -> OpenSandbox SDK -> OpenSandbox ingress (
components/ingress) ->agent-sandboxpod.
- Biz -> OpenSandbox SDK -> OpenSandbox server -> K8s API server ->
- Preserve existing API and SDK behavior for non-agent-sandbox runtimes.
Non-Goals
- Replacing or removing the existing Docker runtime.
- Implementing a full Kubernetes operator for OpenSandbox itself.
- Changing the sandbox lifecycle API or SDKs in a breaking way.
Requirements
- Must use the existing OpenSandbox lifecycle API and SDKs without breaking changes.
- Must use the Kubernetes API server as the control plane for provisioning.
- Must support routing to sandbox pods through the existing ingress component.
- Must keep security posture aligned with current OpenSandbox auth and isolation requirements.
Proposal
Introduce an agent-sandbox runtime implementation in the OpenSandbox server that provisions sandboxes by creating and managing kubernetes-sigs/agent-sandbox resources (and their resulting pods) through the Kubernetes API server. The server remains the source of truth for sandbox lifecycle and uses K8s-native status signals for reconciliation.
Implementation approach: extend the server with a new agent-sandboxSandboxService implementation that reuses the existing Kubernetes helper code in server/services/k8s as much as possible, since both flows submit resources to the Kubernetes API server.
For access, support two primary chains:
- Lifecycle API path
- Biz -> OpenSandbox SDK -> OpenSandbox server -> K8s API server ->
agent-sandboxpod
- Biz -> OpenSandbox SDK -> OpenSandbox server -> K8s API server ->
- Direct ingress path
- Biz -> OpenSandbox SDK -> OpenSandbox ingress (
components/ingress) ->agent-sandboxpod
- Biz -> OpenSandbox SDK -> OpenSandbox ingress (
Both paths should expose the same sandbox endpoints (exec, file operations, metrics) while allowing ingress routing policies to be configured per cluster.
flowchart LR
A[Biz] --> B[OpenSandbox SDK]
B --> C[OpenSandbox Server]
C --> D[K8s API Server]
D --> E[agent-sandbox Controller]
E --> F[Sandbox Pod]flowchart LR
A[Biz] --> B[OpenSandbox SDK]
B --> C[OpenSandbox Ingress]
C --> D[Sandbox Pod]Notes/Constraints/Caveats
- The
agent-sandboxcontroller lifecycle and CRD schema are external; the integration must track upstream changes. - Sandbox pod images must include
execd(or use an init/sidecar injection strategy consistent with existing runtimes).
Risks and Mitigations
- Risk: K8s API latency or controller reconciliation delays cause slower sandbox readiness. Mitigation: asynchronous provisioning with explicit readiness checks and timeouts.
- Risk: CRD or API changes in
kubernetes-sigs/agent-sandboxbreak integration. Mitigation: versioned runtime adapter and compatibility matrix in docs. - Risk: ingress routing misconfiguration exposes pods. Mitigation: enforce namespace scoping, label selectors, and explicit port allowlists.
Design Details
Runtime Type and Configuration
- Add a new runtime type in server config, e.g.
runtime.type = agent-sandbox. - New config fields:
runtime.kubernetes.kubeconfig(optional; in-cluster supported)runtime.kubernetes.namespaceruntime.agent_sandbox.template(CRD spec template or defaults)runtime.agent_sandbox.execd_mode(embedded image vs init/sidecar)runtime.agent_sandbox.ingress_enabled(default true)
Lifecycle Flow
POST /sandboxes:- Validate request and build
agent-sandboxCR or pod spec. - Create resource via K8s API server.
- Persist sandbox record with runtime metadata and labels.
- Validate request and build
GET /sandboxes/{id}:- Read resource status and pod phase.
- Map to OpenSandbox lifecycle states.
DELETE /sandboxes/{id}:- Delete
agent-sandboxresource and cleanup related objects.
- Delete
Ingress Routing
- Extend
components/ingressto recognizeagent-sandboxpods through labels (e.g.,opensandbox.io/sandbox-id). - Map sandbox IDs and ports to ingress routes following existing router semantics.
Observability and Metrics
- Surface pod readiness, node placement, and resource usage in server logs and metrics for troubleshooting.
Implementation Plan
- Add a new
agent_sandboxruntime module and aSandboxServiceimplementation in the server layer. - Reuse shared Kubernetes client setup, apply/delete helpers, and watch/status utilities from
server/services/k8sto avoid duplicating API plumbing. - Add a runtime adapter that maps OpenSandbox lifecycle states to
agent-sandboxCRD/pod status, including readiness/termination conditions. - Store the created resource name/namespace and labels in the sandbox metadata for reconciliation and cleanup.
- Extend server configuration to enable
agent-sandbox, including CRD template or spec defaults andexecdinjection strategy (image vs init/sidecar). - Add routing integration in
components/ingressto discover pods by labels and publish routes for sandbox ports. - Provide an example under
examples/that creates a sandbox, executes a command, and tears it down using the SDK against theagent-sandboxruntime.
sequenceDiagram
participant Biz
participant SDK as OpenSandbox SDK
participant Srv as OpenSandbox Server
participant K8s as K8s API Server
participant Ctrl as agent-sandbox Controller
participant Pod as Sandbox Pod
Biz->>SDK: create sandbox
SDK->>Srv: POST /sandboxes
Srv->>K8s: create agent-sandbox resource
K8s->>Ctrl: reconcile CRD
Ctrl->>Pod: create pod
Srv->>K8s: watch status
Srv-->>SDK: sandbox readyTest Plan
- Unit tests for runtime adapter: spec generation, status mapping, cleanup.
- Integration tests with a local K8s cluster and
agent-sandboxinstalled: create/list/delete sandbox, exec command, file ops, metrics. - Ingress tests: ensure routing to the correct sandbox pod and port.
Drawbacks
- Adds dependency on
agent-sandboxCRD stability and controller behavior. - Operational complexity for teams without existing Kubernetes expertise.
Alternatives
- Continue with a native OpenSandbox Kubernetes runtime only. Rejected because it does not meet users already standardized on
agent-sandbox. - Provide an external adapter service instead of embedding in the server. Rejected due to added operational components and split observability.
Infrastructure Needed
- Kubernetes cluster with
kubernetes-sigs/agent-sandboxinstalled for CI/E2E. - Optional: test images that bundle
execdfor sandbox pods.
Upgrade & Migration Strategy
- Backwards compatible; default runtime remains unchanged.
- Enable by configuration; no migration required for existing Docker runtime users.
This page is sourced from:
oseps/0002-kubernetes-sigs-agent-sandbox-support.md