https://github.com/wasmcloud/wasmcloud
wasmCloud is an open source Cloud Native Computing Foundation (CNCF) project that enables teams to build, manage, and scale polyglot apps across any cloud, K8s, or edge.
https://github.com/wasmcloud/wasmcloud
cloud-native distributed edge kubernetes nats platform wasm-native webassembly
Last synced: 13 days ago
JSON representation
wasmCloud is an open source Cloud Native Computing Foundation (CNCF) project that enables teams to build, manage, and scale polyglot apps across any cloud, K8s, or edge.
- Host: GitHub
- URL: https://github.com/wasmcloud/wasmcloud
- Owner: wasmCloud
- License: apache-2.0
- Created: 2020-10-15T17:41:17.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-10-17T00:14:50.000Z (8 months ago)
- Last Synced: 2025-10-17T01:59:13.935Z (8 months ago)
- Topics: cloud-native, distributed, edge, kubernetes, nats, platform, wasm-native, webassembly
- Language: Rust
- Homepage: https://wasmcloud.com
- Size: 91.2 MB
- Stars: 2,089
- Watchers: 34
- Forks: 207
- Open Issues: 109
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
- Governance: GOVERNANCE.md
- Roadmap: ROADMAP.md
- Maintainers: MAINTAINERS.md
Awesome Lists containing this project
README
# wash - The Wasm Shell
[](LICENSE)
[](https://github.com/wasmcloud/wasmCloud/releases)
**wash** is the comprehensive command-line tool for developing, building, and managing WebAssembly components. It provides an intuitive developer experience for the modern Wasm ecosystem, from project scaffolding to building and pushing components to OCI registries.
## Features
- **Project Creation**: Generate new WebAssembly component projects from templates
- **Multi-Language Build System**: Compile components for multiple languages (Rust, Go, TypeScript)
- **Development Loop**: Built-in hot-reload development server (`wash dev`)
- **OCI Registry Integration**: Push and pull components to/from OCI-compatible registries
- **Component Inspection**: Analyze component WIT interfaces and metadata
- **Configuration Management**: Hierarchical configuration with global and project-level settings
- **Self-Updates**: Keep wash up-to-date with the latest features and fixes
## Installation
### Pre-built Binaries
Download the latest release for your platform from [GitHub Releases](https://github.com/wasmcloud/wasmCloud/releases).
### Install
Quick install (latest release)
**Linux/macOS:**
```bash
curl -fsSL https://raw.githubusercontent.com/wasmcloud/wasmCloud/refs/heads/main/install.sh | bash
```
**Windows (PowerShell):**
```powershell
iwr -useb https://raw.githubusercontent.com/wasmcloud/wasmCloud/refs/heads/main/install.ps1 | iex
```
Make sure to move `wash` to somewhere in your `PATH`.
### From Source
```bash
git clone https://github.com/wasmcloud/wasmCloud.git
cd wasmCloud
cargo install --path crates/wash
```
## Quickstart
Note: This quickstart requires the [Rust toolchain](https://www.rust-lang.org/tools/install) and the `wasm32-wasip2` target for Rust: `rustup target add wasm32-wasip2`
1. **Create a new component:**
```bash
wash new https://github.com/wasmCloud/wasmCloud.git --subfolder templates/http-hello-world
```
2. **Build your component:**
```bash
wash -C ./http-hello-world build
```
3. **Start a development loop**
```bash
wash -C ./http-hello-world dev
```
4. **Keep wash updated:**
```bash
wash update
```
## Commands
| Command | Description |
| ----------------- | --------------------------------------------------------------- |
| `wash build` | Build a Wasm component |
| `wash config` | View and manage wash configuration |
| `wash completion` | Generate shell completion scripts for wash |
| `wash dev` | Start a development server for a Wasm component with hot-reload |
| `wash host` | Act as a host. |
| `wash new` | Create a new project from a git repository |
| `wash oci` | Push or pull Wasm components to/from an OCI registry |
| `wash update` | Update wash to the latest version |
| `wash wit` | Manage WIT dependencies |
| `wash help` | Print this message or the help of the given subcommand(s) |
Run `wash --help` or `wash help ` for detailed usage information.
### Shell Completion
#### Zsh
For zsh completion, please run:
```shell
mkdir -p ~/.zsh/completion
wash completion zsh > ~/.zsh/completion/_wash
```
and put the following in `~/.zshrc`:
```shell
fpath=(~/.zsh/completion $fpath)
```
Note if you're not running a distribution like oh-my-zsh you may first have to enable autocompletion (and put in `~/.zshrc` to make it persistent):
```shell
autoload -Uz compinit && compinit
```
#### Bash
To enable bash completion, run the following, or put it in `~/.bashrc` or `~/.profile`:
```shell
. <(wash completion bash)
```
#### Fish
The below commands can be used for fish auto completion:
```shell
mkdir -p ~/.config/fish/completions
wash completion fish > ~/.config/fish/completions/wash.fish
```
#### Powershell
The below command can be referred for setting it up. Please note that the path might be different depending on your
system settings.
```shell
wash completion powershell > $env:UserProfile\\Documents\\WindowsPowerShell\\Scripts\\wash.ps1
```
## Architecture
wash is built with the following key principles:
- **Component-First**: Native support for the WebAssembly Component Model
- **Language Agnostic**: Support for Rust, Go (TinyGo), TypeScript, and more
- **OCI Compatible**: Components are stored and distributed using OCI registries
- **Portable Components**: Produces WebAssembly components that are runtime-agnostic and compatible with any Component Model runtime
- **Wasmtime-Powered**: Uses Wasmtime for local component execution and development workflows
- **Extensible**: Plugin system allows integration with different platforms and workflows
- **Developer Experience**: Hot-reload development loops and comprehensive tooling
## Wash & Kubernetes
Start kind cluster:
```sh
make kind-setup
```
Install chart with pre-configured values:
```sh
make helm-install
```
Wait for all pods to come online.
Check if hosts registered correctly:
```sh
❯ kubectl get host
NAME HOSTID HOSTGROUP READY AGE
thinkable-zebra-8670 8247719b-0d85-4940-a03d-7076e045d5ac default True 64s
uppity-religion-0822 3c2a7116-05fd-4f2f-9e6b-8291bd018fb7 default True 66s
vivacious-band-6937 eb27df8b-c5b0-48a3-bafe-a7e92eb19746 default True 66s
```
## Documentation
- [WebAssembly Component Model](https://component-model.bytecodealliance.org/) - Learn about the component model
- [WASI Preview 2](https://github.com/WebAssembly/WASI/blob/main/docs/Preview2.md) - WebAssembly System Interface
- [wasmCloud Documentation](https://wasmcloud.com/docs) - Platform integration via plugins
- [Contributing Guide](CONTRIBUTING.md) - How to contribute to this project
## Support
- [GitHub Issues](https://github.com/wasmcloud/wasmCloud/issues) - Bug reports and feature requests
- [GitHub Discussions](https://github.com/wasmcloud/wasmCloud/discussions) - Community support and Q&A
- [WebAssembly Community](https://webassembly.org/community/) - Broader WebAssembly ecosystem
## License
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.