Skip to content

Support WASIp2/p3 component-model tools #92

Description

@danbugs

PR #91 introduced Wasm host tools using WASIp1 command modules (one --tool NAME=WASM flag per tool, JSON on stdin/stdout). WASIp1 was the right starting point for simplicity and broad toolchain support, but component-model (WASIp2/p3) reactor-style modules would unlock:

  • Multi-tool modules — a single .wasm component could export multiple tools, enabling --tools component.wasm instead of one flag per tool
  • Auto-registration from the export list — no manual name mapping needed
  • Access to the latest Wasm tooling — componentize-py, jco, wasm-tools, and the broader component ecosystem
  • Composability — combine tool components without recompilation

This would require a separate registration and lifecycle model (reactors are long-lived, not fresh-instance-per-call like the current command ABI).

The wasmtime component-model runtime is already substantially in the dependency tree (the current implementation imports from wasmtime_wasi::p2::pipe), so the incremental cost may be smaller than it appears.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions