// the find
containerd/runwasi
Facilitates running Wasm / WASI workloads managed by containerd
runwasi is a Rust library that plugs Wasm/WASI runtimes into containerd as shims, letting you schedule WebAssembly workloads through the same CRI interface Kubernetes uses for containers. It ships ready-to-use shims for wasmtime, wasmedge, wasmer, and wamr, plus a `containerd-shim-wasm` crate you can build your own shim on top of. This is the upstream library that SpinKube and Microsoft's AKS Wasm node pools are built on.
The library abstraction is well-layered: `containerd-shimkit` handles the generic shim protocol, `containerd-shim-wasm` adds Wasm-specific OCI image handling, and your runtime-specific crate only needs to implement one `Instance` trait. Windows support is present and tested in CI, which is unusual for this space. The test infrastructure is serious — k3s and kind integration tests in CI, a dedicated stress-test crate talking raw TTRPC, and benchmark suites with memory profiling. OCI image handling is correct: it understands both single-file Wasm OCI images and OCI component model images, not just naively unpacking tarballs.
The runtime support is uneven — wasmtime gets HTTP proxy support and its own README, while wamr and wasmer look like thin wrappers with minimal feature coverage. Component Model support exists in the test modules (there are `.wasm` component binaries checked in) but it's unclear how complete the runtime-side handling is without digging deeper. The library is Linux-first in practice: the Windows path in `sys/windows/` has much less code than the Unix side, and the getting-started guide on Windows is a separate document with a disclaimer. If you're building a shim for a runtime not already in the repo, the trait surface and lifecycle contracts aren't documented — you're reading source.