Lolly
啟動應用程式

WebAssembly deployment choices

備註: Lolly Work

This guide covers the optional organisation service. Configuration, console and API paths refer to your Work instance. The packaged console keeps its release-matched copy of this guide.

Lolly's current production deployment uses OCI containers. WebAssembly is an optional development track for cluster policies and selected application tools. It does not change the installation requirements for a private Work instance.

For a Rancher platform team, begin with Kubewarden policy evaluation. For a developer building a portable worker, begin with a small WIT component and a runtime compatibility record. A home or YunoHost installation can keep its ordinary application services; neither Kubernetes nor a Wasm controller is required to use Lolly.

Choose the role

RolePreferred approachCurrent Lolly support
Kubernetes admission policyRancher-managed Kubewarden; signed OCI-distributed policiesEvaluation guidance. No controller or enforced policy is installed by Lolly.
Portable application toolWebAssembly Component Model, WIT interfaces and a pinned WASI versionPlanned component adaptation and parity tests. Existing browser Wasm files are not deployable WASI components.
Component hosting on KubernetesA qualified SpinKube installation or containerd/runwasi handler with explicit RuntimeClass and node selectionPlatform reference; no Wasm RuntimeClass setting is implemented in the Work chart.
Component hosting on a small Linux machineA bounded host worker with explicit capabilitiesPlanned; no additional orchestrator is required by this proposal.

Kubewarden evaluates Kubernetes admission requests. It does not run the Work server, PostgreSQL or browser render worker. Keep policy enforcement separate from the application runtime decision.

Standards and runtime compatibility

Checked on 2026-10-07, WASI 0.3 is stable, with async support described in the 0.3 release guide. Pin the exact interface and generated bindings versions. Retain WASI 0.2 compatibility where the selected toolchain requires it; a 0.x stable release is not a completed WASI 1.0 standard. SQL, KV, TLS and telemetry interfaces cannot be assumed to exist on every component host.

Record the runtime embedded in the selected shim. The released runwasi Wasmtime shim 0.6.1 uses Wasmtime 36.0.10, while the current WASI release guidance identifies Wasmtime 46 or newer for final 0.3 support. Upgrading a standalone Wasmtime binary does not upgrade the shim. SpinKube has its own compatibility matrix. Use the actual controller, chart, Spin, shim and embedded runtime versions in the deployment record.

A platform qualification record should include:

SUSE image trust remains useful for host services and dependencies. A generic Wasm component is not automatically an Application Collection artifact or a Rancher-supported runtime. Verify the selected product's actual support matrix.

Evaluate Kubewarden first

Use a separate rehearsal cluster or narrowly selected rehearsal namespaces. Follow the platform team's reviewed Kubewarden installation; Lolly does not install an admission webhook as a side effect of an application release.

Start with audit mode and curated image verification policies. Apply the Application Collection verification guide for selected dependency images, and the secure supply chain guidance for policy and image provenance. Configure Lolly's own publisher identity separately from the Application Collection publisher.

Before enforcement, demonstrate that a qualified release is accepted and an unsigned, altered or wrongly attributed release is rejected. Test controller and registry outages, namespace exclusions and a documented recovery route. Measure admission latency. A broad fail-closed webhook must not block the operator from restoring the policy service itself.

Qualify a component host separately

For an existing cluster, inspect its runtime configuration without changing it:

kubectl --context REVIEWED_CONTEXT version
kubectl --context REVIEWED_CONTEXT get runtimeclasses
kubectl --context REVIEWED_CONTEXT get nodes -o wide

Then choose one pinned route using the official SpinKube installation guide or runwasi quickstart. K3s and RKE2 have their own containerd configuration procedures: K3s and RKE2. Keep the normal OCI handler as the default. Stage a separate runtime handler and explicit node selection before an application canary; do not replace the runtime of existing Work, database or render Pods.

Wasm still consumes host memory, CPU and storage. A Kubernetes worker may still be a billable VM. Benchmark startup, throughput and resource use before claiming better density or removing capacity from an existing deployment.

First Lolly component candidate

The pure Rust Skera font subsetting tool is a useful first candidate for a bounded byte-in/byte-out WIT wrapper. Its current browser build targets wasm32-unknown-unknown; it is not a WASI component. The wrapper needs a reproducible component build, valid and malformed font tests, output parity, resource bounds and cross-runtime tests before publication.

Start without filesystem, network or environment access. Grant each capability only when an interface and its limits are defined. Keep the current worker as the rollback path. Node, native image codecs, PostgreSQL and Chromium retain their qualified container deployments until their own adaptations are tested.

The implementation order is: compatibility record and reproducible component; isolated Kubewarden audit; Skera parity; one bounded worker canary; then supported Helm/runtime references, lifecycle observability and application update docs. See platform deployment for the current supported installation and cloud deployment for data recovery and cutover boundaries.