feat(integrations): add OpenSandbox environment - #6785
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
|
Hi @wukath — a gentle follow-up when convenient. The CLA and current automated checks are green. This implementation follows the existing experimental E2B/Daytona I’d appreciate guidance on whether a first-party experimental integration is the preferred placement, or whether you would like the scope or API shape adjusted. The branch is now behind |
Link to Issue or Description of Change
1. Link to an existing issue (if applicable):
2. Or, if no issue exists, describe the change:
Problem:
ADK's environment abstraction supports local, E2B, and Daytona execution, but users of a self-hosted OpenSandbox deployment cannot select it as an environment backend.
Solution:
Add an experimental
OpenSandboxEnvironmentthat implements the existingBaseEnvironmentcontract for command execution, file I/O, lifecycle renewal, owned-sandbox cleanup, and attachment to an existing sandbox. The change also adds an optionalopensandboxdependency, feature registration, focused unit coverage, and a runnable sample.Testing Plan
Unit Tests:
I have added or updated unit tests for my change.
All unit tests pass locally.
Focused OpenSandbox, E2B, Daytona, and
EnvironmentToolsetregression suite: 60 passed.Full tox suite passed on Python 3.10, 3.11, 3.12, and 3.14.
Python 3.13 completed with 12112 passed and 2 failed in
tests/unittests/test_import_loading.py. Both failures are caused by the local interpreter preloadingsitecustomize; the same two failures reproduce on an unmodifiedupstream/mainworktree.pre-commit run --from-ref upstream/main --to-ref HEAD: passed../scripts/update_constraints.sh --check: passed for Python 3.10 through 3.14.Wheel build and installation into a clean virtual environment: passed;
OpenSandboxEnvironmentimports with the publishedopensandbox==0.1.15SDK.Manual End-to-End (E2E) Tests:
Tested against a local Docker OpenSandbox server using a public Python image:
OpenSandboxEnvironment.close()releases the SDK client without destroying the sandbox.WriteFile,Execute, andReadFile; verified the marker in both the agent result and sandbox file.Checklist
The two unchecked test boxes reflect only the Python 3.13 ambient
sitecustomizefailures described above; they reproduce unchanged on upstreammain.Additional context
OpenSandbox is used here as a self-hosted backend. This contribution does not imply or require an official hosted OpenSandbox service.