July 16, 2025
Agenda
- DEMO: Introducing wash: The Wasm Shell
- DISCUSSION: Q3 Roadmap Recap
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
- If you missed last week's roadmapping session, check out our blog to catch up!
Weekly highlights
Issue of the Week
Documentation of the Week
- Excalidraw Assets
- summary