Node-RED node parity
This matrix defines the deployment intent for compiled hosted-runtime artifacts.
Use three buckets:
wasi: strict standalone WASI with no wrapper requirementwasmedge: standard server-side deployment target for maximum WASI compatibilitywrapper/delegated: browser targets or features that still need host mediation
The practical reason for wasmedge is simple: standalone WASI still does not give us portable networking parity, while WasmEdge adds socket, DNS, and TLS extensions that make guest-owned network services realistic.
wasi Target
These should run as plain standalone WASI programs with no wrapper layer:
changeswitchrangetemplatejsoncsvyamlxmlhtmlsplitjoinbatchsortrbelink inlink outlink calldebug- deterministic flow routing and payload transforms
fileandfile inwhen limited to WASI preopen/file access
Notes:
injectonly fits this bucket for direct/manual triggering, not scheduling.fileparity here excludes file watching.
wasmedge Target
These should aim to run in guest logic on WasmEdge without an extra wrapper:
- outbound
http request - inbound
http inplushttp response - guest-owned TCP client/server behavior
- guest-owned UDP behavior
- guest-owned TLS/HTTPS behavior
- direct protocol services built on sockets
- WebSocket logic implemented in guest libraries over sockets/TLS
- MQTT logic implemented in guest libraries over sockets/TLS
Notes:
websocketandmqttare guest-library targets, not direct WasmEdge runtime APIs.- prefer guest-owned protocol stacks over host wrappers whenever WasmEdge sockets/TLS are sufficient.
Wrapper Or Delegated Host Required
These still require wrappers, delegated services, or explicit runtime support outside the guest:
watchexec- cron-style
inject delayandtriggerwhen they depend on wall-clock schedulingcompletecatchstatus- browser-local inbound listeners
- browser-local durable filesystem behavior beyond browser storage adapters
- any feature that depends on OS process control or file watching
Planning Rule
If a node can be implemented entirely inside guest code on top of standard WASI or WasmEdge extensions, it should not be modeled as a host capability. Host capabilities should be reserved for features that truly still need wrappers or delegated services.