Stable patch release for users upgrading from 1.2.0, including both 1.2.1 release candidates and subsequent fixes. Server, CLI, SDKs, charts, and platform images ship together at 1.2.1.
Highlights
- Dynamic credentials: Credential Vault Exchange resolves credentials per request across the server, egress, and all five SDKs, without vault persistence of resolved secrets (#2457 #2535 #2534 #2560).
- Multi-version Fast Sandbox VMMs: managed Firecracker 1.16.1/1.17.0 bundles let new template builds select the highest installed version while existing artifacts restore with their exact recorded VMM version, failing explicitly if it is unavailable (#2795 #2812 fast-sandbox#189).
- Safer data and capacity management: staged uploads reduce overwrite data loss where atomic replacement is available, controller restarts preserve live-sandbox Pods, and Docker enforces requested writable-layer disk quotas (#2433 #2478 #2398 #2716).
Server
- Carry template CPU/memory shapes through creation and snapshot restore on
ResourceAwarepools; legacy pools retain their existing behavior (#2602 #2619 #2623 #2628 #2633). - Enforce Docker
resourceLimits.diskon the writable container layer, returning 400 for unsupported drivers or invalid limits instead of silently ignoring them (#2716). - Allow Docker snapshots directly from paused sandboxes (#1941).
- Move the server-proxied data path into maintenance mode; existing traffic remains supported, but deployments should migrate to the ingress gateway (#2548).
- Reject unknown fields in closed request objects rather than silently accepting misspelled options (#2576).
- Reduce Kubernetes API traffic and list costs through per-object informer invalidation and server-side metadata selectors (#2599 #2559).
- Require OCI template artifacts to be SHA-256-pinned in the expected repository (#2491).
- Fail startup when Docker expiration enforcement cannot be restored, except for concurrently removed containers (#2533).
- Other fixes improve create-timeout diagnostics and idle-pause probe bounds (#2434 #2596); Docker mount, host-path, and resource validation (#2421 #2505 #2474 #2701 #2751); proxy GET bodies and exhaustion errors (#2518 #2519); and empty metadata filters, name validation, and API error codes (#2461 #2499 #2702 #2703).
SDKs
- All five SDKs support exchange credential sources and credential-only binding auth; Kotlin/C# consumers must recompile and review widened credential types (#2534 #2560).
- Optional detailed download APIs expose status, headers, ranges, and partial-response detection without requiring changes to existing adapters; Python/JavaScript/C# report unknown totals when encoded lengths cannot describe decoded output (#1597 #2592).
- Documentation expands lifecycle/network options, exchange credentials, template workflows, and S3 examples (#2590 #2597 #2620 #2506).
Python
- MCP adds
command_get_statusandcommand_get_logsfor background-command polling and incremental output (#2648). - Silent command SSE streams now time out; abandoned downloads release connections, and streaming failures consistently use SDK exceptions (#2527 #2487 #2531 #2570 #2515 #2525).
- Graceful pool shutdown drains cleanup kills rather than abandoning sandboxes; smaller fixes cover endpoint invalidation, adapter redirects/hooks, and actionable MCP errors (#2507 #2409 #2553 #2524).
JavaScript
- Prevent positive sub-millisecond command timeouts from becoming unbounded; fix unlimited redirect deadlines, structured isolated-session errors, and closing downloads during iteration (#2440 #2488 #2466 #2514).
Kotlin
- Round fractional command/session timeout milliseconds upward, preventing sub-millisecond values from becoming unbounded (#2537).
C#
- Use the common
CredentialSourcemodel for inline and exchange variants; update inline-only assumptions when recompiling (#2560).
Go
- Preserve code-interpreter output fragments in
Execution.Text()without inserting newlines (#2447). - Enforce wake, Running-state, and interpreter-readiness budgets without truncating established streams or accepting unfinished readiness probes (#2572 #2611 #2528 #2668 #2480 #2504).
- Preserve cleanup ownership during cancelled pool operations and fence incomplete destruction for retry; cancelled acquires no longer consume healthy idle capacity (#2542 #2617 #2580 #2616).
- Fence stale endpoint lookups after lifecycle changes without cancelling fetches still needed by other callers (#2503 #2564 #2579).
- Other fixes bound retry overflow and server-supplied delays (#2452 #2508 #2509); improve SSE parsing, multipart boundaries, and header merging (#2439 #2618 #2468 #2529); and correct pool maintenance, telemetry deadlines, and timeout tests (#2453 #2565 #2540 #2479).
Controller
- Add namespace-scoped caches, configurable leader-election timings, and
controller.extraArgsfor deployment tuning (#2571 #2651 #2566). - Recover pool allocations before eviction, protecting live-sandbox Pods after controller restarts (#2398).
- Reject rootfs snapshots missing required digests and retain their Pods instead of deleting the only resumable runtime (#2482).
- Other fixes prevent lifecycle-related memory growth, remove excess idle Pods after
poolMaxreductions, and place the recovery ConfigMap in the correct namespace (#2646 #2470 #2694).
Execd
- Discover Jupyter runtime tokens when
JUPYTER_TOKENis unset (#2448). - Stage uploads and isolated-file replacements before rename to protect existing content; atomicity requires a writable containing directory, with an in-place permission fallback described below (#2433 #2478).
- Preserve isolated-workspace contents and modes during copy-up/rename, honor overlay deletions, and reject symlink chmod rather than following host targets (#2638 #2469).
- Refresh MITM trust after Kubernetes egress-sidecar CA rotation, avoiding persistent TLS failures (#2582).
- Isolated runs no longer consume shell control input; deleting Bash sessions terminates all active runs, and PTY close hangs up ordinary background jobs while retaining terminal-like behavior for HUP-ignoring jobs (#2517 #2731 #2733).
- Restore Jupyter startup retries and session cleanup, fail unsupported languages promptly, and deliver output/errors before reporting completion (#2486 #2689 #2606).
- Recover SQL execution after temporary setup failures without automatically replaying queries (#2757).
- Security hardening: percent-encode control bytes in download headers and correct RFC 8187 filename encoding (#2741 #2516).
- Other fixes cover command-log correlation and validation (#2598 #2686); PTY output and exported escapes (#2644 #2772); download/search validation and file timestamps (#2451 #2687 #2604); cgroup-v1 metrics and SQL byte rendering (#2641 #2685); and an opt-in legacy SSE workaround for older Kotlin/JVM deployments (#2472).
Networking
egress
- Credential Vault Exchange: resolve fresh headers through UDS/HTTPS using egress-derived sandbox identity and request targets; resolution fails closed, and resolved secrets are neither persisted nor cached by the vault (#2457 #2495 #2500 #2501 #2535 #2538 #2539 #2547 #2549 #2563).
- Enforce Fast Sandbox per-subject TCP port and IP/CIDR-plus-port policies, including original-destination checks through MITM (#2662).
- Hot-reload Fast Sandbox operator deny/allow rules and reachable-port caps without restarting egress; changes apply atomically across active subjects, retaining the previous policy on failure and rejecting stale DNS answers after revocation. The network-security guide documents deployment, precedence, and enforcement boundaries while preserving old guide URLs (#2727 #2814).
- Allow dns+nft sidecar policy PATCH/DELETE to opt into blocking established traffic with
dropEstablished=true; Fast Sandbox is not supported (#2346). - [EXPERIMENTAL] Harden strict Actions v2 ownership/persistence and subject readiness with durable fences, authenticated child sessions, and acknowledged policy/Vault snapshots; defaults remain unchanged (#2441 #2460 #2493 #2586 #2589 #2609 #2634 #2649 #2666 #2708).
- [EXPERIMENTAL] — not for production:
OPENSANDBOX_EGRESS_FSB_INTERCEPTION_MODE=credential-boundselects a budgeted TLS handshake experiment, not working credential injection or request forwarding: all decrypted HTTP/1.1 and HTTP/2 origin traffic is still denied.allremains the default; the OSEP-0023 rollout describes unfinished work (#2737 #2797 #2777). - Security fixes: policy PATCH preserves untouched deny rules, and invalid
defaultActionvalues are rejected rather than producing inconsistent, potentially fail-open enforcement (#2664 #2662 #2693). - Renew Fast Sandbox DNS leases in the kernel and preserve other subjects' leases during deletion (#2652 #2653).
- Other hardening covers experimental interception-port validation, idempotent readiness hooks, and nft smoke/read-back checks (#2587 #2510 #2543 #2735).
ingress
- Use one queue-plus-wait wake budget and validate it against flight lifetime; mixed regular/Fast Sandbox wake routing no longer panics at startup (#2511 #2513 #2600).
- Other fixes validate legacy hostname ports, correct final-status/client-IP telemetry, and remove a wake-test race (#2578 #2484 #2688 #2512).
Fast Sandbox
- Bundle managed Firecracker 1.16.1/1.17.0 binaries for runtime and template builds, selecting the exact artifact-recorded version for restore rather than silently using the latest installed VMM (#2795 #2812 fast-sandbox#189).
- Isolate ResourceAware direct-Firecracker VMMs in a bounded cgroup subtree, protecting Fastlet from pool-local OOM while retaining failed-runtime identities for cleanup (#2626 fast-sandbox#162).
- Enable free-page reporting in new object-store templates, returning guest-freed memory to the host without changing static resource commitments; OCI templates are not yet supported (#2546 fast-sandbox#114).
- Improve OCI storage with reusable warm ublk devices and best-effort checkpoint/rootfs layer compaction (#2594 fast-sandbox#163 #2546 fast-sandbox#158).
- Reuse locally published OCI checkpoint blobs for faster same-node resume, with bounded storage, protection for live-device references, and registry fallback (#2812 fast-sandbox#178).
- [EXPERIMENTAL] RootfsOnly OCI snapshots now extend from runtime capture to Fast Sandbox's FastPath and SandboxSnapshot CRD, with capability checks, produced-mode validation, and journaled recovery. Restores cold-boot without preserving memory; OpenSandbox REST/SDK mode selection and RootfsOnly pause/resume remain unsupported (#2706 fast-sandbox#173 #2812 fast-sandbox#177).
- OverlayBD template builds now inject guest-control and validate freeze/thaw by default; existing templates need rebuilding to gain RootfsOnly capture capability (#2812 fast-sandbox#183).
- Add shared YAML-configured file logging and rotation for first-party Kubernetes components, with optional stderr mirroring; log collectors and custom launch flags need migration (#2812 fast-sandbox#197).
- Expose timestamped template-build phases, elapsed times, and failures across image pull, rootfs preparation, guest readiness, snapshotting, and publication (#2815 fast-sandbox#201).
- [EXPERIMENTAL] Fence delayed strict Actions v2 operations with durable owner identity and confirmed retirement; v1 remains the default (#2546 fast-sandbox#152).
- Add namespace/API-client tuning, chart scheduling hooks, optional direct-origin delivery, and template-baked execd init mode (#2581 fast-sandbox#161 #2566 #2494 #2497).
- Immediate create/pause/resume transitions now converge without settle delays, and active pools replace terminal Fastlet Pods instead of counting them as capacity (#2626 fast-sandbox#166 #2706 fast-sandbox#172).
- Recover idle shared snapfiles attachments after ublkd device loss without manual cache wipes; attachments with other Sandbox leases remain protected rather than being rebuilt under live consumers (#2812 fast-sandbox#193).
- Other fixes cover BusyBox-based template readiness, timestamp precision, and existing-secret rendering (#2626 fast-sandbox#164 #2706 fast-sandbox#170 #2695); restore cache-affinity matching for Firecracker image/template references (#2812 fast-sandbox#119).
- Expand ResourceAware rollout coverage and correct fixture CPU budgets without changing saturation capacity (#2622 #2637 #2647 #2669 #2812); improve ublk recovery, exchange/console integration tests, KVM selection, and snapshot-staging documentation (#2454 #2561 #2676 #2665 #2714); gate PR KVM runs on maintainer-added
ok-to-test, without unrelated labels cancelling an active run (#2813).
Misc
- Console: add a browser PTY shell with BFF-held credentials and automatic session cleanup, improve disconnect feedback, and translate the interface into English (#2233 #2639 #2657).
- Node-agent: collect guest kernel/init console output through an opt-in
vm-consolesource, using node-local VM metadata and restart-safe offsets rather than cluster-wide Sandbox watches (#2234 #2677 #2546 fast-sandbox#154). - CLI fixes preserve literal output and string configuration (#2520 #2522); improve config, argument, timeout, and overwrite-refusal errors (#2521 #2551 #2692 #2742 #2748 #2743); and repair PTY cleanup, metrics watching, and table output, including
osb template get's missingmanifest_ref(#2523 #2691 #2747 #2745). - Examples add an ACK PeerPods/TDX walkthrough and adopt Google ADK 2.13.0's native environment/toolset, while correcting the Python network-isolation example (#2545 #2734 #2711).
- Governance/docs publish the AAIF charter and DCO/CC-BY-4.0 contribution rules, clarify voting and ownership, reconcile proposal statuses, and document signing/provenance gaps (#2490 #2678 #2679 #2680 #2624 #2670 #2671 #2672 #2673 #2674 #2467).
- Maintenance covers orphan node-agent streams, dead-code/test cleanup, single-platform Kind imports, and Linux/eBPF test setup (#2471 #2496 #2640 #2736 #2573 #2473).
- Release preparation includes candidate version bumps, notes, and generated BOMs (#2583 #2584 #2585 #2588 #2720 #2723 #2724 #2725 #2726).
Upgrade & Compatibility
- Managed Firecracker: deploy matching charts, runtime, and builder images;
runtimeEnvironments→firecracker.firecracker.vmmDiris now supported and must reference an absolute managed-binary directory. New managed builds choose the highest installed version (currently 1.17.0); Full/RootfsOnly restores require the manifest-recorded version and fail if it is unavailable, rather than falling back to latest. Keep 1.16.1 binaries for existing artifacts without relabeling them; retaining old binaries does not guarantee downgrade compatibility for persisted Fast Sandbox state (#2795 #2812 fast-sandbox#189). - Request validation: remove unknown keys from closed request objects and use only one alias spelling; these now return 422. Replace
ImageAuth.token/Docker-config extras with supportedusername/password, remove trailing newlines from names/addresses, and use onlyallow/denyfor policydefaultAction(#2576 #2499 #2693). - SDK credential models: Kotlin/C# are not ABI-compatible with
1.2.0; recompile and review widened sources and nullable/typeless auth assumptions. Exchange auth contains onlycredential; Python inline sources reject extra keys, and generated-model users should prefer handwritten models. Use keyed Go literals for changed source/metadata models andExecution; JSON round-tripping losesExecution.Text()'s private formatting mode (#2560 #2534 #2447). - Proxy/ingress: migrate maintenance-only server-proxy options to ingress; legacy hostname ports must be canonical decimals in
1–65535, and--wake-park-budgetmust be below--wake-max-flight-lifetime(#2548 #2578 #2511). - Docker quotas: supplied
disk/storage/ephemeral-storagelimits must be positive and supported by the storage driver or creation returns 400. Only the writable layer is covered, not bind mounts, volumes, or image layers; Windows retains its existing disk-size behavior (#2716). - Docker preflight/startup: correct duplicate, root, colon-containing, or reserved mount destinations and quantities above signed int64; an explicit
/host-path allowlist authorizes all POSIX descendants. Expiration-restore failures now prevent startup unless the container was concurrently removed; investigate persistent daemon errors (#2421 #2505 #2751 #2474 #2533). - Downloads: detailed APIs remain optional for custom adapters; check 206/
isPartialand ranges before appending, and close response bodies. Unknown totals use-1; encoded HTTP lengths/ranges are not decoded progress or resume offsets. Python callers should catch SDK exceptions rather than rawhttpxerrors (#1597 #2592 #2515 #2525). - Timeouts and polling: Python command streams time out after
max(request_timeout, 30s)without bytes; raiserequest_timeoutfor legitimate silence. MCP pollers must read logs once more after completion and retain opaque cursors; empty output is not completion. Custom Go pool stores must honor cancellation, and incomplete destruction stays fenced for retry (#2527 #2648 #2580). - Upload atomicity: use writable containing directories for staged uploads/isolated replacements; existing writable files fall back to non-atomic truncation on staging permission errors. Ordinary
/files/replaceremains in-place. Staged replacement preserves modes, not xattrs/ACLs/capabilities/SELinux labels; ownership is best effort for ordinary writes and session UID/GID for isolated writes (#2433 #2478). - Upload storage: hardlinks/open readers retain the old inode, multipart overwrites may need roughly three times the file size, and interrupted writers can leave staging files. Avoid reserved
.osb-upload-/.osb-staging-names, especially a prefix plus 16 hex digits; rename existing collisions directly. Special-file targets are rejected, while bind-mounted/open files can prevent rename; directory sync is best effort (#2433 #2478). - Session lifecycle: isolated foreground stdin is now
/dev/null; use files or here-documents. Bash-session deletion terminates all overlapping runs; PTY close adds SIGHUP and up to 500 ms before group kill, whilenohup/HUP-ignoring jobs can survive (#2517 #2731 #2733). - Jupyter/JVM: custom images need an explicit token or discoverable runtime token files and the requested kernel. Prefer shaded
sandbox-api1.0.18+ overEXECD_SSE_LEGACY_COMPAT, which is off by default and removes structuredexit_codevalues (#2448 #2689 #2472). - Controller configuration: cache scope must include all managed namespaces, plus Fast Sandbox template/runtime-environment namespaces; it does not change RBAC or provide tenant isolation. Review
controller.podRecovery.*, which now takes effect, and remove obsolete ConfigMaps left by plain-manifest upgrades. Custom election timings require lease > renew > 1.2×retry (#2571 #2581 fast-sandbox#161 #2694 #2651). - Exchange deployment: align server/SDK/egress versions; the sidecar live revision runtime does not support exchange. Resolver caller authentication is not implemented—Ed25519/JWKS remains design-only. Use a protected UDS or trusted-egress-only HTTPS with trusted CAs; sandbox allow rules must not expose resolvers, and MITM UID exclusion alone is not isolation (#2501 #2549 #2631 #2547).
- [EXPERIMENTAL] Strict Actions v2: enable matching
OPENSANDBOX_EGRESS_ACTIONS_API_VERSION/FastletactionsApiVersionvalues ofsandbox.fast.io/actions/v2only on clean-base direct-Firecracker deployments with durable state, isolated management ports, and manager authorization. Pause/resume, snapshots/restore, live binding removal, owner migration, and same-UID reuse remain unsupported; use terminal deletion/new UIDs, preserve fences, and never treat fencing as authentication or downgrade existing state to v1 (#2441 #2460 #2493 #2546 fast-sandbox#152). - [EXPERIMENTAL] Credential-bound interception:
OPENSANDBOX_EGRESS_FSB_INTERCEPTION_MODE=credential-boundstill denies decrypted application forwarding and must not be enabled in production. With the switch unset, both legacy gates enabled remain a deprecated alias; revision-runtime alone is installation-only. Explicit mode/gate conflicts, empty/unknown values, and setting this switch on sidecar fail startup (#2737 #2797). - Experimental startup requirements: credential-bound mode requires transparent MITM,
dns+nft, and only default interception ports80,443; remove insecure TLS verification, chained proxies, and effectiveignore_hosts/allow_hosts. Runtime-userconfig.yamlthenconfig.ymlare checked; read/parse errors fail closed. To return toall, unset both legacy gates; sidecar live revision also rejects extra interception ports (#2587 #2797). - Port policies: Fast Sandbox supports TCP only, at most 256 ports per rule, and no domain-plus-port combinations; normal updates preserve established flows.
dropEstablishedis supported only on dns+nft sidecar PATCH/DELETE, ignored by POST, and unsupported in Fast Sandbox, dns-only, live-revision, or chained-proxy-plus-transparent-MITM modes; it installs packet drops, not TCP resets. Removing a port-only allow alone does not trigger established-flow blocking (#2662 #2346). - Operator-rule reload: Fast Sandbox reloads runtime-mutable rule files on a one-minute tick; mount ConfigMaps as directories, not
subPath, and allow for kubelet projection delay. Image-baked rules still require a new image and recreation. Successful reloads clear DNS-learned leases, so allowed domains need another lookup; failed reloads retain the previous overlay, and established connections are not forcibly terminated (#2727 #2814). - Network-security boundaries: domain denies filter DNS, not direct connections to known IPs; use explicit IP/CIDR denies or default-deny policies for those paths. Operator denies override operator allows, so permitted internal services require a deny-range carve-out. Classic Docker/Kubernetes creation injects egress only when
networkPolicyis supplied;poolRefplusnetworkPolicyis unsupported, so configure pooled controls in the template (#2814). - ResourceAware rollout: direct-Firecracker
resource-admission.jsonmoves from v2 to v3; old/new Fastlets reject the other configuration version, so coordinate controller/Fastlet upgrades per pool. Heartbeats remain v2. Hosts require writable cgroup v2,clone3(CLONE_INTO_CGROUP), and zero effective pool swap; the shared memory ceiling is not per-VM protection or a guarantee of survival across container replacement (#2626 fast-sandbox#162). - Restore sizing: ResourceAware pools use template CPU/memory shapes; new snapshots replay source limits, which restore-time caller limits must match. Legacy pools and snapshots without recorded limits retain their prior behavior (#2623 #2628 #2633).
- [EXPERIMENTAL] RootfsOnly: Full remains the default; explicit RootfsOnly mode is available through Fast Sandbox FastPath/CRDs for reusable OCI snapshots, not pause/resume or OpenSandbox REST/SDK mode selection. New capture requires qualified patched Firecracker 1.17.0 templates, a live guest helper, qualified kernel/OverlayBD backend, exclusive ext4 ownership, and an absolute
FAST_SANDBOX_ROOTFS_QUALIFICATIONprofile with matching digests/storage attestation; custom binary digests do not bypass the version gate. Upgrade runtime, Fastlet/Proxy, builder, and tools together, rebuild qualified templates, and preserve journals/fences. Restore cold-boots and reruns the entrypoint; no application-memory preservation or validated cross-CPU/architecture portability is promised (#2706 fast-sandbox#173 #2812 fast-sandbox#177 fast-sandbox#189). - OverlayBD template builds: guest-control injection and freeze/thaw validation are now mandatory for the OCI builder;
FSB_GUEST_CONTROL_ENABLEDis no longer an opt-out. Missing/incompatible helpers or failed probes stop the build. Native templates are unchanged; existing OCI templates need rebuilding rather than metadata edits to gain capture capability (#2812 fast-sandbox#183). - Fast Sandbox logs: covered Kubernetes components now write rotating files under
/var/log/fast-sandboxby default (100 MiB per file, 10 backups, 7-day backup retention, gzip); application logs no longer appear inkubectl logsunlessalsoStderr: trueis configured. Replace legacy klog output flags with the shared logging YAML, wire ConfigMap/log-volume mounts for chart-managed static workloads, and configure each tenant namespace separately. Configuration is startup-only: use controlled Pool draining/replacement for Fastlets, not deletion of live Pods, and arrange collection before ephemeral logs are lost. Explicit missing/invalid configuration or unwritable output prevents startup; rotation limits are not a hard disk quota and do not cover guest/VM logs (#2812 fast-sandbox#197). - OCI checkpoint cache: reserve space for the additional blob cache (defaults: 16 GiB, 4096 files, 1 GiB free-space reserve), separately from OverlayBD's block cache. Keep staging/cache/device state on one filesystem for hard-link reuse; cross-filesystem placement or contention falls back to the registry. Set
FAST_SANDBOX_OCI_BLOB_CACHE_SIZE_BYTES=0to disable blob-cache insertion/lookups; active-device pins remain protected, including when budgets shrink (#2812 fast-sandbox#178). - ublkd recovery: automatic shared-snapfiles rebuilding applies only when no other Sandbox lease needs the attachment; it is not transparent recovery of running VMs. Remove affected Sandboxes through their normal lifecycle before retrying when other leases remain, rather than manually wiping shared caches (#2812 fast-sandbox#193).
- Template rebuilds: opt-in
runtime.execd_run_as_initneeds rebuilt templates; execd remains a subreaper beneath guest PID 1. Free-page reporting also needs rebuilt object-store templates and compatible VMM/kernel support, cannot toggle restored device state, and does not enable OCI reporting or justify higher overcommit; rollback uses an older template (#2494 #2497 #2546 fast-sandbox#114). - OCI chart defaults: idle ublk devices are now reserved; set
runtime.oci.poolLow=0for on-demand allocation and matchpoolSizeGBto rounded-up rootfs capacity. P2P remains enabled by default; customruntime.configneeds separate adjustment for direct-origin delivery (#2594 fast-sandbox#163 #2566). - Snapshot integrity: missing commit digests now fail pause while retaining Pods; old snapshots are not repaired. OCI template references must carry a full SHA-256 digest in the expected repository; rebuild invalid references (#2482 #2491).
- CLI scripts: non-positive request timeouts and empty rule targets are usage errors;
osb config initoverwrite refusal now exits 1 without changing the file (#2742 #2692 #2743). - VM console collection: opt in to
vm-console, alignhostPaths.vmConsolewith the runtime state root, cover every runtime node, and manage file-sink retention (#2234 #2677). - Artifact verification: umbrella workflows do not provide blanket signing/provenance coverage; BOM digest matching is not proof of origin, and signature requirements must not be bypassed (#2467).
- Images:
opensandbox/<component>:release-1.2.1(all three registries; fsb images for fast-sandbox) - Packages: server / CLI / SDKs all at
1.2.1 - Charts: render from this tag (
helm template ./manifests/charts/opensandbox) - Kubernetes: supported range v1.21 – v1.34
- Skew: server ↔ CLI/SDK same line supported; ±1 minor warns
Contributors
Thanks to these contributors.
- @acodercat
- @AdityaxDeore
- @arun-elr
- @bingdongni
- @BootstrapperSBL
- @chichi-1177
- @comqx
- @cwj2001
- @ddlw
- @delete-cloud
- @Dev-next-gen
- @fengcone
- @Ftgn-dpA
- @Galaxy-0
- @hittyt
- @hpliStartAgain
- @ioworker0
- @Jackmeson1
- @JasonBuildAI
- @jianpingpei
- @jwx0925
- @kevin9327
- @kittimzhe
- @Laihu08
- @liuyy2
- @MannXo
- @mayuriphad
- @mengdehong
- @mengqing88
- @mhsFlairs
- @pakkah
- @Pangjiping
- @rudycelekli
- @ryrenz
- @sangkyoonnam
- @ssfdgsg
- @wdsun1008
- @xiong-wei1
- @yangjj-iso
- @Yeaury
- @yjjnls
- @Yzzz88
Artifacts
- BOM: docs/releases/1.2.1.yaml
- Images:
opensandbox/<component>:release-1.2.1(Docker Hub / GHCR / ACR) - Packages: PyPI ×5, npm ×2, Maven Central ×5, NuGet ×2 — all at
1.2.1 - Go module:
github.com/alibaba/OpenSandbox/sdks/sandbox/go@v1.2.1
Installation
# Platform (Kubernetes) — render the chart at this tag and apply
git clone https://github.com/opensandbox-group/OpenSandbox
cd OpenSandbox
git checkout release-1.2.1
helm dependency build manifests/charts/opensandbox # package file:// sub-charts (not committed)
helm template ./manifests/charts/opensandbox | kubectl apply -f -
# or point your GitOps platform (Argo / Flux) at the repo path + tag
# SDKs
pip install opensandbox==1.2.1 # Python
npm install @alibaba-group/opensandbox@1.2.1 # JavaScript
# Kotlin/JVM: implementation("com.alibaba.opensandbox:sandbox:1.2.1")
dotnet add package Alibaba.OpenSandbox --version 1.2.1
go get github.com/alibaba/OpenSandbox/sdks/sandbox/go@v1.2.1
# Run the server locally
uvx opensandbox-server==1.2.1