Services/Sandbox

Running Code in Sandboxes

Run code in isolated, secure containers with configurable resources

Execute code in isolated Linux containers with configurable resource limits, network controls, and execution timeouts.

Three Ways to Use Sandboxes

MethodBest For
Web AppVisual management, browsing runtimes and snapshots
SDKProgrammatic use in agents and routes (ctx.sandbox)
CLILocal development, scripting, CI/CD

Multi-language Execution

Your agents are written in TypeScript, but the sandbox can run any language safely. Use ctx.sandbox.run() to execute Python, Node.js, shell scripts, or anything available via apt install in isolated containers.

Key Concepts

ConceptDescription
RuntimeA pre-configured base environment (OS + language tools) provided by Agentuity
SandboxA running container created from a runtime where you execute commands
SnapshotA saved sandbox state that can be used to create new sandboxes

These build on each other: Runtime → Sandbox → Snapshot. Here's an example of how to use all three:

  1. Pick a runtime (e.g., bun:1 or node:latest)
  2. Create a sandbox from that runtime
  3. Optionally save a snapshot to reuse your configured environment

Runtimes

Runtimes are pre-configured base environments that Agentuity provides. Each includes an operating system, language toolchain, and common utilities.

Language Runtimes

Use these for general code execution:

RuntimeDescription
bun:1Bun 1.x with JavaScript/TypeScript support (default)
node:latestNode.js latest version
node:ltsNode.js LTS version
base:latestMinimal runtime with essential tools

Agent Runtimes

Pre-configured AI coding assistants:

RuntimeDescription
claude-code:latestClaude Code AI assistant
amp:latestAmp AI coding assistant
codex:latestOpenAI Codex CLI agent
gemini-cli:latestGoogle Gemini CLI agent
opencode:latestOpenCode AI coding assistant

List Available Runtimes

Run agentuity cloud sandbox runtime list to see all available runtimes, or view them in the Agentuity App under Services > Sandbox > Runtimes.

Snapshots

A snapshot captures the filesystem state of a sandbox. You create new sandboxes from a snapshot rather than running it directly.

Snapshots build on top of runtimes. When you create a snapshot, it includes everything from the base runtime plus your installed dependencies and files.

Workflow:

  1. Create a sandbox from a runtime
  2. Install dependencies and configure the environment
  3. Save a snapshot
  4. Create new sandboxes from that snapshot (fast, no reinstallation needed)

See Creating and Using Snapshots for details.

Two Execution Modes

Choose based on your use case:

One-shot (sandbox.run())

Creates a sandbox, runs a single command, then destroys the sandbox. Best for stateless code execution.

import { createAgent } from '@agentuity/runtime';
 
const agent = createAgent('CodeRunner', {
  handler: async (ctx, input) => {
    const result = await ctx.sandbox.run({
      command: { exec: ['python3', '-c', 'print("Hello!")'] },
      resources: { memory: '256Mi', cpu: '500m' },
    });
 
    ctx.logger.info('Output', { stdout: result.stdout, exitCode: result.exitCode });
    return { output: result.stdout, exitCode: result.exitCode };
  },
});

Interactive (sandbox.create())

Creates a persistent sandbox for multiple commands. Best for stateful workflows like dependency installation.

import { createAgent } from '@agentuity/runtime';
 
const agent = createAgent('ProjectBuilder', {
  handler: async (ctx, input) => {
    const sandbox = await ctx.sandbox.create({
      resources: { memory: '1Gi' },
      network: { enabled: true },  // Required for package installation
    });
 
    try {
      await sandbox.execute({ command: ['npm', 'install'] });
      await sandbox.execute({ command: ['npm', 'run', 'build'] });
      return { success: true };
    } finally {
      await sandbox.destroy();
    }
  },
});

SDK Access

ContextAccess
Agentsctx.sandbox
Routesc.var.sandbox

The API is identical in both contexts.

Configuration Options

OptionDescriptionExample
runtimeRuntime environment'bun:1', 'python:3.14'
resources.memoryMemory limit (Kubernetes-style)'512Mi', '1Gi'
resources.cpuCPU limit in millicores'500m', '1000m'
resources.diskDisk space limit'1Gi'
network.enabledAllow outbound networktrue (default: false)
timeout.idleIdle timeout before cleanup'10m', '1h'
timeout.executionMax execution time per command'5m', '30s'
dependenciesApt packages to install['python3', 'git']
envEnvironment variables{ NODE_ENV: 'test' }
snapshotCreate from existing snapshot'my-env' or snp_abc123

When to Use Sandbox

Use CaseExample
Code execution agentsRun user-provided Python/JavaScript safely
Code validationVerify generated code compiles and runs
AI coding assistantsExecute code suggested by LLMs
Automated testingRun tests in clean environments
Build systemsCompile projects in isolated containers

Security

Sandboxes provide isolation through:

  • Network disabled by default: Enable explicitly when needed
  • Resource limits: Prevent resource exhaustion
  • Execution timeouts: Prevent runaway processes
  • Filesystem isolation: Each sandbox has its own workspace

Next Steps

  • SDK Usage: Detailed API for file I/O, streaming, and advanced configuration
  • Snapshots: Skip dependency installation with pre-configured environments
  • CLI Commands: Debug sandboxes and create snapshots manually

Need Help?

Join our DiscordCommunity for assistance or just to hang with other humans building agents.

Send us an email at hi@agentuity.com if you'd like to get in touch.

Please Follow us on

If you haven't already, please Signup for your free account now and start building your first agent!