Prerequisites
- Python 3.10 or newer.
uvfor dependency management.- The Noorle CLI.
- The shared WebAssembly tools, installed once with
noorle plugin prepare.
Layout
The interface
The Python world imports the WASI interfaces it needs explicitly — outbound HTTP and the environment — and exports one function.record, which keeps the
Python side to plain dictionaries.
The implementation
The build generates awit_world package from your WIT. You subclass the
generated class and implement the exported function as a method.
Outbound HTTP uses the generated WASI bindings directly.
requests and other
socket-based clients do not work inside the component — the sandbox exposes
WASI HTTP and no raw sockets.wasi:cli/environment, and only the keys
listed under permissions.environment are visible.
pyproject.toml
noorle.yaml
Build
build.sh, which syncs dependencies, fetches the WIT
dependencies, generates bindings, and then componentizes:
bindings step writes the wit_world package your code imports; the
componentize step takes the module name (app) and emits the component.