Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
###### Place new entries directly below this line! ######

# GAIA benchmark data
examples/sandbox_agent/src/nat_sandbox_agent/data/*
!examples/sandbox_agent/src/nat_sandbox_agent/data/attachments/
examples/sandbox_agent/src/nat_sandbox_agent/data/attachments/*
!examples/sandbox_agent/src/nat_sandbox_agent/data/attachments/.gitkeep

# auto-generated chainlit stuff
chainlit.md
.chainlit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Dask
Databricks
Datadog
DB(s?)
[Dd]aytona
[Dd]eserialize
[Dd]ev
[Dd]evcontainer(s?)
Expand All @@ -59,6 +60,7 @@ Grafana
groundedness
[Gg]ranularities
[Hh]ashable
httpx
[Hh]yperparameter(s?)
[Ii]nferencing
isort
Expand All @@ -72,6 +74,7 @@ LLM(s?)
# https://github.com/logpai/loghub/
Loghub
Mem0
matplotlib
Milvus
[Mm]ixin
MLflow
Expand All @@ -85,6 +88,7 @@ NIC
NIM(s?)
npm
NumPy
openpyxl
NVIDIA
OAuth
URIs
Expand All @@ -103,16 +107,20 @@ PDF(s?)
Pydantic
PyPI
pytest
[Pp]yyaml
[Rr]erank
[Rr]eranker(s?)
[Rr]eranking
[Rr]edis
[Rr]einstall(s?)
reportlab
[Rr]eplatform(ing)?
[Rr]epo
[Rr]etarget(ed?)
[Rr]eusability
[Rr]untime(s?)
[Ss]andbox(ed|es|ing)?
seaborn
[Ss]erializable
[Ss]ubclassing
[Ss]ubcard(s?)
Expand Down
142 changes: 142 additions & 0 deletions examples/sandbox_agent/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Sandbox Agent Docker Image
# This image provides a pre-configured environment for sandbox execution
# with all necessary tools and libraries pre-installed.

FROM python:3.12-slim

# Metadata
LABEL maintainer="NVIDIA Corporation"
LABEL description="Sandbox Agent execution environment with Python, browser automation, and document generation tools"

# Set environment variables
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1

# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
# Basic utilities
curl \
wget \
git \
jq \
vim \
unzip \
# Network tools
ca-certificates \
# Browser dependencies (for Playwright)
libnss3 \
libnspr4 \
libdbus-1-3 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libxkbcommon0 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libasound2 \
libpango-1.0-0 \
libcairo2 \
# Fonts for document generation and browser
fonts-liberation \
fonts-noto \
fonts-noto-cjk \
fonts-dejavu-core \
# Audio/video processing
ffmpeg \
# PDF processing
poppler-utils \
# OCR
tesseract-ocr \
tesseract-ocr-eng \
# Document generation dependencies
pandoc \
# Clean up
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# Install Python packages
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir \
# Data processing
pandas>=2.0.0 \
numpy>=1.24.0 \
matplotlib>=3.7.0 \
seaborn>=0.12.0 \
# Network requests
requests>=2.31.0 \
httpx>=0.24.0 \
beautifulsoup4>=4.12.0 \
lxml>=4.9.0 \
# Browser automation
playwright>=1.40.0 \
# Web search
tavily-python>=0.5.0 \
# Document generation
python-pptx>=0.6.21 \
python-docx>=1.1.0 \
reportlab>=4.0.0 \
markdown>=3.5.0 \
# Excel support
openpyxl>=3.1.0 \
xlrd>=2.0.0 \
# JSON/YAML
pyyaml>=6.0.0 \
# Image processing
pillow>=10.0.0 \
# PDF processing
pdfplumber>=0.10.0 \
pypdf>=3.0.0 \
pdf2image>=1.16.0 \
# OCR
pytesseract>=0.3.10 \
# Mathematical computation
sympy>=1.12 \
# Computer vision
opencv-python-headless>=4.8.0 \
# Speech recognition
faster-whisper>=1.0.0 \
# Utilities
aiofiles>=23.0.0 \
python-dateutil>=2.8.0

# Create shared directory for Playwright browsers (accessible by all users)
ENV PLAYWRIGHT_BROWSERS_PATH=/opt/playwright-browsers
RUN mkdir -p ${PLAYWRIGHT_BROWSERS_PATH} && chmod 755 ${PLAYWRIGHT_BROWSERS_PATH}

# Install Playwright browser (Chromium only to reduce size)
RUN playwright install chromium --with-deps

# Pre-download faster-whisper model so it's available offline
RUN python -c "from faster_whisper import WhisperModel; WhisperModel('tiny')"

# Create workspace directories
RUN mkdir -p /workspace/input \
/workspace/output \
/workspace/temp \
/workspace/downloads

# Set working directory
WORKDIR /workspace

# Default command - keep container running
CMD ["/bin/bash"]
Loading
Loading