Force Stop & SDK Performance
This release improves sandbox lifecycle management with a new force stop capability. The sandbox stop endpoint now accepts a force parameter that sends SIGKILL instead of SIGTERM, ensuring immediate termination for unresponsive sandboxes across the API, runner, and SDK stack.
The Python SDK import time drops from ~3 seconds to near-instant. The fix replaces eager imports with lazy __getattr__-based loading, reducing startup from ~600 compiled Pydantic model initializations to only what is needed.
SDK dotenv handling is now isolated: only DAYTONA_* variables are loaded from .env files without polluting the global environment. Several API fixes address stale sandbox writes, build cache staleness, and snapshot mutation.
Release Details
Features:
api: clear failed build cache (#4160)
api,runner,sdk: force stop sandbox (#4172)
guides: OpenEnv FinQA guide with single-episode demo and GRPO training (#3979)
sdk-typescript,sdk-python,sdk-ruby: load only DAYTONA_ env vars from dotenv files without polluting env (#4186)
Fixes:
api: prevent stale sandbox writes (#4146)
api: migration drift (#3961)
api: declarative build staleness cron (#4159)
api: avoid in-place snapshot mutation in sandbox state sync (#4187)
daemon: close sync session stdin and track async holder process (#4107)
otel: bump otel SDKs to v1.42.0 (#4213)
runner: pass inter-sandbox network enabled configuration (#4195)
sdk-python: retry request on stale connection (#4214)
sdk-python: surface upload_files error details (#4048, #4206)
Refactor:
sdk-python: optimize Python SDK import time with lazy imports (#4192)
Chores: