mrkeyoor.com_
Fri 14 Aug 16:46 UTC
Self-Hostedevaluationupdated 14 Aug 2026

agent-sandbox

Agent Sandbox is a Kubernetes controller and API for running one persistent, stateful container per user or agent, with stable identity, storage, pause and resume controls, templates, claims, and warm pools. It solves the orchestration problem around coding agents and other untrusted workloads, but delegates the actual security boundary to runtimes such as gVisor or Kata Containers.

Verdict

Agent Sandbox is a strong foundation for teams that already speak Kubernetes and understand that orchestration is not isolation. Its CRDs, warm pools, SDKs, lifecycle controls, threat model, and rapid release work are far beyond a demo, but secure production use still demands expert platform engineering. Put it on the shortlist for a Kubernetes-native agent runtime; choose a hosted sandbox service if operating runtimes, routing, policy, and CRD migrations is not your product advantage.

Setup2/5Controller install is short; secure end-to-end operation has many layers
Docs4/5Detailed setup, threat model, SDK, examples, tuning, and migration guides
Community5/5Same-day release activity and a very large, actively reviewed work queue
Maturity3/5Serious controller and tests, but pre-1.0 APIs and security assembly remain

Who it’s for

Kubernetes platform teams building persistent execution environments for coding agents, notebooks, browser automation, or developer workspaces.
Multi-tenant AI infrastructure operators prepared to configure runtime classes, network policy, RBAC, resource limits, and routing.
Teams that need warm pools to reduce sandbox allocation delay while retaining a declarative Kubernetes API.
Go or Python developers who want SDKs for creating sandboxes, executing work, transferring files, and managing lifecycle.

Who it’s NOT for

Teams that want secure isolation merely by installing the controller: the README calls Agent Sandbox an orchestrator, and its threat model requires an external runtime such as gVisor or Kata for stronger host separation.
Operators who cannot build a full Kubernetes security envelope: the threat model says the router's default authorizer is AllowAll, recommends a custom authorizer, and assigns rate and connection limiting to the ingress layer.
Production users planning to copy the Python runtime example unchanged: issue #1375 says its command endpoint blocks the event loop and has no server-side timeout, so one hung command can wedge the sandbox.
Teams requiring a stable GA API and automatic upgrades: the project is on v0.5.5 with v1beta1 CRDs, while v1alpha1 is deprecated and Helm CRD upgrades plus storage migration require manual steps.
Buyers seeking a ready web console or native MCP endpoint: both are listed as planned roadmap items rather than current features.

Setup reality

Installing the controller itself is one kubectl apply against a versioned release manifest, or a local Helm chart with an explicit image tag. A useful secure environment takes much more: supply a Kubernetes cluster, install and verify gVisor or Kata if host isolation matters, enable the extension controllers, create templates and namespaces, set resource and network policies, deploy the router for SDK traffic, and provide workload images. The v0.5.5 Python packages also require Python 3.11 or newer, despite one quickstart still listing Python 3.9. Upgrades need special care because Helm does not update CRDs and the alpha-to-beta storage migration is manual.

Kubernetes lifecycle for one-agent machines

Agent Sandbox fills a gap between ordinary pods and full virtual-machine platforms. A coding agent, notebook, or browser session often needs one long-lived container, one stable address, persistent files, and an explicit pause or deletion lifecycle. Deployments assume replaceable replicas. StatefulSets assume numbered sets.

This project packages that state machine as Kubernetes custom resources. The core Sandbox represents one stateful pod with a stable hostname, network identity, optional persistent storage, scheduled deletion, and pause or resume controls. Extension controllers add reusable SandboxTemplate definitions, SandboxClaim requests, and SandboxWarmPool capacity that is prepared before a user asks for it. A claim can adopt an already-running pod from a pool instead of waiting for an image pull and runtime startup.

That is a clean Kubernetes abstraction, especially for platforms serving many short-lived agent sessions. Go and Python SDKs give applications a higher-level entry point, and an optional router sends HTTP traffic to the correct pod without creating a separate externally managed route for every sandbox.

Orchestration is not the security boundary

The project's most important sentence is easy to miss: Agent Sandbox is a sandbox orchestrator. It does not implement low-level isolation. A basic KinD quickstart uses normal containers and explicitly says it has no added container isolation. Operators running untrusted, model-generated code should configure a RuntimeClass backed by gVisor, Kata Containers, or another suitable runtime. The repository includes examples for both, including cloud-specific Kata configurations, but the platform team owns their installation and verification.

The threat model is refreshingly direct about the rest of the boundary. Templates can default service-account token mounting off and can produce managed network policies that restrict ingress to the router and block internal address ranges and cloud metadata on egress. Administrators still need to limit CPU, memory, and storage, enforce RBAC around every custom resource, and check sidecar ports because default network policy can break their health checks. Bare Sandbox resources need admission controls if the same safe defaults must be mandatory.

