wasmCloud

Project homepage. wasmCloud allows for simple, secure, distributed application development using WebAssembly actors and capability providers.

Stars
1.09K
Forks
91
Open issues
92
Closed issues
232
Last release
6 months ago
Last commit
5 months ago
Watchers
1.09K
Total releases
52
Total commits
3.35K
Open PRs
12
Closed PRs
725
Repo URL
Project Website
https://wasmcloud.com
Platform
License
apache-2.0
Category
Technology
Rust Nix
Offers premium version?
NO
Proprietary?
NO
About


💻 Distributed computing, simplified

The wasmCloud runtime is a vessel for running applications in the cloud, at the edge, in the browser, on small devices, and anywhere else you can imagine.

Move from concept to production without changing your design, architecture, or your programming environment.

wasmCloud lets you focus on shipping features. Build secure, portable, re-usable components. Get rid of the headaches from being smothered by boilerplate, dependency hell, tight coupling, and designs mandated by your infrastructure.

Core Tenets

  • Dead simple distributed applications
  • Run anywhere
  • Secure by default
  • Productivity for both developers and operations

Getting Started Installation

Install the wasmCloud Shell (wash) with one command.

Walkthrough

If you're new to the wasmCloud ecosystem, a great place to start is the getting started walkthrough.

Quickstart

The following commands launch wasmCloud in a local development environment and deploy a simple "hello world" WebAssembly module.

wash up -d
wash new actor -t hello hello
wash app deploy ./hello/wadm.yaml
curl localhost:8080
Examples WebAssembly Modules (Stable ABI)

wasmCloud has a wide range of examples built on the stable ABI. This includes actors, providers, interfaces, and full applications we've created to demonstrate how to design, compose, and build applications in wasmCloud.

Experimental WASI Preview 2 WebAssembly Components

wasmCloud is actively staying up-to-date with WASI Preview 2 and the Component Model. For actor components which consume interfaces defined in WIT, see examples in the examples directory of this repository.

💥 Awesome wasmCloud

For even more examples, check out awesome projects using wasmCloud from our community members!

🗺️ Roadmap and Vision

We have plenty of ideas and things going on in the wasmCloud project. Please check out the Roadmap doc for more information, and the wasmCloud Roadmap project to see the status of new features.

Releases

The latest release and changelog can be found on the releases page.

🧑‍💻 Contributing

Want to get involved? For more information on how to contribute and our contributor guidelines, check out the contributing readme.

🌇 Community Resources Community Meetings

We host weekly community meetings at 1pm EST on Wednesdays. These community meetings are livestreamed to our Twitter account and to YouTube. You can find the agenda and notes for each meeting in the community secton of our webste. If you're interested in joining in on the call to demo or take part in the discussion, we have a Zoom link on our community calendar.

Slack

We host our own community slack for all community members to join and talk about WebAssembly, wasmCloud, or just general cloud native technology. For those of you who are already on the CNCF Slack, we also have our own channel at #wasmcloud.

📚 Reference Documentation

wasmCloud uses some terminology you might not be familiar with. Check out the concepts section of our docs for a deeper dive.

RPC Framework

wasmCloud uses an RPC API to enable seamless communication among the host runtime, actors, and providers.

Declarative Deployments

The wasmCloud Application Deployment Manager wadm uses the Open Application Model to define and deploy application specifications.

Host Runtimes 🦀 Rust Runtime

wasmCloud's standard runtime is built in Rust for its zero-cost abstractions, safety, security, and WebAssembly support.

🕸 JavaScript Runtime (Experimental)

For running a wasmCloud host in a browser or embedding in a JavaScript V8 host, use the JavaScript Runtime

☁️ Elixir/OTP Runtime (Deprecated)

Note: The OTP Runtime is now deprecated.

The Elixir/OTP runtime leverages Elixir/OTP for its battle-tested, massively-scalable foundation. It also leverages a Rust library.

SDKs and libraries Rust Provider SDK

wasmCloud provides an SDK for building capability providers in Rust.

Go Provider SDK (Experimental)

wasmCloud also has an experimental SDK for building capability providers in Go.

Provider Bindgen from WIT Interfaces (Experimental)

wasmcloud-provider-wit-bindgen is a Rust macro used to generate code for capability providers.

Provider Archive

provider-archive is a crate used to create Provider Archive (PAR) files. PARs are used to store, retrieve, and sign capability providers. Today, capability providers are distributed as binary files and run as system processes. In the future, wasmCloud aims to build capability providers as WebAssembly Components, which will remove the need for Provider Archives.

wasmcloud_actor (Experimental)

wasmcloud_actor is a wasmCloud actor library written in Rust which facilitates building of wasmCloud actors.

The API of the crate matches closely what wit-bindgen would generate, meaning that one can switch from using plain wit-bindgen-generated bindings to wasmcloud_actor (and back) with minimal or no code changes.

wascap

wascap is a low-level library used to insert and retrieve claims on actors and providers. Claims are part of wasmCloud's zero-trust security model.

We are a Cloud Native Computing Foundation sandbox project.

Alternative Projects

Subscribe to Open Source Businees Newsletter

Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.

We'll never share your email with anyone else.