server/v0.1.13

opensandbox-group/OpenSandboxserver/v0.1.13May 7, 2026by Pangjiping

AI Summary

Introduced core lifecycle management features including snapshot management, signed endpoints for secure access, and pause/resume functionality. Also modularized the Docker runtime code.

Key Highlights

  • Snapshot lifecycle management with async background commit and startup recovery.
  • Signed endpoints for secure route access (OSEP-0011).
  • Pause/resume with rootfs snapshot support (OSEP-0008).
  • Docker runtime modularization, splitting the 2698-line docker.py into mixin modules.
  • API key environment variable override support.

New Features

  • Snapshot lifecycle management (create/get/list/delete)
  • Signed endpoints for secure route access
  • Pause/resume with rootfs snapshot
  • API key env override
  • Docker runtime modularization

Full Release Notes

## What's New

### ✨ Features

- **Snapshot lifecycle management** — create/get/list/delete APIs with async background commit, SQLite metadata store, and startup recovery for unfinished snapshots. Sandbox restore via `snapshotId`. SDK support across all 5 languages.
  - Docker: image commit/delete/inspect runtime (#764)
  - Kubernetes: SandboxSnapshot CRD with server-side watching (#837)
  - Deletion durability: records persisted as `Deleting` before runtime cleanup, so interrupted deletes recover via existing startup path instead of leaving stale `Ready` metadata (#842)

- **OSEP-0011: Signed endpoints for secure route access** — `GET /sandboxes/{sandboxId}/endpoints/{port}?expires=<unix_seconds>` returns SHA256-signed time-limited route tokens. Ingress gateway verifies signature before proxying. SDK support across all 5 languages. (#787)

- **OSEP-0008: Pause/resume with rootfs snapshot (Kubernetes)** — `/pause` and `/resume` endpoints, SandboxSnapshot CRD + controller, nerdctl-based image-committer Job. Supports `pausePolicy` in pool-based BatchSandbox. (#668)

- **API key env override** — `OPENSANDBOX_SERVER_API_KEY` env var overrides `server.api_key` from TOML config. Helm chart updated with `env` support. (#830)

### 🐛 Bug Fixes

- **K8s: event loop blocked during sandbox creation** — `time.sleep` in `_wait_for_sandbox_ready` blocked the asyncio event loop, causing liveness probe timeouts. Replaced with `await asyncio.sleep`. (#841)

- **Host path validation bypass via symlinks** — host paths and allowed prefixes now resolved with `os.path.realpath()` before validation. Closes #814. (#816)

- **CodeQL static analysis fixes** — fixed integer conversion, stack trace exposure, clear-text logging, regex backtracking, JS string escaping, missing workflow permissions. OSSFS temp files now owner-only. (#795)

- **CodeQL false positive documentation** — documented suppressions for sandbox-local SQL execution, Docker port probe, and startup-guard logging. (#797)

### 📦 Misc

- **Docker runtime modularization** — split 2698-line `docker.py` into mixin modules (orchestration, container ops, networking, volumes, runtime). No behavior changes. (#832)

- **Coverage enforcement** — CI enforces 80% statement coverage with `pytest-cov --cov-fail-under=80`. (#828)

## 👥 Contributors

Thanks to these contributors ❤️

- @qingyuppp
- @fengcone
- @Pangjiping
- @sauce-git
- @hittyt
- @ninan-nn

---

- PyPI: opensandbox-server==0.1.13
- Docker Hub: opensandbox/server:v0.1.13
- Aliyun Registry: sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/server:v0.1.13