Common Software
The sandbox runs a Debian/Ubuntu base image. You can install software with apt-get via the Process API or by customizing your Docker image. This page covers commonly needed packages and how to install them.
Browsers
Section titled “Browsers”Chromium
Section titled “Chromium”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "chromium", "chromium-sandbox"],});
// Launch headlessawait sdk.runProcess({ command: "chromium", args: ["--headless", "--no-sandbox", "--disable-gpu", "https://example.com"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","chromium","chromium-sandbox"]}'Firefox
Section titled “Firefox”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "firefox-esr"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","firefox-esr"]}'Playwright browsers
Section titled “Playwright browsers”Playwright bundles its own browser binaries. Install the Playwright CLI and let it download browsers for you.
await sdk.runProcess({ command: "npx", args: ["playwright", "install", "--with-deps", "chromium"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"npx","args":["playwright","install","--with-deps","chromium"]}'Languages and runtimes
Section titled “Languages and runtimes”Node.js
Section titled “Node.js”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "nodejs", "npm"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","nodejs","npm"]}'For a specific version, use nvm:
await sdk.runProcess({ command: "bash", args: ["-c", "curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash && . ~/.nvm/nvm.sh && nvm install 22"],});Python
Section titled “Python”Python 3 is typically pre-installed. To add pip and common packages:
await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "python3", "python3-pip", "python3-venv"],});
await sdk.runProcess({ command: "pip3", args: ["install", "numpy", "pandas", "matplotlib"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","python3","python3-pip","python3-venv"]}'
curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"pip3","args":["install","numpy","pandas","matplotlib"]}'await sdk.runProcess({ command: "bash", args: ["-c", "curl -fsSL https://go.dev/dl/go1.23.6.linux-amd64.tar.gz | tar -C /usr/local -xz"],});
// Add to PATH for subsequent commandsawait sdk.runProcess({ command: "bash", args: ["-c", "export PATH=$PATH:/usr/local/go/bin && go version"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"bash","args":["-c","curl -fsSL https://go.dev/dl/go1.23.6.linux-amd64.tar.gz | tar -C /usr/local -xz"]}'await sdk.runProcess({ command: "bash", args: ["-c", "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"bash","args":["-c","curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y"]}'Java (OpenJDK)
Section titled “Java (OpenJDK)”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "default-jdk"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","default-jdk"]}'await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "ruby-full"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","ruby-full"]}'Databases
Section titled “Databases”PostgreSQL
Section titled “PostgreSQL”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "postgresql", "postgresql-client"],});
// Start the serviceconst proc = await sdk.createProcess({ command: "bash", args: ["-c", "su - postgres -c 'pg_ctlcluster 15 main start'"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","postgresql","postgresql-client"]}'SQLite
Section titled “SQLite”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "sqlite3"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","sqlite3"]}'await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "redis-server"],});
const proc = await sdk.createProcess({ command: "redis-server", args: ["--daemonize", "no"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","redis-server"]}'
curl -X POST "http://127.0.0.1:2468/v1/processes" \ -H "Content-Type: application/json" \ -d '{"command":"redis-server","args":["--daemonize","no"]}'MySQL / MariaDB
Section titled “MySQL / MariaDB”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "mariadb-server", "mariadb-client"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","mariadb-server","mariadb-client"]}'Build tools
Section titled “Build tools”Essential build toolchain
Section titled “Essential build toolchain”Most compiled software needs the standard build toolchain:
await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "build-essential", "cmake", "pkg-config"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","build-essential","cmake","pkg-config"]}'This installs gcc, g++, make, cmake, and related tools.
Desktop applications
Section titled “Desktop applications”These require the Computer Use desktop to be started first.
LibreOffice
Section titled “LibreOffice”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "libreoffice"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","libreoffice"]}'await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "gimp"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","gimp"]}'await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "vlc"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","vlc"]}'VS Code (code-server)
Section titled “VS Code (code-server)”await sdk.runProcess({ command: "bash", args: ["-c", "curl -fsSL https://code-server.dev/install.sh | sh"],});
const proc = await sdk.createProcess({ command: "code-server", args: ["--bind-addr", "0.0.0.0:8080", "--auth", "none"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"bash","args":["-c","curl -fsSL https://code-server.dev/install.sh | sh"]}'
curl -X POST "http://127.0.0.1:2468/v1/processes" \ -H "Content-Type: application/json" \ -d '{"command":"code-server","args":["--bind-addr","0.0.0.0:8080","--auth","none"]}'CLI tools
Section titled “CLI tools”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "git"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","git"]}'Docker
Section titled “Docker”await sdk.runProcess({ command: "bash", args: ["-c", "curl -fsSL https://get.docker.com | sh"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"bash","args":["-c","curl -fsSL https://get.docker.com | sh"]}'await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "jq"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","jq"]}'await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "tmux"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","tmux"]}'Media and graphics
Section titled “Media and graphics”FFmpeg
Section titled “FFmpeg”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "ffmpeg"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","ffmpeg"]}'ImageMagick
Section titled “ImageMagick”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "imagemagick"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","imagemagick"]}'Poppler (PDF utilities)
Section titled “Poppler (PDF utilities)”await sdk.runProcess({ command: "apt-get", args: ["install", "-y", "poppler-utils"],});
// Convert PDF to imagesawait sdk.runProcess({ command: "pdftoppm", args: ["-png", "document.pdf", "output"],});curl -X POST "http://127.0.0.1:2468/v1/processes/run" \ -H "Content-Type: application/json" \ -d '{"command":"apt-get","args":["install","-y","poppler-utils"]}'Pre-installing in a Docker image
Section titled “Pre-installing in a Docker image”For production use, install software in your Dockerfile instead of at runtime. This avoids repeated downloads and makes startup faster.
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \ chromium \ firefox-esr \ nodejs npm \ python3 python3-pip \ git curl wget \ build-essential \ sqlite3 \ ffmpeg \ imagemagick \ jq \ && rm -rf /var/lib/apt/lists/*
RUN pip3 install numpy pandas matplotlibSee Docker deployment for how to use custom images with Sandbox Agent.