Skip to content

SandboxPool

apiVersion
agents.nanohype.dev/v1alpha1
kind
SandboxPool
scope
Namespaced
reconciled by
eks-agent-platform
short names
sbxpool

SandboxPool is a Platform-scoped pool of Managed Agents self-hosted sandbox workers. The reconciler runs them as a Deployment on the dedicated, tainted sandbox node pool, locked down by a default-deny NetworkPolicy.

SandboxPoolSpec declares a pool of Managed Agents self-hosted sandbox workers for a `self_hosted` environment. The workers run Anthropic's `ant beta:worker`, claiming sessions from the environment's work queue and executing agent tool calls inside the cluster.

What kubectl get shows

ColumnTypeMeaning
Platformstring
Phasestring
Readyinteger

Spec

  • environmentIdstringrequired

    EnvironmentID is the Managed Agents self_hosted environment whose work queue these workers drain (an `env_...` id).

  • environmentKeySecretobjectrequired

    EnvironmentKeySecret holds ANTHROPIC_ENVIRONMENT_KEY — the worker's auth token, mounted into every worker pod.

    • keystringrequired

      The key of the secret to select from. Must be a valid secret key.

    • namestringdefault ""

      Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

    • optionalboolean

      Specify whether the Secret or its key must be defined

  • platformRefobjectrequired

    PlatformRef is the owning Platform. The pool's workers run in that Platform's tenant namespace and the pool gates on Platform readiness.

    • namestringrequired

  • apiKeySecretobject

    APIKeySecret holds the organization API key. It is consumed only by the work-queue autoscaler, never mounted into worker pods — Anthropic warns the org key must not be reachable by agent tool calls.

    • keystringrequired

      The key of the secret to select from. Must be a valid secret key.

    • namestringdefault ""

      Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

    • optionalboolean

      Specify whether the Secret or its key must be defined

  • imagestring

    Image overrides the sandbox worker image. Defaults to the platform's published sandbox-worker image when empty.

  • resourcesobject

    Resources are the per-worker-pod resource requests and limits.

    • claims[]object

      Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This field depends on the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers.

      2 fields under claims
      • namestringrequired

        Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

      • requeststring

        Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.

    • limitsobject

      Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

    • requestsobject

      Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

  • runtimeClassNamestring

    RuntimeClassName selects a Kubernetes RuntimeClass for the worker pods — typically "gvisor" or "kata" for kernel-level isolation of the untrusted agent tool code. The named RuntimeClass must already exist in the cluster. Empty uses the cluster's default runtime.

  • scalingobject

    Scaling bounds the worker count.

    • maxReplicasinteger (int32)default 10

      MaxReplicas is the worker-count ceiling for the autoscaler.

    • minReplicasinteger (int32)default 1

      MinReplicas is the worker-count floor. A pointer so 0 (scale to zero, for the autoscaled path) is distinguishable from "field absent".

    • queueDepthTargetinteger (int32)default 5

      QueueDepthTarget is the work-queue depth per worker the autoscaler aims for before adding workers.