Skip to main content
← Back

July 16, 2025

Agenda

Meeting Notes

DEMO: Introducing wash: The Wasm Shell

Brooks introduced a project he’s been working on: a leaner, plugin-driven version of wash (now standing for “Wasm Shell”), dedicated to giving users the best possible Wasm component development experience, regardless of whether they’re using wasmCloud.

This follows from Taylor’s RFC to plugin-ify wash.

Brooks: This is the first piece of wasmCloud I ever worked on, five years ago, and I’d like to think I’ve learned more about Rust in that time. This feels like the right time to rethink wash from the ground up.

[diagram for wash command lifecycle]

There are eight built-in commands…

Core commands:

config - Configuration doctor - Sanity check for dependencies update - Self-update for wash plugin - Plugin management

Component development commands:

new - Create new component build - Compile Wasm binary dev - Start dev loop oci - Push component to OCI registry

Everything else is a plugin! Generating a wadm manifest for a component? That’s a great plugin. This really simplifies the surface of the CLI for wash. Its core mission is to be a utility for developing Wasm components. Other than using the wasmcloud-runtime crate, there’s nothing really wasmCloud-specific here.

New version of wash build works by introspecting the project, so you don’t need a wasmcloud.toml file any more

In wash dev, the http server isn’t a provider — it’s a spun-up hyper (Rust crate) http server

The dev session is totally ephemeral—no providers downloading in the background. You can think of it as being very similar to wasmtime serve right now.

For an interface that core wash doesn’t know about, you can use a plugin component — Brooks demonstrates using a component that implements blobstore as a plugin and exports the wash-plugin interface.

Since plugins are components, you can develop them in the language of your choice.

Question: How does this handle multiple plugins that implement the same interface?

Brooks: It doesn't at the moment...it warns at the start of dev loop right now, should probably warn upon plugin installation.

Question: This strips out the wasmcloud.toml -- is there anything lost there?

Brooks: I'd want to carry forward a lot of the configuration currently available through the optional configuration file.

Comment from stream: It sounds like you have ejected the wash cli from docker nats and are running it as what is in effect a generic wasm component dev compiler and server on the localhost network. the javascript frameworks use this approach and i would argue are the cutting edge in development env

Brooks: Thanks, I definitely want to take inspiration from tools like 'npm' as well as CLIs in the cloud space like 'kubectl'. I've been referring to https://clig.dev/ too

Brooks: I want to thank everyone who has worked on wash so far—this is ultimately derives from all of that work

DISCUSSION: Q3 Roadmap Recap

Weekly highlights

Issue of the Week

Documentation of the Week

Recording