Skip to main content
Version: dev

Sandboxes

A sandbox gives an agent stronger isolation than a standard pod gives. Use a sandbox for an agent that runs code that you do not control, or that a user supplies.

Alpha

Sandbox support is an experiment. The behaviour and the interface will change. Two operations need a manual step, as this page describes. Do not use a sandbox in production.

What a sandbox is

Rossoctl uses the upstream agent-sandbox project. A Sandbox is a Kubernetes resource, in the same way that a Deployment is a Kubernetes resource. An AgentRuntime resource can point to a Sandbox, so a sandboxed agent joins the platform in the normal way and receives the same RossoCortex sidecar.

The organization also has related experiments that are not part of an installation today:

RepositoryPurpose
OpenShellA private runtime for an autonomous agent. This repository is a fork.
openshell-driver-openshiftAn OpenShell driver that creates sandboxes on OpenShift.
serverless-harnessRuns an agent with no compute cost between turns, and resumes it later.

Deploy an agent in a sandbox

Set the deployment type when you import the agent.

With the CLI:

rossoctl agents import --deployment-type sandbox from-image \
--name orders --containerImage ghcr.io/acme/orders:v1.2.0

In the console, select the sandbox type in the deployment form.

Two limitations that you must know

The kubectl set env command does not operate on a sandbox

To change an environment variable, you must change the specification of the Sandbox resource. This example changes MCP_URL:

kubectl get sandbox weather-service -n team1 -o json \
| jq '(.spec.podTemplate.spec.containers[]
| select(.name == "agent").env[]
| select(.name == "MCP_URL")).value = "http://new-address:8080/mcp"' \
| kubectl apply -f -

The variable must already exist in the env array. If the variable is absent, add it first:

kubectl edit sandbox weather-service -n team1

A change to the specification does not restart the pod

This is an upstream limitation. After you change the specification, delete the pod:

kubectl delete pod -n team1 -l app.kubernetes.io/name=weather-service