Routing also needs surrounding infrastructure. The router validates sandbox identifiers and rejects local or restricted literal IPs, but its default authorizer is AllowAll for Python-client compatibility. The threat model recommends a custom authorizer for namespaces and addresses. Rate limits and upgraded-connection limits belong at the ingress, gateway, or proxy layer because the Go router does not currently provide them for cases such as WebSockets. A controller manifest alone does not create a safe multi-tenant service.

Installation starts easy, then becomes platform work

The core and extension controllers can be installed from a versioned release asset with kubectl apply. A Helm chart is available for source-based installs and exposes worker counts, Kubernetes API rate controls, leader election, tracing, profiling, pod scheduling, and extension toggles. That is a good operational surface for a young project.

A functional SDK path adds several steps. Operators deploy the router, create a template for the workload image, configure a namespace, and optionally maintain warm pools. A secure path first prepares the cluster with gVisor or Kata and confirms the template selects that runtime. Production then needs ingress, authentication, quotas, monitoring, persistence classes, image policy, network rules, and cleanup behavior.

Upgrades require attention. Helm does not upgrade CRDs from its crds directory, so operators must apply them manually. The move from v1alpha1 storage to v1beta1 also requires a migration script and documented sequence. Release v0.5.5, published August 13, 2026, raises the minimum Python version for the main SDK and integration packages from 3.10 to 3.11. One secure quickstart still lists Python 3.9, so use release notes and package metadata over that prerequisite line.

Useful machinery with live edge cases

Warm pools are the main differentiator over a hand-built singleton pod controller. They maintain ready capacity, claims adopt a matching pod, and refill controls can delay or rate-limit replenishment after bursts. The latest release added refill shaping, reduced unnecessary metadata writes, and a metric for client-to-ready latency. Examples cover JupyterLab, browser automation, Aider, LangChain, reinforcement learning, Ray, policy engines, gVisor, Kata, and cloud identity simulation.

The active issue queue shows where caution belongs. Issue #1367 reports that a stale informer cache can lead a claim reconciler to create a sandbox that already exists, treat the resulting error as fatal, and fail to bind. Issue #1375 says the example Python runtime executes blocking subprocesses inside an asynchronous endpoint with no timeout, allowing a hung command to stop readiness responses indefinitely. Issue #1376 asks the Python client to stream file-like uploads rather than buffering every payload in memory. These are specific problems, not reasons to reject the controller, but examples and client helpers should be tested like product code before reuse.

Several attractive capabilities remain roadmap items: automatic suspend on inactivity, first-class router packaging, a TypeScript SDK, an MCP server, dynamic identity, claim-time network policy attachment, scale to zero, and a web dashboard. The README's desired-characteristics list also uses exploratory language for some runtime-dependent features. Buyers should distinguish the current CRDs from the larger platform vision.

Health and the decision

The repository was pushed on August 14, 2026, hours after the v0.5.5 release. GitHub reported 128 open issues and 113 open pull requests. That queue is enormous, but recent release credits span many contributors and current discussions show maintainers triaging detailed controller, SDK, performance, and security work. Kubernetes SIG Apps governance, Apache 2.0 licensing, generated API references, a written threat model, migration guidance, benchmarks, and extensive examples all improve confidence.

Agent Sandbox is a credible choice when a platform team wants Kubernetes to be the control plane for persistent agent environments. It offers the lifecycle pieces that raw pods lack and avoids pretending those pieces replace a secure runtime. The price is an assembly job across cluster security, networking, storage, routing, and API migration. For teams already equipped to own that stack, the project is unusually promising. For application teams that only want an endpoint that safely runs code, a managed sandbox service is the more honest purchase.

Alternatives

ProjectWhat it isPick it when
E2BA developer-facing sandbox platform and SDK built around isolated cloud environments for AI code execution.pick this instead when application developers want a ready sandbox API and do not want to operate the Kubernetes control plane themselves.
DaytonaAn open-source platform for creating and managing development environments programmatically.pick this instead when complete developer workspaces and an application-level API matter more than Kubernetes-native custom resources.
gVisorA container runtime sandbox that reduces direct exposure to the host kernel.pick this instead when you already manage pod lifecycle and need the isolation runtime itself; it can also sit underneath Agent Sandbox.
Kata ContainersA secure container runtime that runs workloads inside lightweight virtual machines.pick this instead when hardware-virtualized workload separation is the primary requirement and orchestration is already solved.

What people are saying

  1. [github-trending] kubernetes-sigs/agent-sandbox

Sources

  1. Agent Sandbox README
  2. Agent Sandbox v0.5.5 release
  3. Agent Sandbox threat model
  4. Agent Sandbox Helm installation and upgrade guide
  5. Issue 1367: stale-cache SandboxClaim binding failure
  6. Issue 1375: Python runtime can wedge on hung commands
  7. Agent Sandbox 2026 roadmap