Skip to main content

2024-04-24 Community Meeting

Brooks Townsend


  • DEMO: wasmCloud Hackathon Showcase
    • Come join the maintainers live while we demonstrate a couple projects we've been hacking on this week
  • DISCUSSION: wasmCloud Roadmap Discussion Preparation (for next week)

Meeting Notes


  • Earlier this week, we decided to run a bit of a hackathon on some new feature ideas. The results have been really cool so we thought we'd share some of the goings on.
  • We give an extensive hackathon showcase of all the highlights so we recommend watching the full recording below as there's only so much of the excitement (and there was a lot) express in notes.

Taylor shows a new way to work with ollama 3 - which is really nice to use if you haven't tried it already. We've taken the Ollama API, created a provider and invoked it using WIT!

  • Taylor shows how ollama is accecssible via wit to deliver an answer to a simple question (in this case, “what dwarf planets exist outside of the orbit of Pluto?”). This is a custom interface that works out-of-the-box with wasmCloud 1.0, even though there's no builtin AI LLM capability.
  • Wadm example allows us to define which model/version of the AI, backed with an ollama api, adapted with wit.
  • AI running through Wasm, facilitated by a provider that could be located anywhere. A new provider and interface.
  • Link to Taylor's provider. Give it a try!

Brooks shows us how he's developed an extra use of the wasmCloud messaging interface—which we shipped with the host with 1.0. This new use case uses the messaging interface to make discord and slackbots.

  • You use the capability provider itself and link to a component—the only requirement is a token which can be stored as named configuration and decouples the secret from the component and the manifest.
  • As long as a component uses the WASI messaging interface, it will work. Super simple way to write a discord bot - couple hours writing the cap prov but it's now reusable with any discord bot!
  • Brooks shows the provider in detail and so check out the recording below.

Robin shows us Workspaces on Wasm (WOW)

  • A WebAssembly workspace manager.
  • If you install WOW from the repo and clone a file it will recognise the registry and toolset and run in Wasmtime. It also recognizes CLIs!
  • There are a few examples of this in action in the repo - dig in and take a look.
  • Takes command line arguments and pipes them in.
  • Command can only see the config you allow it to see. WOW allows some flexibility in a safer environment; all running in the sandbox.
  • Robin gives us a summary of wa dev and its benefits so check out the recording. The link to the WOW repo is here!

On the back of that Taylor shows us a way to add wash plugins which overlaps well with Robin's demo.

  • Now contributed as a pull request to wash.
  • First plugin - custom sub-commands into wash.
  • Looking at the wit, we allow access to wasi cli world and the HTTP outgoing handler, soon the control interface.
  • Makes it easy to take cowsay (for example) to wash, all you need to do is compose a simple plugin - metadata with a register function, attached to wash.
  • This will allow us to abstract some of the functionality of wash into plugins, and easily provide new features in the future.

Roman demos wRPC transport in Go

  • wRPC is a new protocol that helps us communicate more effectively in distributed use cases. We define functions using wit and it supports some of the newer functionality, such as async using standard WASI interfaces.
  • wRPC was first implemented in Rust over NATS, and now we have a Go implementation. This starts the ground work for capability providers in Go.
  • Worth noting that these implementations will be picked up quickly in wasmCloud for distributed WIT functionality, but it's a standalone project that can be used in any Wasm, nor non-Wasm, project.
  • Roman shows it working in one use case, but we can use it with any other transport; NATS, HTTP for instance.

Brooks: wit2wadm!

  • If you take a look at a component - for example a key-value component - we know exactly what it will do at runtime. Import key-value providers and export HTTP interfaces. We also know that wasmCloud has capability providers for both these things.
  • If we know everything about a component, we can generate a Wadm manifest for it. This is what wit2wadm does.
  • We get a full wadm manifest with all the default fields - wit2wadm auto-generation.
  • wit2wadm is a library, and runnable as a CLI. It can also compile directly to a component with a single export, wasmcloud:tools/convert.component-to-wadm.
  • Because this is a Wasm component, we can also take server-side components and run it in the browser with jco (Bytecode Alliance).
  • We can transpile the Wasm component into Javascript and Wasm files, and use it to serve a dumb web UI.
  • This also has support for custom interfaces, requiring the user to just specify where the provider can be pulled from.
  • There's only so much we can impart in notes and so check out the repo and the website and Brooks' full demo in the recording.

Where we'll be…

June 24 - 25 We'll be at WasmCon in Seattle in force. This was a great event last year and so we urge you to get in touch if you have an interesting use case to share on stage. The talk deadline has passed but the committee is always interested in cool deployment stories.

Listen in…

  • The CNCF and Bytecode Alliance came together on CNCF Cloud Native Live for an interesting discussion on WASI 0.2 the Component Model..and the role of the BA in driving forward Wasm standards and tooling.
  • Cloud Native Wasm Day recordings are now live! Great to see the wasmCloud community on stage!
  • Bailey joined Matt Butcher and industry analyst Dustin Kirkland on theCube (SiliconAngle) during KubeCon + CloudNativeCon to talk all things WebAssembly, take a look.
  • Check out the Arm Developer Podcast where Bailey and Liam discussed the intersection of Wasm and GPU technologies.
  • Cosmonic CTO Bailey Hayes met Chris Matteson (Fermyon) and Oscar Spencer (F5 NGINX) on the panel at the latest Kubernetes meetup in New York. They explored the Wasm what's, why's, standards and considerations when adoption. The recording is live!
  • Listen in to the last WasmEdge community meeting where Bailey Hayes talks all things WASI 0.2 and we hear from the students of the University of Tokyo on some cool new projects.
  • Bailey was a guest on a recent Rancher Live podcast with Divya Mohan. Tune in for a deep dive into WASI 0.2!