| chore(release): keep release-notes skill in sync with 1.2.0 authoring decisions | 10 days ago |
| test(fast-sandbox): run SDK e2e suites on the overlaybd template only sdk-e2e previously ran the Python SDK suite twice (native template first, then overlaybd when OCI_STACK=1) and idle-e2e only ever targeted the native template. Both suites now target the overlaybd template directly when OCI_STACK=1 (the default): the on-demand path is the production configuration under test, and the duplicate native pass only added CI time. OCI_STACK=0 keeps the native template as the documented native-only escape hatch; a missing overlaybd template id is a hard error pointing at verify-overlaybd instead of a silent fallback. | 11 days ago |
| release(opensandbox): bump platform version to 1.2.0 | 10 days ago |
| Merge pull request #2424 from Pangjiping/feat/isolated-session-tmp-files feat(execd): serve the session-private /tmp through the files API | 11 days ago |
| feat(console): docs site guide, AGENTS routing, and deployment docs (PR 5/5) Add VitePress developer-console guide, AGENTS.md console routing, full console/docs deployment matrix and deferred history note. Aligns with MVP scope. | 12 days ago |
| merge: sync of-dev/v0.2.1 flux customizations into release-1.2.0 Bring the openFuyao flux runtime, snapshot, async lifecycle, and higher-concurrency middleware changes from of-dev/v0.2.1 onto the upstream release-1.2.0 baseline. Conflicts resolved by keeping 1.2.0 features (multi-tenancy, fsb/composite runtime, diagnostics) and layering the flux-specific behavior on top. | 3 days ago |
| merge: sync of-dev/v0.2.1 flux customizations into release-1.2.0 Bring the openFuyao flux runtime, snapshot, async lifecycle, and higher-concurrency middleware changes from of-dev/v0.2.1 onto the upstream release-1.2.0 baseline. Conflicts resolved by keeping 1.2.0 features (multi-tenancy, fsb/composite runtime, diagnostics) and layering the flux-specific behavior on top. | 3 days ago |
| Update gVisor notes and references. Updates several parts of the documentation that were out of date: - Fixed gVisor installation instructions. - ptrace platform is deprecated (and very slow, it shouldn't be used) - gVisor supports GPUs - gVisor support systemd - gVisor supports nat table (though not the nft version of it, so didn't update everywhere on that yet) - Replace "Google gVisor" with "gVisor" since the project will be donated away from Google in the coming months | 11 days ago |
| merge: sync of-dev/v0.2.1 flux customizations into release-1.2.0 Bring the openFuyao flux runtime, snapshot, async lifecycle, and higher-concurrency middleware changes from of-dev/v0.2.1 onto the upstream release-1.2.0 baseline. Conflicts resolved by keeping 1.2.0 features (multi-tenancy, fsb/composite runtime, diagnostics) and layering the flux-specific behavior on top. | 3 days ago |
| merge: sync of-dev/v0.2.1 flux customizations into release-1.2.0 Bring the openFuyao flux runtime, snapshot, async lifecycle, and higher-concurrency middleware changes from of-dev/v0.2.1 onto the upstream release-1.2.0 baseline. Conflicts resolved by keeping 1.2.0 features (multi-tenancy, fsb/composite runtime, diagnostics) and layering the flux-specific behavior on top. | 3 days ago |
| Merge pull request #2393 from opensandbox-group/test/fsb-env-mitm-ca-chain test(env): exercise the full MITM CA chain in the integration environment (OSEP-0022) | 11 days ago |
| merge: sync of-dev/v0.2.1 flux customizations into release-1.2.0 Bring the openFuyao flux runtime, snapshot, async lifecycle, and higher-concurrency middleware changes from of-dev/v0.2.1 onto the upstream release-1.2.0 baseline. Conflicts resolved by keeping 1.2.0 features (multi-tenancy, fsb/composite runtime, diagnostics) and layering the flux-specific behavior on top. | 3 days ago |
| fix(server/flux): adapt create flow to 1.2.0 async resolver and egress settings - await resolve_sandbox_image_from_request (now async in 1.2.0) - source egress sidecar fields from EgressWorkloadSettings after the 1.2.0 create-context refactor - implement the 1.2.0 diagnostics abstract methods for the flux backend | 3 days ago |
| feat: add osb skills command and move skills to project root Move skill files from .claude/skills/ to skills/ at project root so they serve as distributable assets for all AI coding tools, not just Claude Code. Add osb skills install/list/uninstall CLI commands supporting 6 targets: Claude Code, Cursor, Codex, GitHub Copilot, Windsurf, and Cline. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | 7 months ago |
| merge: sync of-dev/v0.2.1 flux customizations into release-1.2.0 Bring the openFuyao flux runtime, snapshot, async lifecycle, and higher-concurrency middleware changes from of-dev/v0.2.1 onto the upstream release-1.2.0 baseline. Conflicts resolved by keeping 1.2.0 features (multi-tenancy, fsb/composite runtime, diagnostics) and layering the flux-specific behavior on top. | 3 days ago |
| docs: trim verbose comments across the egress MITM fix and e2e tests | 11 days ago |
| feat(helm): add fast-sandbox chart with pinned-source build (#1869) * feat(helm): add fast-sandbox chart with pinned-source build Add the fast-sandbox Firecracker runtime to the OpenSandbox Helm stack: - manifests/third-party/fast-sandbox.commit: Git-LFS-pointer-style pin (repo + commit) naming the exact upstream fast-sandbox source this repository builds against - manifests/release/build-fast-sandbox.sh: materializes a checkout of the pinned commit and builds the seven Firecracker-scope images (controller, fastlet, fastlet-proxy, sandbox-proxy, janitor, firecracker-runtime-agent, sandboxtemplate-builder); boxlite and sandbox-action-fixture are intentionally out of scope. --sync-crds re-vendors the CRDs into charts/base - charts/base: fast-sandbox CRDs (sandbox.fast.io) plus the component RBAC/namespaces, gated by fastSandbox.* values - charts/fast-sandbox (new): all-in-one control plane (reconcilers + FastPath gRPC), sandbox proxy, janitor, Firecracker node asset installer, and the firecracker runtime-agent with DART peer discovery - charts/opensandbox: optional fast-sandbox dependency (condition fast-sandbox.enabled, default false), lock + packaged sub-chart refreshed - manifests/Makefile: lint the new chart; helm-gen-fast-sandbox-crds sync target - docs: manifests README/HELM-DEPLOYMENT guide sections * feat(helm): add multi-registry push to build-fast-sandbox.sh --push follows the components/*/build.sh convention: bare --push retags and pushes the locally built images to docker.io/opensandbox and sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox (plus GHCR_REPO/<component> when set); --push r1[,r2...] targets exactly the listed registries. A v* TAG additionally pushes :latest. Works with --no-build to push previously built images. * refactor(helm): drop sandbox-proxy from the fast-sandbox chart and build OpenSandbox deployments reach fastlets through the ingress gateway's direct route resolution, so the central sandbox-proxy is unnecessary: - remove the proxy Deployment/Service/PDB from charts/fast-sandbox and the proxy ServiceAccount/ClusterRole/Binding from charts/base - remove sandbox-proxy from the build-fast-sandbox.sh image list (six Firecracker-scope images remain) - document the intentional omission in the chart README, values, NOTES, manifests README and the Helm deployment guide * refactor(env): drive fast-sandbox-env from the OpenSandbox Helm charts Replace the env-owned hand-written manifests with the OpenSandbox Helm charts so the integration environment and the published charts cannot drift: - fast-sandbox source now comes from the commit pinned in manifests/third-party/fast-sandbox.commit (FSB_GIT_URL/FSB_REF remain as fork overrides); image builds are delegated to manifests/release/build-fast-sandbox.sh against the shared checkout - charts/base + charts/fast-sandbox replace the checkout's config/crd + config/all-in-one applies and the node/firecracker-installer, node/dart-service and node/runtime-agent manifests; the artifact-store endpoint, firecracker version and arch-resolved kernel URL are passed as chart values - charts/server + charts/ingress-gateway replace the opensandbox server and gateway manifests; the server config.toml is rendered per workdir and passed via --set-file, the gateway gets provider/keys/NodePort via values - drop sandbox-proxy everywhere (image, Deployment/Service/PDB, RBAC): OpenSandbox reaches fastlets through the ingress gateway's direct route resolution - charts/ingress-gateway gains gateway.fastpathEndpoint and gateway.service.nodePort (required for the fast-sandbox provider) The only env-owned manifests left are the kind cluster config and the SandboxPool resource. * fix(env): teach ensure_tool to install helm The helm preflight check added with the charts-based refactor had no install recipe; add one (get.helm.sh tarball, HELM_VERSION overridable, default v3.16.4). * fix(helm): quote the agent probe command; render charts instead of helm install - the runtime-agent readiness probe command contains 'Content-Type: ' which YAML parsed as a mapping; build it as a quoted variable (caught by kubectl apply --dry-run=client against the rendered chart) - fast-sandbox-env now renders each chart with 'helm template' and applies with plain kubectl apply: helm stays a renderer, the cluster keeps no helm release state, re-runs keep the idempotent apply semantics; quote the --set array keys to avoid globbing - docs wording updated accordingly * fix(env): pass the server config as top-level configToml The server chart reads .Values.configToml (top-level), not server.configToml; the wrong key left the chart's default empty config in place and the server crashed on the empty-api-key startup guard ('server.api_key is empty in non-interactive mode'). * fix(env): let charts/server own the [ingress] config block The server chart appends an [ingress] section rendered from server.gateway.* values to every configToml; the env's inline copy made TOML declare ingress twice. Move gateway-mode ingress entirely to chart values (enabled/host/routeMode/secureAccess keys) and drop it from the rendered config. * fix(release): make helm package smoke CRD-aware The base chart now ships the fast-sandbox CRDs whose openAPIV3Schema declares properties named 'image' (multi-line, no inline value); the smoke's line-based container-image extraction picked those up as empty image entries and the tested-images count check failed. Skip CustomResourceDefinition documents during extraction (column-0 '---' and 'kind:' anchors), and assert the base CRD set by name instead of a fixed count of three. * fix(helm): address codex review findings - fast-sandbox-env: resolve FSB_REF (fork branch/tag override) to an exact commit via ^{commit} before comparing/checking out; the SHA-vs-ref comparison aborted valid branch overrides - build-fast-sandbox.sh: drop the top-level docker requirement so --no-build --sync-crds works on hosts without docker (docker stays required in the build and push paths) - docs: separate the two key systems — the fast-sandbox controller's Ed25519 route keys (this chart's fast-sandbox-route-keys Secret) vs the OpenSandbox f1.* route-scope HMAC-SHA256 ring (server [ingress.secure_access] + ingress gateway --secure-access-keys); the controller public key is not the gateway key material * refactor(env): drop the FSB_GIT_URL/FSB_REF fork overrides The pinned commit in manifests/third-party/fast-sandbox.commit is the single source of truth; the env clones exactly it, with no ref override and no pin-path indirection. Relocating the clone via FSB_DIR stays. * feat(helm): track fast-sandbox node-readiness refactor (pin 4211a8ce) Bump the pin to fast-sandbox master 4211a8ce (PR fast-sandbox#65) and rework the chart + env to match: - the firecracker-runtime DaemonSet (renamed from firecracker-runtime-agent) now carries a janitor sidecar, its own ServiceAccount/ClusterRole (nodes/status patch), the agent config ConfigMap and the dart Service; all agent tunables live in the mounted agent.yaml (chart default mirrors upstream config/dev/agent-config.yaml, namespace-aware dart discover URL; runtime.config overrides verbatim) - the node readiness loop (kata-deploy pattern) absorbs the installer DaemonSet: host checks, Firecracker asset install, self-applied sandbox.fast.io/kvm + fast-sandbox.io/firecracker-node labels and the FirecrackerReady condition; the chart drops firecrackerInstaller and the runtime defaults to no nodeSelector (it must run everywhere to self-label) - build-fast-sandbox.sh builds firecracker-runtime (renamed make target/image) - fast-sandbox-env: no manual node labeling — the runtime stage waits for agent-applied labels + FirecrackerReady per node; the arch-aware kernel URL / FC_VERSION knobs moved into the agent config (pinned upstream, x86_64-only) * refactor(helm): drop the standalone janitor DaemonSet The chart is Firecracker-only: the janitor sidecar inside the firecracker-runtime pod covers the fastlet cleanup scope (network state, boxlite leftovers, leaked VMM processes) with the containerd backend disabled. The standalone fast-sandbox-janitor DaemonSet and its RBAC in charts/base only serve the containerd-based runtimes, which are out of scope; the janitor values now configure the sidecar. * refactor(helm): move the fast-sandbox stack to the OpenSandbox namespaces - control plane + node runtime (controller/fastpath, firecracker-runtime, dart Service, agent credentials/config) live in opensandbox-system — the dedicated fast-sandbox-system namespace is gone - SandboxPool/Template/Sandbox resources and the fastlet/builder Pods they spawn live in opensandbox-dataplane - base chart defaults: fastSandbox.namespaces.system=opensandbox-system, resources=opensandbox-dataplane (it creates both) - fast-sandbox-env: NS/RESOURCE_NS split; the dataplane credentials (sandbox-oss-credentials for builder Pods, registry-minio + fast-sandbox-registry for fastlet pulls) follow the builder/fastlet Pods into opensandbox-dataplane; the server fsb config now points at the dataplane namespace and the pool manifest is applied there * chore(helm): pin fast-sandbox to 1a420a22 (settings ConfigMap refactor) fast-sandbox#66 moves pool-declared fastlet settings (warmImages, actionHandlers, sandboxResources) into an immutable content-addressed ConfigMap created by the controller at reconcile time. No chart or manifest changes: the all-in-one render and the CRD bundle are byte-identical to the previous pin, and the fastlet falls back to the legacy env delivery when the mount is absent. * refactor(env): rename the entrypoint to integration-env.sh The scripts/fast-sandbox-env/fast-sandbox-env.sh path repeated the directory name; the driver script is now integration-env.sh, matching the upstream fast-sandbox naming. * fix(env): probe fastlet/pool objects in the dataplane namespace The namespace split moved fastlet Pods, SandboxPools/Templates and the builder Pods into opensandbox-dataplane, but the pool-stage probe functions (pool_pods, first_pool_pod, fastlet_pods_ready, egress_containers_ready, egress_status_ready, warm_images_ready) and the fastlet/builder failure dumps still queried opensandbox-system, so the SandboxPool stage never saw the (Ready) fastlet Pods and stalled. Point them at RESOURCE_NS; the remaining $NS uses are control-plane/runtime only. * fix(helm): pin the controller's runtime-environment namespace The controller resolves the firecracker runtime plans from the fast-sandbox-runtime-environments ConfigMap in --runtime-environment-namespace, whose default is the upstream-hardcoded fast-sandbox-system. After the namespace restructure it kept watching the old namespace, silently fell back to the built-in catalog (/usr/local/bin/firecracker host paths the node readiness loop never installs) and fastlets failed with FailedMount. Pin the flag to the chart's system namespace. * fix(helm): stop creating opensandbox-system in the base chart The helm release smoke pre-creates opensandbox-system as the install target; the base chart's Namespace template made the release fail to adopt the pre-existing namespace (missing Helm ownership metadata). opensandbox-system is owned by the install flow, so the base chart now creates only the new opensandbox-dataplane namespace and treats the system namespace as a referenced value. | 1 month ago |
| feat(console): docs site guide, AGENTS routing, and deployment docs (PR 5/5) Add VitePress developer-console guide, AGENTS.md console routing, full console/docs deployment matrix and deferred history note. Aligns with MVP scope. | 12 days ago |
| docs: comprehensive docs site refactoring (#1090) * docs: comprehensive docs site refactoring - Replace 856-line manifest auto-generation with direct VitePress docs - Restructure from flat 4-section layout to 10-section information architecture (Getting Started, Architecture, Guides, SDKs, Components, Kubernetes, API, CLI, Examples, Community) - Establish single source of truth: docs/ owns user-facing content, READMEs are slim pointers - Remove incomplete Chinese i18n (30-40% coverage), keep English only - Add VitePress features: custom containers, code groups, edit links, footer, dark mode - Simplify build: just vitepress build, no docs:sync or docs:spec preprocessing - Add documentation rules to AGENTS.md and CLAUDE.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: simplify CLAUDE.md to point at AGENTS.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: resolve 38 broken links, stale paths, and content issues across docs - Fix 16 broken inbound links to moved docs pages (README, CONTRIBUTING, SECURITY, ROADMAP, GOVERNANCE, server/configuration, kubernetes/) - Move sandbox.kill() inside async-with block in quick start and README - Update execd paths from /opt/opensandbox/bin/ to /opt/opensandbox/ - Fix wrong batchsandbox-template GitHub raw URL - Remove references to deleted RELEASE_NOTE_TEMPLATE and removed scripts - Add missing cd context to server, egress, and MCP command snippets - Add missing OSEP-0012 (multi-tenancy) and OSEP-0013 to index - Fix timeout described as mandatory (it is optional) - Replace duplicated contributing/code-of-conduct with GitHub pointers - Fix broken Chinese doc references in SDK README_zh files - Remove dead Chinese docs link from README Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: align README links with versioned docs * docs: address remaining review comments * docs: clarify README ownership for components * docs: fix remaining navigation and example comments * docs: refine documentation ownership rules * docs: remove obsolete spec doc generator --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> | 4 months ago |
| initial commit Co-authored-by: Wenxiang Jin <wenxiang.jin@alibaba-inc.com> Co-authored-by: Peipei Shi <anchen.spp@alibaba-inc.com> Co-authored-by: Yutian Tao <yutian.taoyt@alibaba-inc.com> Co-authored-by: Nan Ni <ninan.nn@alibaba-inc.com> | 10 months ago |
| docs: add PR size policy limiting reviewable change size to 2000 lines (#2412) | 12 days ago |
| docs: reflow hard-wrapped markdown paragraphs into single lines Reflow prose across all tracked markdown files so that paragraphs, list-item text, and blockquote paragraphs are written on a single line instead of being hard-wrapped at a fixed column width. Rendering is unchanged by design. Preserved as-is: fenced/indented code blocks, tables, YAML frontmatter, HTML blocks, VitePress custom containers (:::), GitHub alert designators ([!NOTE] and friends), intentional hard breaks, list/quote structure, blank lines, and line-ending styles. Generated helm-docs chart READMEs under manifests/charts/ are excluded (CI verifies them for drift). Also add the markdown prose style rules to the root AGENTS.md. Verification: whitespace-stripped content streams identical to before; fence/heading/table/list-marker/blank counts unchanged; code blocks, tables, frontmatter, container opener/closer lines, and alert designator lines byte-identical; second pass idempotent; docs site builds with zero errors (pnpm docs:build). | 19 days ago |
| initial commit Co-authored-by: Wenxiang Jin <wenxiang.jin@alibaba-inc.com> Co-authored-by: Peipei Shi <anchen.spp@alibaba-inc.com> Co-authored-by: Yutian Tao <yutian.taoyt@alibaba-inc.com> Co-authored-by: Nan Ni <ninan.nn@alibaba-inc.com> | 10 months ago |
| docs: highlight AAIF project affiliation (#2395) * docs: highlight AAIF project affiliation * docs: use consistent AAIF project affiliation | 12 days ago |
| docs: reflow hard-wrapped markdown paragraphs into single lines Reflow prose across all tracked markdown files so that paragraphs, list-item text, and blockquote paragraphs are written on a single line instead of being hard-wrapped at a fixed column width. Rendering is unchanged by design. Preserved as-is: fenced/indented code blocks, tables, YAML frontmatter, HTML blocks, VitePress custom containers (:::), GitHub alert designators ([!NOTE] and friends), intentional hard breaks, list/quote structure, blank lines, and line-ending styles. Generated helm-docs chart READMEs under manifests/charts/ are excluded (CI verifies them for drift). Also add the markdown prose style rules to the root AGENTS.md. Verification: whitespace-stripped content streams identical to before; fence/heading/table/list-marker/blank counts unchanged; code blocks, tables, frontmatter, container opener/closer lines, and alert designator lines byte-identical; second pass idempotent; docs site builds with zero errors (pnpm docs:build). | 19 days ago |
| docs: reflow hard-wrapped markdown paragraphs into single lines Reflow prose across all tracked markdown files so that paragraphs, list-item text, and blockquote paragraphs are written on a single line instead of being hard-wrapped at a fixed column width. Rendering is unchanged by design. Preserved as-is: fenced/indented code blocks, tables, YAML frontmatter, HTML blocks, VitePress custom containers (:::), GitHub alert designators ([!NOTE] and friends), intentional hard breaks, list/quote structure, blank lines, and line-ending styles. Generated helm-docs chart READMEs under manifests/charts/ are excluded (CI verifies them for drift). Also add the markdown prose style rules to the root AGENTS.md. Verification: whitespace-stripped content streams identical to before; fence/heading/table/list-marker/blank counts unchanged; code blocks, tables, frontmatter, container opener/closer lines, and alert designator lines byte-identical; second pass idempotent; docs site builds with zero errors (pnpm docs:build). | 19 days ago |