Releases: srtab/daiv-sandbox
Releases · srtab/daiv-sandbox
v0.1.1
v0.1.0
🧪 daiv-sandbox
v0.1.0 – First Official Release 🎉
We’re proud to announce the first official release of daiv-sandbox
following the v0.1.0-rc.*
candidate cycle! This marks the beginning of public availability, with a stable feature set and robust container-based sandboxing for command and code execution.
Note
While still under the 0.x
prefix (indicating ongoing development), this release is suitable for real-world usage and follows a tested and consistent API.
🚀 What's Included
-
Secure Containerized Execution
- Run untrusted code and shell commands inside isolated Docker containers.
- Each execution is ephemeral — containers are spun up and torn down per request.
-
FastAPI-Based REST Interface
POST /run/commands/
: Run shell commands on provided archives.POST /run/code/
: Execute Python code with optional dependencies.
-
gVisor Runtime Support (Optional)
- Use Google’s
gVisor
(runsc
) for added kernel isolation. - Toggle runtime via the
DAIV_SANDBOX_RUNTIME
env variable.
- Use Google’s
-
Docker Image Available
- Pull from GitHub Container Registry:
ghcr.io/srtab/daiv-sandbox:latest
- Pull from GitHub Container Registry:
⚠️ Known Limitations
- Only
python
is supported in/run/code/
(more languages planned!). distroless
base images are unsupported (lack shell for command execution).gVisor
may introduce minor performance overhead in exchange for improved isolation.
📦 Quick Start
docker run --rm -d -p 8000:8000 \
-e DAIV_SANDBOX_API_KEY=my-secret-api-key \
ghcr.io/srtab/daiv-sandbox:latest
Refer to the README for full configuration and API usage details.
💬 Feedback & Contribution
This is a great time to report bugs, request features, or contribute!
Open an issue or PR on GitHub to help shape the future of daiv-sandbox
.
v0.1.0-rc.10
Changed
- Moved
LANGUAGE_BASE_IMAGES
fromdaiv_sandbox/main.py
todaiv_sandbox/languages.py
.
Fixed
- Changed strategy to determine where the run will execute inside the container. Now the default user and working directory are considered to avoid privileges issues.
v0.1.0-rc.9
Fixed
- Fixed issue when images have limited privileges.
Chore:
- Updated dependencies:
ipython
from 8.30 to 8.31pydantic
from 2.10.3 to 2.10.4pydantic-settings
from 2.6.1 to 2.7.0ruff
from 0.8.2 to 0.8.4mypy
from 1.13.0 to 1.14.0
v0.1.0-rc.8
Added
- Added
HOST
andPORT
settings to allow overriding the host and port of the service. - Added
LOG_LEVEL
setting to allow overriding the log level of the service.
Fixed
- Fixed logging configuration for
daiv_sandbox
logger, no logs where being written to the console. - Fixed
SENTRY_ENABLE_TRACING
setting to be a boolean or an integer.
v0.1.0-rc.7
Added
- Added
ping
method toSandboxDockerSession
to check if the Docker client is responding.
Changed
- Changed
health
endpoint to check if the Docker client is responding and avoid starting the service if it is not responding. - Changed default
DOCKER_GID
to991
.
v0.1.0-rc.6
Added
- Added
SENTRY_ENABLE_TRACING
configuration to enable Sentry tracing. - Added
EXPOSE 8000
to theDockerfile
to explicitly expose the port.
Changed
- Updated dependencies:
ipython
from 8.29 to 8.30pyopenssl
from 24.2.1 to 24.3.0ruff
from 0.8.0 to 0.8.2
v0.1.0-rc.5
Added
- Added
Dockerfile
args to allow overriding the application UID and GID, and docker GID.
Fixed
- Fixed the
Dockerfile
to create theapp
user with the correct group and user IDs to avoid permission issues. - Fixed the
Dockerfile
to create thedocker
group with the correct GID to allow theapp
user to access the docker socket.
v0.1.0-rc.4
Added
- Added
HEALTHCHECK
to theDockerfile
.
Fixed
- Fixed
Dockerfile
to create theapp
user with the correct home directory defined.
Changed
- Changed
/health/
endpoint to/-/health/
. - Changed
/version/
endpoint to/-/version/
.
v0.1.0-rc.3
Changed
- Improved
Dockerfile
for production use. - Updated dependencies:
fastapi
;pydantic
;sentry-sdk
.
Fixed
- Fixed issue on
run_id
being passed as anUUID
to theSandboxDockerSession
class instead of astr
. - Fixed missing
curl
dependency onDockerfile
for healthcheck.