Technical Deep Dive
Vitund-Sandbox
Isolated Linux environments where AI agents can write code, call APIs, and install packages — with full network controls, credential protection, and resource guardrails. Available as a managed service or self-hosted on your infrastructure.
Three Ways to Use It
Create sandboxes from the command line, let your LLM manage them via MCP, or build programmatic workflows with the Python API. A web dashboard rounds it out for visual management.
CLI — vtd-sandbox-ctl
vtd-sandbox-ctl health
vtd-sandbox-ctl create <id> [options]
vtd-sandbox-ctl exec <id> -- <cmd>
vtd-sandbox-ctl stats <id>
vtd-sandbox-ctl list
vtd-sandbox-ctl destroy <id> [--wipe] MCP Server — vtd-sandbox-mcp
{
"mcpServers": {
"vitund-sandbox": {
"command": "/opt/vitund-sandbox/bin/vtd-sandbox-mcp",
"args": ["--transport", "stdio"]
}
}
} Python API
from supervisor.api import APIClient
client = APIClient()
await client.connect()
await client.create_sandbox(
"agent-007",
memory_mb=512,
allowed_domains=["api.anthropic.com"]
)
result = await client.exec(
"agent-007",
["python3", "-c", "print('Hello!')"],
timeout=30
) 28 MCP Tools
Sandbox lifecycle, file I/O, process management, overlays, agents, git repos, and system administration — exposed over streamable HTTP for remote access. Any MCP-compatible client can manage sandboxes over the network.
sandbox_createsandbox_execsandbox_destroysandbox_statssandbox_listfile_readfile_writefile_listprocess_runoverlay_createoverlay_listagent_createagent_listgit_clonegit_statussecret_setsecret_mapsystem_healthsandbox_healthsandbox_logsfile_uploadfile_downloadoverlay_deleteagent_deletegit_pullsecret_listsystem_statssandbox_config How It Keeps Agents Contained
Six independent security layers between the agent and your host. Even if an agent finds a way past one, the others still hold.
Network Proxy
Domain filtering + DNS
Secret Injection
Proxy-layer credentials
Syscall Filtering
Seccomp BPF allowlist
Filesystem Isolation
Overlayfs + nosuid
Process Isolation
6 Linux namespaces
Resource Limits
cgroups v2
Linux Kernel (5.4+)
Agents Can't Crash Your Host
Resource Controls
An agent enters an infinite loop, spawns hundreds of processes, or tries to allocate all available memory. Without limits, your host goes down. With Vitund, each sandbox has hard ceilings on memory, CPU, and process count. Fork bombs are killed instantly. Memory hogs trigger the OOM killer. Your host stays healthy.
# Create with resource limits
sudo vtd-sandbox-ctl create my-agent \
--memory 512 \
--cpu 100 \
--pids 256
# Check live resource usage
sudo vtd-sandbox-ctl stats my-agent Agents Can't See Each Other — or Your Host
Process Isolation
Each agent gets its own isolated Linux environment. It has its own process tree, its own filesystem, its own network stack, its own user identity. It can't see other sandboxes, can't access host files, and can't interact with anything outside its boundary. To the agent, it's alone on the machine.
# Each sandbox is fully isolated:
# ✓ Separate process tree
# ✓ Private network stack
# ✓ Independent filesystem
# ✓ Isolated user context
# ✓ Own hostname and IPC
sudo vtd-sandbox-ctl create secure-agent \
--memory 512 Agents Pick Up Where They Left Off
Persistent Environments
Your agent installs packages, downloads data, writes output files. With Vitund, all of that survives sandbox restarts. Each sandbox has its own writable filesystem layered on a shared base image. Need a fresh start? Wipe on demand. Pre-built environments for Python, Node.js, and more are ready to go.
# Pre-built environments
# From apt packages:
sudo vtd-sandbox-ctl create ml-agent \
--overlay-type python-ml
# From OCI/Docker images:
sudo vtd-sandbox-ctl create node-agent \
--overlay-type oci:node:20-slim Agents Can Only Do Safe Things
Security Policies
What if an agent tries to debug another process, mount a filesystem, or load a kernel module? It can't. A strict allowlist at the OS level controls exactly which operations are permitted. Everything else is silently blocked. The allowlist is tuned for what agents actually need — file I/O, networking, running scripts — and nothing more.
# Default policy: deny everything,
# then allow only what agents need.
#
# Blocked by default:
# ✗ Debugging other processes
# ✗ Mounting filesystems
# ✗ Loading kernel modules
# ✗ Privilege escalation
#
# Allowed:
# ✓ File I/O, networking, memory
# ✓ Standard agent operations Agents Only Reach Approved Domains
Network Filtering
Your agent needs to call the Anthropic API and download packages from PyPI. It shouldn't be able to reach your database, your admin panel, or exfiltrate data via DNS. Every request passes through a per-sandbox proxy — only approved domains are reachable, internal networks are blocked, DNS queries are filtered, and every connection is logged.
# Create with network rules
sudo vtd-sandbox-ctl create my-agent \
--memory 512 \
--allow 'api.anthropic.com' \
--allow '*.anthropic.com' \
--allow 'pypi.org'
# All other domains are blocked
# Internal networks (RFC 1918) blocked
# DNS queries filtered by same rules
# Per-request audit logging enabled Agents Call APIs Without Seeing Your Keys
Credential Security
Your agent needs to call the Anthropic API. Normally you'd pass an API key as an environment variable — and the agent could read it, log it, or send it somewhere. With Vitund, credentials are stored encrypted on the host and injected into outbound HTTPS requests by the proxy. The agent makes the API call, the proxy adds the key. The agent never sees it.
# 1. Store secret on the host
vtd-sandbox-ctl secret set anthropic-key \
--value "sk-ant-..."
# 2. Map secret to a domain
vtd-sandbox-ctl secret map anthropic-key \
--domain "api.anthropic.com" \
--header "Authorization: Bearer"
# 3. Agent code has NO credentials
# Proxy injects them automatically
# Agent cannot read or exfiltrate keys Security Model
What's blocked, what's allowed. No ambiguity.
Blocked
- ✕ Raw socket creation (seccomp BPF)
- ✕ Direct network access — all traffic routed through proxy
- ✕ Access to RFC 1918 internal networks and localhost
- ✕ ptrace, mount, reboot, and other dangerous syscalls
- ✕ Host filesystem access (mount namespace + overlayfs)
- ✕ Privilege escalation — no host UID 0 capabilities
- ✕ DNS exfiltration — filtering DNS forwarder enforces domain rules
- ✕ Runaway processes (PID limits) and memory exhaustion (OOM killer)
Allowed
- ✓ HTTP/HTTPS to approved domains (proxy-mediated)
- ✓ Python, shell commands, pip installs
- ✓ File I/O within the sandbox filesystem
- ✓ Subprocess creation (within configured PID limits)
- ✓ Persistent storage across restarts (overlayfs)
- ✓ API calls with proxy-injected credentials
- ✓ Git operations with per-agent credentials
Requirements
Minimal dependencies. The installer handles everything.
System Requirements
- › Linux kernel 5.4+ with cgroups v2
- › x86_64 (Intel/AMD) or ARM64 (Raspberry Pi 4/5, Graviton)
- › Ubuntu 22.04+, Debian 12+, RHEL 9+
- › WSL2 (Windows 11) or Lima/OrbStack VM (macOS)
- › Root access for namespace setup
What make install Handles
- ✓ All system dependencies
- ✓ Standalone Python runtime
- ✓ Base image creation
- ✓ Background service and security profiles
- ✓ Default configuration
Need multi-node orchestration, fleet management, or custom deployment?
to discuss your requirements.
Stay in the loop
Get product updates, security deep-dives, and early access — no spam, unsubscribe anytime.